Danh mục
Kỹ thuật
Độ khó
Cơ bản
Dùng trong
Thiết kế chiến lượcVận hành MT5

Đường trung bình động hàm mũ

Một đường trung bình động đặt trọng số lớn hơn cho giá gần đây so với giá cũ, nên nó quay đầu sớm hơn trung bình giản đơn. Bộ lọc xu hướng và lệnh vào theo giao cắt của EA được xây trên nó nhiều hơn bất kỳ chỉ báo nào khác.

còn gọi: EMA, trung bình hàm mũ

Đã cập nhật · Đã đánh giá

Nói đơn giản

Một mức trung bình của giá gần đây, chú ý tới điều vừa xảy ra nhiều hơn điều đã xảy ra một lúc trước. Nó quay đầu nhanh hơn trung bình thường, nên hữu ích hơn trong xu hướng và lắm lời hơn trong vùng đi ngang.

Vì sao quan trọng

EMA là viên gạch mặc định của logic xu hướng trong một EA: nó cung cấp hướng mà những chỉ báo như ADX cố tình không đưa ra. Nó cũng là thành phần bị lạm dụng và bị tối ưu quá mức nhiều nhất trong các EA cá nhân, vì một quy tắc giao cắt rất dễ viết còn hai chu kỳ của nó thì rất dễ chỉnh cho tới khi bất kỳ lịch sử nào trông cũng có lãi.

  • Nó cho chiến lược một dấu. Sức mạnh xu hướng và biến động vốn không có hướng; chính phép so sánh giá với EMA, hoặc nhanh với chậm, mới đưa lên và xuống vào trong bộ quy tắc.
  • Nó phản ứng nhanh hơn trung bình giản đơn, và điều đó quan trọng tại các điểm đảo chiều — nơi phần lớn kết quả của một chiến lược xu hướng được định đoạt.
  • Về bản chất nó là thước đo trễ. Mọi trung bình động đều mô tả điều đã xảy ra, nên một giao cắt xác nhận chứ không dự báo.
  • Hai chu kỳ là hai tham số, và một phép quét lưới trên chúng luôn tìm được cặp trông xuất sắc trên bất kỳ cửa sổ nào. Đó là cái bẫy overfitting kinh điển trong thiết kế EA.

Trong MetaTrader 5

Xuất hiện ở đâu trong MT5

  • Insert → Indicators → Trend → Moving Average, rồi đặt Method thành Exponential
  • Hộp thuộc tính của MA cũng đặt applied price — Close là lựa chọn thông thường và làm giá trị thay đổi đáng kể
  • Biểu đồ vẽ nó ở cửa sổ chính, trên thang giá, khác với ATR hay ADX
  • Strategy Tester → Inputs — chu kỳ nhanh và chu kỳ chậm là hai tham số dễ bị tối ưu quá mức nhất

EA dùng nó thế nào

  • Tạo handle trong OnInit — iMA(_Symbol, PERIOD_CURRENT, 21, 0, MODE_EMA, PRICE_CLOSE) — mỗi chu kỳ một handle và giữ suốt vòng đời của EA.
  • Làm bộ lọc hướng: chỉ mua khi giá hoặc EMA nhanh nằm trên EMA chậm, và chỉ bán khi nằm dưới.
  • Làm lệnh vào theo giao cắt: EMA nhanh cắt EMA chậm trên một nến đã đóng, việc này đòi hỏi đọc cả nến 1 lẫn nến 2 để bắt được giao cắt thay vì trạng thái.
  • Làm mốc dời lệnh: thoát khi giá đóng ở phía bên kia một EMA đã chọn — một quy tắc dời lệnh tự thích nghi với nhịp của chính xu hướng.
  • EMA ở khung thời gian lớn hơn được đọc bằng chính lời gọi đó với tham số chu kỳ khác; đó là cách một EA M15 lấy hướng từ H4.

Thiết lập thường gặp

Thiết lập Giá trị thường dùng Ghi chú
Cặp nhanh/chậm, ngắn hạn 8 / 21 Phản ứng nhanh; tạo ra nhiều giao cắt, và phần lớn không phải xu hướng.
Cặp nhanh/chậm, trung hạn 50 / 200 Cặp được theo dõi rộng rãi. Ít tín hiệu, và những tín hiệu có được thì đến muộn.
Bộ lọc xu hướng đơn EMA 200 trên khung vào lệnh Dùng như một cổng chặn hướng chứ không phải điểm vào.
Applied price Close Thông dụng và ổn định. Giá trung vị hay giá điển hình làm mượt thêm và thay đổi mọi kết quả backtest.
Nến tín hiệu nến vừa đóng gần nhất Đọc nến đang hình thành sẽ tạo ra những giao cắt xuất hiện rồi biến mất ngay trong nến.

Sự cố vận hành thường gặp

  • Kiểm tra trạng thái (nhanh trên chậm) thay vì sự kiện (nhanh vừa cắt chậm), khiến EA vào lại lệnh ở mọi nến suốt thời gian xu hướng kéo dài.
  • Đọc chỉ số 0, khiến giao cắt nhấp nháy theo từng tick và cho ra kết quả backtest mà giao dịch thật không tái lập được.
  • Handle tạo trong OnTick sẽ rò rỉ cho tới khi iMA trả về INVALID_HANDLE.
  • CopyBuffer lúc khởi động, trước khi chu kỳ chậm có đủ lịch sử, trả về các số 0 được so sánh y như một giao cắt.
  • Tối ưu cả hai chu kỳ trên một cửa sổ rồi phát hành đúng đỉnh — cách phổ biến nhất khiến một EA trông xuất sắc lúc kiểm thử và hỏng ngay sau đó.

Hàm MT5 liên quan

iMA(symbol, timeframe, period, shift, MODE_EMA, applied_price)
Tạo handle; chính MODE_EMA làm nó thành hàm mũ thay vì giản đơn.
CopyBuffer(handle, 0, start, count, array)
Đọc giá trị trung bình từ bộ đệm duy nhất của nó.
ArraySetAsSeries(array, true)
Làm chỉ số 0 thành nến hiện tại, quy ước mà hầu hết mã giao cắt đều mặc định.
iTime(symbol, timeframe, 0)
Dùng để hành động một lần mỗi nến thay vì một lần mỗi tick.

Ví dụ

Khác biệt giữa đọc một trạng thái và đọc một sự kiện — lỗi EMA phổ biến nhất trong mã EA.

Nến 2 — nhanh so với chậm
nhanh nằm dưới chậm
Nến 1 — nhanh so với chậm
nhanh nằm trên chậm
Chính cặp số đọc này mới biến nó thành một giao cắt chứ không phải một điều kiện.
Kết quả phép thử trạng thái
kích hoạt ở mọi nến
Suốt thời gian xu hướng còn kéo dài, mỗi lần lại thêm một vị thế.
Kết quả phép thử sự kiện
kích hoạt một lần

Cả hai phiên bản đều trông có lãi trong một xu hướng mạnh khi kiểm thử. Chỉ một trong hai là chiến lược đã được dự định.

Phép tính if (fast[2] <= slow[2] && fast[1] > slow[1]) → giao cắt lên

Kết quả Một lệnh vào cho mỗi giao cắt thay vì một lệnh cho mỗi nến

Cách sử dụng

Một quy tắc EMA dễ viết và cũng dễ uốn cho vừa. Mọi thứ đáng kiểm tra đều xoay quanh việc các tham số có sống sót khi bị dịch chuyển hay không.

Khoảng Ý nghĩa
Kết quả sụp đổ khi một chu kỳ dịch 10% Đã uốn theo cửa sổ kiểm thử. Một thiết lập vững chắc có các giá trị lân cận cũng chạy được.
Một dải rộng các cặp chu kỳ cho kết quả tương tự Hiệu ứng nhiều khả năng mang tính cấu trúc chứ không phải do uốn — đó chính là ý nghĩa của một vùng cao nguyên trên bề mặt tối ưu.
Giao cắt không có bộ lọc chế độ thị trường Tín hiệu cũng kích hoạt trong vùng đi ngang, nơi chúng phần lớn thua. Đó chính là điều mà ADX hay một bộ lọc biến động thường được thêm vào để sửa.
Đọc trên nến đang hình thành Không tái lập được. Cùng một thị trường sẽ cho những điểm vào khác nhau tùy thời điểm tick về.
  • Khi chọn chu kỳ, hãy ưu tiên vùng cao nguyên hơn một đỉnh nhọn. Kết quả đơn lẻ tốt nhất của một backtest lại là kết quả ít có khả năng lặp lại nhất.
  • Ghép giao cắt với một bộ lọc chế độ thị trường. Một quy tắc xu hướng thiếu bộ lọc sẽ vào những lệnh tệ nhất đúng vào điều kiện mà nó yếu nhất.
  • Phát hiện giao cắt bằng hai nến, đừng bao giờ bằng một phép so sánh, và chỉ hành động trên nến đã đóng.
  • Hãy nhớ rằng trung bình động đi theo giá. Nó không thể đi trước, nên chiến lược xây trên nó là chiến lược tham gia chứ không phải dự đoán.

Trang `/indicators` về trung bình động trình bày cách tính và so sánh với SMA; mục từ này nói về cách EMA được đấu nối vào logic của một EA.

Sai lầm thường gặp

Nhầm trạng thái với sự kiện

Kiểm tra xem EMA nhanh có nằm trên EMA chậm hay không thì đúng suốt cả xu hướng. Kiểm tra xem nó có vừa cắt qua hay không lại đòi hỏi cả nến trước đó, và khác biệt giữa hai điều này là một lệnh so với hàng chục lệnh.

Tối ưu cả hai chu kỳ rồi phát hành cặp tốt nhất

Hai tham số tự do trên một bề mặt trơn luôn tạo ra một backtest ấn tượng. Điều đáng giá là các cặp lân cận có hành xử tương tự hay không — đó là khác biệt giữa một hiệu ứng và một phép uốn.

Dùng giao cắt mà không lọc điều kiện thị trường

Các đường trung bình động cắt nhau liên tục trong vùng đi ngang, và gần như toàn bộ những lần cắt đó đều thua. Bộ lọc không phải là một tối ưu hóa của chiến lược — nó là thứ khiến chiến lược có thể áp dụng được.

Cho rằng EMA chắc chắn tốt hơn SMA

Nó phản ứng nhanh hơn, và điều đó cắt về cả hai phía: vào sớm hơn trong xu hướng thật, nhiều tín hiệu giả hơn trong nhiễu. Cái nào đáng chọn còn tùy chiến lược, và khác biệt giữa chúng nhỏ hơn khác biệt do chọn chu kỳ.

Chi tiết

Các EA đã công bố dùng gì để xác định hướng thay cho nó

Mười bốn EA được công bố ở đây kèm toàn bộ sổ lệnh đã đóng. Không một EA nào lấy hướng từ một đường trung bình động hàm mũ.

Cơ chế xác định hướngEALà gì
Giao cắt Tenkan/Kijun của Ichimoku5Kestrel Hover, Orrery, Peregrine, Tessera, Zerqon
Chồng các đường trung bình động giản đơn1Lanternfish — SMA 25/50/75 trên M30, vào lệnh trên M5
Một đường trung bình động hàm mũ0
Thứ gì đó không phải giao cắt8Vùng cực trị RSI, bán/mua tại biên envelope, mẫu hình nến

Năm EA đó giữ lại phần giao cắt và bỏ đi phần tinh chỉnh: chu kỳ Tenkan/Kijun đến từ định nghĩa của chỉ báo chứ không từ một phép quét lưới. Cả năm đều đọc một nến đã đóng, còn Orrery và Peregrine chỉ hành động khi thân nến tín hiệu vượt một bội số của mức trung bình gần đây — đúng là bộ lọc chế độ thị trường mà một giao cắt trần trụi cần đến. Profit factor của chúng chạy từ 1,27 đến 1,46, cùng một dải với phần còn lại của danh mục.

Thẻ Inputs của Strategy Tester nhận một giá trị Start, Step và Stop cho mỗi chu kỳ. Hãy đọc toàn bộ tập kết quả chứ không chỉ dòng đầu: một vùng cao nguyên gồm các cặp lân cận là một hiệu ứng, còn một đỉnh đơn độc là một phép uốn. Đó chính là overfitting ở dạng thực tế, và là lý do một bộ lọc như ADX nên đến trước khi tinh chỉnh thêm một chu kỳ nữa.

Câu hỏi thường gặp

Các EA MT5 dùng chu kỳ EMA nào?
Cặp 8/21 cho hệ thống ngắn hạn và 50/200 để nhận diện xu hướng trung hạn là phổ biến nhất, còn một EMA 200 đơn lẻ thường chỉ được dùng như cổng chặn hướng. Những con số cụ thể ít quan trọng hơn việc chiến lược có còn chạy được khi dịch chúng đi hay không — một kết quả phụ thuộc vào đúng một cặp là kết quả đã uốn theo cửa sổ kiểm thử.
Với EA thì EMA có tốt hơn SMA không?
EMA phản ứng nhanh hơn, cho điểm vào sớm hơn trong các xu hướng thật và nhiều tín hiệu giả hơn trong nhiễu. Không cái nào tốt hơn một cách phổ quát, và khác biệt giữa hai loại thường nhỏ hơn khác biệt giữa hai lựa chọn chu kỳ trong cùng một loại.
Vì sao EA giao cắt EMA của tôi mở quá nhiều vị thế?
Gần như luôn là vì mã kiểm tra xem EMA nhanh có nằm trên EMA chậm hay không, thay vì kiểm tra xem nó có vừa cắt qua hay không. Điều kiện thứ nhất còn đúng suốt cả xu hướng và kích hoạt ở mọi nến; muốn bắt được giao cắt thì phải so sánh với cả nến trước đó.
EMA có dự báo được đảo chiều xu hướng không?
Không. Nó là trung bình của những mức giá đã xảy ra, nên tất yếu đi sau. Một giao cắt xác nhận rằng thay đổi đã diễn ra chứ không phải sắp diễn ra, và độ trễ đó là cái giá của việc làm mượt.