Hướng dẫn sử dụng chỉ báo Adaptive Moving Average (AMA) trong MetaTrader 5 - VNGoldStreet

Thời gian: 5/19/25, 10:58 AM

VN Gold Street - Chỉ báo AMA do Perry Kaufman phát triển, tự điều chỉnh theo biến động thị trường, giúp lọc nhiễu khi đi ngang và phản ứng nhanh khi có xu hướng. Trong MetaTrader 5, AMA được tích hợp qua hàm iAMA, hỗ trợ hiển thị và tùy chỉnh trong chiến lược giao dịch.


huong-dan-su-dung-chi-bao-adaptive-moving-average-ama-trong-metatrader-5-1747620664-VN-Goldstreet

Hướng dẫn sử dụng chỉ báo Adaptive Moving Average (AMA) trong MetaTrader 5

Chỉ báo Adaptive Moving Average (AMA), được phát triển bởi Perry Kaufman, là một công cụ phân tích kỹ thuật tiên tiến nhằm cải thiện các đường trung bình động truyền thống. Không giống như các đường trung bình động thông thường, AMA tự điều chỉnh độ nhạy dựa trên mức độ biến động của thị trường, giúp giảm thiểu tín hiệu nhiễu trong giai đoạn thị trường đi ngang và phản ứng nhanh hơn trong các xu hướng mạnh. Điều này khiến AMA trở thành một công cụ lý tưởng để xác định xu hướng và hỗ trợ nhà giao dịch đưa ra quyết định chính xác.

Trong MetaTrader 5, chỉ báo AMA được truy cập thông qua hàm iAMA, cho phép tích hợp dễ dàng vào các chiến lược giao dịch tùy chỉnh. Bài viết này sẽ hướng dẫn bạn cách sử dụng hàm iAMA và mã nguồn mẫu để hiển thị chỉ báo AMA trên biểu đồ một cách hiệu quả.


Hàm iAMA trong MetaTrader 5

Hàm iAMA trong MQL5 tạo một phiên bản của chỉ báo AMA và trả về một "handle" (định danh) để truy cập dữ liệu của nó. Dưới đây là chi tiết về hàm:


Cú pháp
int iAMA(
  string symbol,             // Tên công cụ tài chính
  ENUM_TIMEFRAMES period,         // Khung thời gian
  int ama_period,           // Chu kỳ tính toán AMA
  int fast_ma_period,      // Chu kỳ MA nhanh
  int slow_ma_period,      // Chu kỳ MA chậm
  int ama_shift,             // Độ dịch chuyển ngang
  ENUM_APPLIED_PRICE applied_price  // Loại giá áp dụng
);
Tham số

symbol: Tên của công cụ tài chính (ví dụ: "GBPUSD"). Nếu để là NULL, chỉ báo sẽ sử dụng biểu đồ hiện tại.

period: Khung thời gian, ví dụ PERIOD_M30 cho khung 30 phút hoặc PERIOD_CURRENT cho khung hiện tại.

ama_period: Chu kỳ tính toán hệ số hiệu quả của AMA (thường là 15).

fast_ma_period: Chu kỳ MA nhanh để điều chỉnh trong thị trường biến động mạnh (thường là 2).

slow_ma_period: Chu kỳ MA chậm để điều chỉnh trong thị trường ít xu hướng (thường là 30).

ama_shift: Độ dịch chuyển ngang của chỉ báo trên biểu đồ (thường là 0).

applied_price: Loại giá sử dụng (ví dụ: PRICE_CLOSE cho giá đóng cửa hoặc một handle của chỉ báo khác).


Giá trị trả về

 Trả về một handle (số nguyên) của chỉ báo AMA nếu thành công.

 Trả về INVALID_HANDLE nếu thất bại.


Hướng dẫn tích hợp chỉ báo AMA bằng mã nguồn

Dưới đây là hướng dẫn từng bước để sử dụng mã nguồn mẫu (được tối ưu hóa từ ví dụ gốc) nhằm hiển thị chỉ báo AMA dưới dạng đường biểu đồ trong MetaTrader 5.


Mã nguồn mẫu

Mã nguồn này tạo một chỉ báo AMA tùy chỉnh, hiển thị đường AMA với màu sắc dễ nhận diện trên biểu đồ giá.


#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots 1
#property indicator_label1 "AMA"
#property indicator_type1 DRAW_LINE
#property indicator_color1 clrRed
#property indicator_width1 1

enum Creation { Call_iAMA, Call_IndicatorCreate };
input Creation type = Call_iAMA;
input string symbol = "";
input ENUM_TIMEFRAMES period = PERIOD_CURRENT;
input int ama_period = 15;
input int fast_ma_period = 2;
input int slow_ma_period = 30;
input int ama_shift = 0;
input ENUM_APPLIED_PRICE applied_price = PRICE_CLOSE;

double AMABuffer[];
int handle;
string name = symbol;
string short_name;
int bars_calculated = 0;

int OnInit() {
  SetIndexBuffer(0, AMABuffer, INDICATOR_DATA);
  PlotIndexSetInteger(0, PLOT_SHIFT, ama_shift);

  name = (StringLen(symbol) == 0) ? _Symbol : symbol;
  StringTrimRight(name);
  StringTrimLeft(name);

  if(type == Call_iAMA)
    handle = iAMA(name, period, ama_period, fast_ma_period, slow_ma_period, ama_shift, applied_price);
  else {
    MqlParam pars[5];
    pars[0].type = TYPE_INT; pars[0].integer_value = ama_period;
    pars[1].integer_value = fast_ma_period;
    pars[2].integer_value = slow_ma_period;
    pars[3].integer_value = ama_shift;
    pars[4].integer_value = applied_price;
    handle = IndicatorCreate(name, period, IND_AMA, 5, pars);
  }

  if(handle == INVALID_HANDLE) {
    Print("Không thể tạo handle cho chỉ báo AMA, mã lỗi: ", GetLastError());
    return INIT_FAILED;
  }

  short_name = StringFormat("AMA(%s/%s, %d, %d, %d, %d)", name, EnumToString(period), ama_period, fast_ma_period

Giải thích mã nguồn

Khởi tạo (OnInit): Tạo handle cho chỉ báo AMA, thiết lập buffer để lưu trữ dữ liệu, và áp dụng độ dịch chuyển ngang nếu có.

Tính toán (OnCalculate):  Sao chép dữ liệu từ chỉ báo AMA vào buffer và cập nhật đường biểu đồ.

Sao chép dữ liệu (FillArrayFromBuffer): Lấy dữ liệu từ handle và gán vào buffer, tính đến độ dịch chuyển.

Giải phóng (OnDeinit): Giải phóng tài nguyên khi chỉ báo bị xóa khỏi biểu đồ.


Ứng dụng thực tế

Chỉ báo AMA có thể được sử dụng trong nhiều chiến lược giao dịch:

Xác định xu hướng: Khi đường AMA tăng mạnh và giá nằm trên đường AMA, điều này báo hiệu xu hướng tăng. Ngược lại, nếu giá nằm dưới đường AMA đang giảm, đó là dấu hiệu xu hướng giảm.

Tín hiệu giao dịch: Kết hợp AMA với các chỉ báo khác như RSI hoặc MACD để xác nhận điểm vào lệnh. Ví dụ, khi giá cắt qua đường AMA từ dưới lên và RSI vượt qua 50, đó có thể là tín hiệu mua.

Quản lý rủi ro: Sử dụng AMA để đặt dừng lỗ động, ví dụ, cách đường AMA một khoảng bằng 2 lần ATR.


Kết luận

Chỉ báo Adaptive Moving Average là một công cụ mạnh mẽ để theo dõi xu hướng và giảm thiểu tín hiệu sai trong các thị trường biến động. Với mã nguồn được cung cấp, bạn có thể dễ dàng tích hợp và tùy chỉnh chỉ báo AMA trong MetaTrader 5. Hãy thử nghiệm chỉ báo này trên tài khoản demo để làm quen với cách nó hoạt động trước khi áp dụng vào giao dịch thực tế.


Nếu có bất kỳ thắc mắc nào vui lòng liên hệ Telegram: @gfvietvd


Tin tức liên quan