Expert Advisor Strategy Design: How to Setup an EA

Các chiến lược giao dịch theo xu hướng luôn được yêu thích trong số tất cả các nhà giao dịch nghiêm túc và vua của các chỉ báo giao dịch theo xu hướng luôn là đường trung bình động. Ngày nay có lẽ có nhiều giao dịch tiền tệ sử dụng đường trung bình động hơn là sử dụng tất cả các chỉ báo kỹ thuật khác cộng lại. Lý do tại sao chúng phổ biến đến vậy là vì chúng cung cấp cách rõ ràng nhất để xác định xu hướng. Chúng cho thấy hướng của xu hướng và sau đó làm dịu hoặc làm giảm sự biến động của nó.


Do đó, chúng tôi chuyển sự chú ý của mình sang đường trung bình động như một chỉ báo mẫu về cách phát triển chiến lược đường trung bình động tự động.


Trong bài viết này, bạn có thể tìm hiểu cách thiết kế chiến lược Expert Advisor và thiết lập giao dịch tự động bằng cách sử dụng các loại đường trung bình động giao nhau khác nhau.


Như với bất kỳ chiến lược dựa trên chỉ báo nào, bạn phải kiểm tra mức độ mạnh mẽ của chỉ báo Trung bình Động như một chiến lược khả thi ở trạng thái thô tuyệt đối của nó. Điều này có nghĩa là bạn đang cố gắng hạn chế số lượng tùy chọn bên ngoài và thông số bên trong càng nhiều càng tốt. Khi chúng tôi giới hạn các tùy chọn bên ngoài và tham số bên trong, chúng tôi có thể tập trung vào các đường trung bình động tốt nhất về độ dài và cách tiếp cận trong khung thời gian được xác định trước cũng như cách xây dựng chiến lược giao nhau với đường trung bình động đơn giản.


Hãy cung cấp một số thông tin cơ bản cho hai khái niệm này:


Chọn bên ngoài có giới hạn;


Hạn chế các thông số bên trong.


Hạn chế các lựa chọn bên ngoài

Hạn chế các lựa chọn bên ngoài có nghĩa là khi chúng tôi bắt đầu kiểm tra độ mạnh của chỉ báo, chúng tôi không sử dụng chiến lược chung Bất kỳ chất phụ gia nào có thể sửa đổi nó:


Không kết hợp với các chỉ số khác.


Không có mẹo bổ sung nào để bắt đầu.


Không có kỹ thuật thoát lệnh bổ sung

(Không dừng lỗ, chốt lãi, hòa vốn, dừng treo...

< p>Chỉ cần dừng và đảo ngược tín hiệu ngược lại).


Không có kỹ thuật lọc bổ sung (không có bộ lọc hàng giờ hoặc hàng ngày, không có bộ lọc khối lượng, xu hướng hoặc ngược xu hướng).


Không có công nghệ quản lý đơn hàng bổ sung.


Không có kỹ năng quản lý tiền bổ sung.


Lý do hiện tại chúng tôi giữ nó ở dạng thô và trần trụi là vì mọi phụ gia hoặc sự kết hợp bổ sung của các chỉ báo, kỹ thuật vào và thoát lệnh, bộ lọc, công thức quản lý tiền Cả hai đều tăng nguy cơ khớp đường cong và ô nhiễm chỉ báo.


Tối ưu hóa quá mức (khớp đường cong) là quá trình điều chỉnh các thông số chỉ báo dựa trên dữ liệu cụ thể, tối ưu hóa quá mức hệ thống giao dịch để tạo ra thứ gì đó có vẻ tốt. Hệ thống càng có nhiều bộ phận và tham số thì máy tính càng có thể tối ưu hóa nhiều giá trị tham số hơn để tìm ra những con số chính xác khiến hệ thống "có lãi" trong quá trình kiểm tra ngược, thay vì trong thế giới thực.


Ô nhiễm số liệu là thuật ngữ tôi vừa phát minh ra để mô tả việc thêm các số liệu và kỹ thuật bên ngoài vào bất kỳ số liệu nào có thể che khuất và bóp méo bản chất thực sự của số liệu đó. Ví dụ: việc thêm điểm chốt lời hoặc điểm dừng cuối vào chiến lược dựa trên chỉ báo có thể buộc chiến lược đó phải thoát lợi nhuận sớm, ngăn cản nhà phát triển chiến lược hiểu cách thức hoạt động của chiến lược đó từ đầu đến cuối, nhập hướng mua và đảo ngược để bán. Tương tự như vậy, việc thêm chỉ báo thứ hai làm chỉ báo xác nhận có thể buộc nó phải thực hiện quá muộn, khiến nhà phát triển chiến lược không thể hiểu được nó hoạt động như thế nào từ đầu đến cuối. Thay vào đó, tôi ủng hộ rằng các chiến lược dựa trên chỉ báo phải được giữ nguyên vẹn và không bị vấy bẩn để các nhà phát triển chiến lược có thể thực sự hiểu được giá trị nội tại của chỉ báo. Tôi không phản đối việc thêm các chỉ báo và kỹ thuật khác vào chiến lược; vì mục đích minh bạch, tôi chỉ khuyên bạn nên giữ nó sạch sẽ ngay từ đầu.


Sau khi xác định được liệu bản thân chỉ báo có thể là một chiến lược dừng lỗ và đảo chiều sinh lời hay không, chúng tôi có thể xem liệu việc thêm các tính năng bổ sung này có thể cải thiện chỉ báo hay không.


Giới hạn các tham số nội bộ

Giới hạn các tham số nội bộ có nghĩa là khi chúng tôi bắt đầu kiểm tra mức độ tin cậy của một chỉ báo, chúng tôi tập trung vào các tham số cốt lõi của nó để tối ưu hóa có thể và mặc định các tham số khác thành giá trị chung.


Ví dụ: với chỉ báo Trung bình trượt, ngoài việc quyết định xem chúng ta muốn giao dịch nó dưới dạng hệ thống giao nhau đơn, đôi hay ba, chúng ta còn có để quyết định Nhiều tham số nội bộ:


Cặp tiền tệ nào tốt nhất (EURUSD hoặc GBPUSD hoặc USDCHF hoặc AUDUSD, v.v.)?


Khung thời gian nào là tốt nhất (từ M1 đến MN1)?


Giá tốt nhất (giá mở cửa, giá cao nhất, giá thấp nhất, giá đóng cửa) là bao nhiêu?


Cách tiếp cận tốt nhất (đơn giản, cấp số nhân, trọng số tuyến tính, v.v.) là gì?


Thời lượng hoặc khoảng thời gian tối ưu (từ 2 đến 2000) là bao nhiêu?


Hầu hết các tham số này xuất hiện trong chỉ báo Trung bình trượt gốc MT4, có cú pháp cụ thể riêng:


< /p>

double iMA (ký hiệu chuỗi), khung thời gian int, int Period, int ma_shift, int ma_method, int MAPrice, int Shift)


I muốn coi cấu trúc trong ngoặc sau mã định danh iMA là một chiếc xe buýt có nhiều chỗ ngồi được chỉ định. Mỗi chỗ ngồi trên xe buýt được phân tách bằng dấu phẩy và được gọi là một tham số. Chỉ báo iMA h

Lưu ý rằng khi đường EMA 20 ngày cắt xuống dưới đường EMA 200 ngày vào năm 2008, nó đã tăng lên 1.600 điểm trong xu hướng giảm do cuộc khủng hoảng và sau đó khi vượt qua vào năm 2009, nó đã tăng thành công 1.600 điểm trong xu hướng tăng sau cuộc khủng hoảng Đạt được khoảng 2700 điểm trong quá trình phục hồi. Tháng 3 năm 2009 đến tháng 7 năm 2011. Chiến lược giao cắt vàng này thực sự hiệu quả trong việc nắm bắt các xu hướng ngoại hối dài hạn. Do tính chất fractal của thị trường, nó cũng có thể là sự kết hợp mạnh mẽ để sử dụng trên các khung thời gian nhỏ hơn.


Nhược điểm của đường trung bình động có chu kỳ dài hơn là nó phản ứng chậm hơn trước những thay đổi về giá và sự đảo ngược xu hướng. Bạn có thể trì hoãn việc tham gia một xu hướng mới quá lâu, bỏ lỡ cơ hội nhập giá tốt hoặc giao dịch đầy đủ. Khoảng thời gian dài hơn sẽ kéo dài thời gian cần thiết để giá cuối cùng vượt qua đường trung bình động, khi đó xu hướng di chuyển có thể đã kết thúc.


Việc rút ngắn độ dài của đường trung bình động cho phép bạn nhập xu hướng và sự đảo chiều của chúng sớm hơn. Đây có lẽ là một điều tốt vì bạn muốn có thể ghi được càng nhiều điểm càng tốt. Nhưng hãy cẩn thận. Việc rút ngắn quá mức độ dài sẽ tạo ra một đường trung bình động lởm chởm hơn, gần hơn và chắc chắn sẽ bị cắt nhỏ và làm giả trong thị trường đi ngang. Ví dụ: tôi thấy cực kỳ khó sử dụng các đường trung bình động nhỏ hơn 25 tiết trên khung thời gian H1 hoặc thấp hơn vì độ dài ngắn hơn khiến người ta rơi vào quá nhiều xu hướng sai và thoát sai.


Vậy thì mấu chốt của vấn đề về độ dài là tìm ra sự cân bằng phù hợp giữa độ mượt và tốc độ. Người ta muốn độ dài đủ dài để mượt mà và tránh bị đứt quãng, nhưng cũng đủ ngắn để nhanh chóng giúp bạn bắt kịp xu hướng sớm. Do đó, các nhà phát triển chiến lược cố gắng tối ưu hóa độ dài để tìm ra sự cân bằng phù hợp giữa độ mượt mà và tốc độ. Như chúng ta sẽ thấy, các nhà giao dịch cũng thử các phương pháp khác nhau để giúp giải quyết vấn đề này.


Mẹo tối ưu hóa số 1: Bạn nên đặt độ dài làm thông số bên ngoài của bất kỳ chiến lược dựa trên chỉ báo nào để tối ưu hóa nó.


Ví dụ:


Double ma_current = iMA (NULL,0,200,0, 0 ,0,0);


Vị trí:


// trong các biến bên ngoài Diện tích

Int bên ngoài MALength = 200;


// Vị trí sau hàm start()

Double ma_current = iMA (NULL,0,MALength,0,0,0,0);


Mẹo tối ưu hóa số 2: Tôi thường bắt đầu bằng độ tin cậy. Tôi bắt đầu bằng một đoán có căn cứ về độ dài và sau đó tối ưu hóa nó theo các bước 5, 10 hoặc 25 dựa trên phạm vi biến đổi của tôi. Ví dụ: nếu tôi kiểm tra đường trung bình động trên khung thời gian H1 và tôi muốn kiểm tra phạm vi từ 25 đến 600, tôi sẽ kiểm tra nó theo các bước 25. Hãy nhớ rằng độ dài tối ưu sẽ mang lại lợi nhuận trên tất cả các tham số liền kề. Ví dụ: nếu bạn thấy rằng độ dài tối ưu là 200 thì các giá trị tham số trước (150, 175) và sau (225, 250) cũng sẽ mang lại lợi nhuận.


Phương pháp: Nữ hoàng của các tham số chỉ báo (sự lựa chọn thực sự giữa đơn giản và hàm mũ).

Như chúng ta đã thấy, việc thay đổi độ dài là cách quan trọng nhất để tìm ra sự cân bằng phù hợp giữa độ mượt và tốc độ. Thay đổi cách tiếp cận của bạn cũng có thể giúp giải quyết vấn đề này.


Trong chỉ báo Trung bình trượt, có bốn phương pháp tích hợp: đơn giản, hàm mũ, làm mịn và tính trọng số.


Hướng dẫn tính toán tên giá trị không đổi

MODE_SMA 0 Trung bình động đơn giản mang lại trọng số bằng nhau cho mỗi giá trong quá trình tính toán.

MODE_EMA 1 Đường trung bình động hàm mũ được gán nhiều trọng số hơn cho các mức giá gần đây nhằm cố gắng giảm độ trễ.

MODE_SMMA 2 Đường trung bình động được làm mịn, tương tự như SMA; tuy nhiên, thay vì trừ đi giá trị cũ nhất, đường trung bình được làm mịn trước đó sẽ bị trừ đi.

MODE_LWMA 3 Trung bình trượt có trọng số tuyến tính Được thiết kế để đặt nhiều trọng số hơn vào dữ liệu gần đây và ít trọng số hơn lên dữ liệu trong quá khứ.

Tôi sẽ không đi sâu vào toán học của các mẫu này vì chúng được đề cập trong các bài viết khác trên web.


Trong thực tế, bạn sẽ thấy hai liên minh giữa 4 chế độ, điều này làm giảm số lượng lựa chọn thực tế xuống còn hai:


Smooth Alliance: Đơn giản + Mượt mà

Cả SMA và SMMA đều nhấn mạnh đến sự mượt mà. Bạn sẽ thấy rằng SMMA mượt mà hơn SMA khi sử dụng cùng độ dài.


Ví dụ: đây là SMA 50 SMMA so với 50 SMA trên biểu đồ H1 của GBPUSD: có bảy tham số. Lần lượt, mỗi tham số có một giá trị mặc định có thể được tùy chỉnh (hoặc được cá nhân hóa, để phù hợp với phép ẩn dụ về xe buýt). Sẽ rất hữu ích khi hiểu từng tham số làm gì, giá trị mặc định của mỗi tham số là gì, cách tùy chỉnh chúng và tham số nào thực sự điều khiển bus.


Bảng sau mô tả từng thông số của đường trung bình động:


À


Chà


Chà


p>

Mô tả thông số

Ký hiệu giao dịch, chẳng hạn như EURUSD. NULL hoặc Symbol() cho biết cặp tiền tệ của biểu đồ nơi đặt chỉ báo.

Khung thời gian Khoảng thời gian biểu đồ mà đường trung bình động được áp dụng, thường được đặt thành 0, biểu thị biểu tượng biểu đồ mà EA được đính kèm.

MAPeriod Khoảng thời gian nhìn lại của đường trung bình động. Đây là biến quan trọng nhất.

MAShift Sự dịch chuyển về phía trước của đường trung bình động theo thanh, thường được đặt thành 0.

MAPhương pháp tính toán trung bình động, bạn có thể chọn trọng số đơn giản, hàm mũ, làm mịn hoặc tuyến tính. Biến quan trọng thứ hai.

MAPrice là một dãy giá được sử dụng khi tính toán đường trung bình động, có thể là giá đóng cửa, giá mở cửa, giá cao nhất, giá thấp nhất hoặc một loại trung bình nào đó. Thông thường giá trị mặc định 0 hoặc tắt được sử dụng.

Shift trả về độ dịch chuyển lùi được tính toán của thanh. Giá trị 0 trả về giá trị chỉ báo của thanh hiện tại, giá trị 3 trả về giá trị chỉ báo 3 thanh trước. Như chúng ta sẽ thấy, đây là biến quan trọng thứ ba.

Bạn có thể tham khảo nhanh các tham số MA (cũng như tham số của tất cả 20 chỉ báo gốc) tại đây: https://docs.mql4.com/indicators/iMA


Bây giờ chúng ta đã thấy tất cả các tham số có thể có, tôi muốn đưa ra một gợi ý. Hãy tìm cách tối ưu hóa chỉ hai trong số đó: chiều dài và mẫu. Bạn cũng có thể muốn tối ưu hóa khung thời gian nếu bạn nhập điểm giao nhau ở cuối thanh. Giữ phần còn lại ở giá trị mặc định.


Giới hạn các thông số: cặp tiền, khung thời gian, giá cả.

Các cặp tiền tệ.

Khi giao dịch với các chỉ báo xu hướng như đường trung bình động, tốt nhất nên kiểm tra EURUSD trước vì hai lý do. Thứ nhất, hầu hết các loại tiền tệ chính đều có mối tương quan cao vì chúng đều được ghép cặp với đồng đô la Mỹ, vì vậy tốt nhất nên chọn cặp tiền có tính thanh khoản cao nhất để có mức chênh lệch thấp nhất và khớp lệnh nhanh nhất. Thứ hai, vì EURUSD là cặp tiền tệ được giao dịch nhiều nhất nên nó là ứng cử viên có nhiều khả năng thành công nhất với tư cách là một chỉ báo, vì hầu hết các chỉ báo đều phụ thuộc rất nhiều vào lời tiên đoán tự ứng nghiệm về mức độ phổ biến của nó. Do đó, bạn muốn thử nghiệm các chỉ báo phổ biến nhất trên các cặp tiền tệ phổ biến nhất để có cơ hội thành công cao nhất. Vì Đường trung bình động là chỉ báo phổ biến nhất và EURUSD là cặp tiền tệ phổ biến nhất nên sự kết hợp này có ý nghĩa hợp lý nhất. Sau khi bạn đã sử dụng xong EURUSD, đã đến lúc kiểm tra GBPUSD, AUDUSD và USDCHF để xem liệu chiến lược của bạn có hiệu quả với các cặp tiền tệ liên quan này hay không.


Thời gian nói chung

Có một sự hiểu lầm phổ biến về cách các khung thời gian ảnh hưởng đến sự hình thành của đường trung bình động. Nhiều nhà phát triển chiến lược mới vào nghề phát triển và tối ưu hóa đường giao nhau của đường trung bình động trên một khung thời gian và sau đó nghĩ rằng đó là một chiến lược mới nếu họ phát triển nó trên một khung thời gian khác. Nhưng nó thực sự như vậy? Thay vào đó, tôi nghĩ độ dài quan trọng hơn và có thể thay thế nhiều lợi thế bề ngoài mà khung thời gian mang lại. Bạn chỉ cần tăng/giảm độ dài theo bội số của chênh lệch phạm vi thời gian để tính các phạm vi thời gian khác nhau. Ví dụ: nếu bạn thấy rằng đường trung bình động 100 kỳ của bạn hoạt động tốt nhất trên khung thời gian H1 thì nó ít nhiều phải giống với đường trung bình động 200 kỳ của bạn trên khung thời gian M30 (M30 bằng một nửa H1, vì vậy 100X2= 200), hoặc đường trung bình động 25 kỳ trên khung thời gian H4 (H4 lớn hơn H1 4 lần nên 100/4 = 25).


Tuy nhiên, nếu bạn muốn chiến lược của mình đợi các điểm vào ở cuối thanh tạo thành điểm giao nhau, thay vì thời điểm giao nhau, thì khung thời gian thực sự quan trọng. Sau đó, bạn trì hoãn mục nhập cho đến khi thanh đóng lại, điều này làm cho khung thời gian của thanh bây giờ phù hợp hơn. Giao dịch khi đóng cửa làm cho khung thời gian phù hợp hơn như thế nào? Hãy lấy ví dụ về chiến lược giao nhau giữa MA 100 kỳ được xây dựng trên khung thời gian H1 và chiến lược giao nhau với MA 200 kỳ được xây dựng trên khung thời gian M30. Cả hai đều được đặt để vào/ra ở cuối thanh. Như đã đề cập ở trên, hai chiến lược này sẽ giao nhau tại cùng một điểm, ở đâu đó trong các thanh tương ứng của chúng. Tuy nhiên thời gian vào/ra sẽ phải điều chỉnh theo các khung thời gian khác nhau. Nếu tôi đặt chiến lược của mình chờ sự giao nhau của đường trung bình động 200 kỳ trên biểu đồ M30 thì chiến lược sẽ vào/ra ở cùng điểm giao nhau với biểu đồ 100-H1, nhưng điểm khác biệt là nó sẽ vào/thoát ở trên / Điểm đóng của thanh M30 nằm dưới đường trung bình động chứ không phải là thanh H1 sau đó. Do đó, khung thời gian M30 sẽ mang đến cho bạn cơ hội giao nhau sớm hơn 30 phút so với chiến lược tương tự được xây dựng trên thanh H1. Đôi khi nếu bạn muốn chiến lược nhảy vào và ra nhanh chóng, đôi khi bạn cần thêm thời gian trễ để tránh tiếng ồn. Đôi khi bạn có thể muốn độ trễ của cột H4 hoặc D1 nhưng không phải độ nhanh của cột M15 hoặc M30 hoặc ngược lại. Tại sao phải đợi đến lúc đóng cửa? Đầu tiên, việc kiểm tra lại chiến lược của bạn sẽ dễ dàng hơn nếu bạn đợi thời điểm đóng giao dịch. Thứ hai, vì bất cứ lý do gì, đôi khi nó mang lại kết quả tốt hơn.


Vì vậy, nếu bạn quyết định xây dựng chiến lược giao nhau bằng cách sử dụng các thanh đóng, bạn có thể muốn thử nghiệm trên khung thời gian H1 làm khung thời gian ban đầu, sau đó kiểm tra các khung thời gian sau (M15 và M30) để xem liệu tốc độ có thể mang lại lợi ích nhiều hơn không và test các khung thời gian trên (H4 và D1) xem lag hay chậm có lợi hơn.


Nếu khung thời gian quan trọng đối với chiến lược của bạn thì tốt nhất bạn nên tối ưu hóa nó bằng cách biến khung thời gian thành một tham số bên ngoài.


Giá

Giá phải được giữ ở mức mặc định là 0, là giá đóng cửa. Tôi nghĩ ra bất kỳ lý do chính đáng nào để thay đổi giá thành cao, thấp hoặc mở. Trên thực tế, có thể có những lý do chính đáng cho các mức giá khác, nhưng nếu chiến lược trung bình động của bạn không hiệu quả với giá đóng cửa thì nó cũng sẽ không hiệu quả với các mức giá khác.


Độ dài: Vua của các thông số chỉ báo

Độ dài là thành phần quan trọng nhất của bất kỳ đường trung bình động nào. Đây là biến đầu tiên cần được tìm cách tối ưu hóa.


Nếu bạn đang sử dụng đường trung bình động kép thì chính đường trung bình động chậm mới thực sự xác định xu hướng. Độ dài của đường trung bình động nhanh thường bằng một phần từ 1/4 đến 1/10 độ dài của đường trung bình động chậm, do đó, việc nó có đúng hay không không phải là vấn đề lớn.


Nói chung, độ dài càng dài thì phản ứng với hành động giá càng mượt mà và chậm hơn. Đây là những gì bạn cần để tìm xu hướng lớn hơn và trung bình. Ví dụ: sự giao nhau của SMA 200 ngày (đường trung bình động đơn giản) với SMA 20 ngày hoặc SMA 50 ngày nhanh hơn là cơ sở của "điểm giao vàng" nổi tiếng được các nhà giao dịch trên khắp thế giới sử dụng để xác định các xu hướng lớn hơn: < /p>


Dưới đây là các đường giao nhau của SMA 20 ngày đối với AUDUSD trên/dưới SMA 200 ngày:

Như bạn có thể thấy, SMMA (50) phản ứng với sự thay đổi giá nhiều hơn so với đối tác SMA (50) của nó thậm chí còn chậm hơn. Chúng tôi được biết điều này là do SMMA cung cấp phép tính mượt mà hơn SMA.


Tuy nhiên, nếu độ dài của SMMA giảm đi một nửa thì nó trông rất giống với EMA, một thực tế trực quan làm suy yếu sự khác biệt của nó.


Đây là đường 50 EMA và 25 SMMA trên biểu đồ H1 của GBPUSD:

Như bạn có thể thấy, có rất ít khoảng cách giữa EMA 50 và SMMA giảm một nửa (25 ) Sự khác biệt. Các dòng chồng lên nhau hoàn toàn.


Vì vậy, nếu sự khác biệt thực sự giữa EMA và SMMA là độ dài thì tốt hơn nên sử dụng SMA làm đại diện thực sự cho độ mượt mà. Ưu điểm của việc sử dụng đơn giản là nó phổ biến và có mục đích trơn tru, tức là nó nhằm mục đích (với độ dài đủ dài) để cung cấp tín hiệu xu hướng đáng tin cậy hơn.


Tuy nhiên, một số người không thích việc SMA tụt hậu so với các điểm dữ liệu mới nhất do đặc tính làm mịn của nó và họ muốn cung cấp nhiều hơn cho điểm dữ liệu gần nhất điểm dữ liệu Trọng lượng, chẳng hạn như trung bình động có trọng số và hàm mũ.


Liên minh tốc độ: Hàm mũ + trọng số tuyến tính

Cả hai đường trung bình động có trọng số tuyến tính và hàm mũ đều cố gắng thực hiện điều này bằng cách gán nhiều trọng số hơn với giá gần đây, nghĩa là gán ít ý nghĩa hơn cho giá cũ hơn để khắc phục độ trễ về giá. Bằng cách này, tất cả họ đều có thể phản ứng với sự thay đổi giá nhanh hơn. Tuy nhiên, trong thực tế, bạn sẽ thấy rằng mặc dù chúng mang lại nhiều ý nghĩa hơn cho giá gần đây theo những cách khác nhau nhưng nhìn chung chúng đều đi theo cùng một con đường.


Ví dụ: đây là đường EMA 50 so với 50 LWMA trên biểu đồ H1 của GBPUSD:

Mặc dù đây không phải là kết quả khớp chính xác nhưng hầu hết các đảo ngược xu hướng đều xảy ra trong cùng một vị trí. Bạn sẽ không tìm thấy một chiến lược hoàn toàn khác giữa sự giao nhau của đường EMA 50 kỳ và sự giao nhau của LMMA 50 kỳ.


Vì vậy, nếu không có sự khác biệt đáng kể giữa hai loại này thì tốt hơn nên sử dụng hàm mũ vì nó phổ biến hơn.


Ưu điểm của việc sử dụng chỉ số mũ so với chỉ số đơn giản là nó thích ứng với giá thị trường nhanh hơn chỉ số đơn giản. Nó làm giảm độ trễ, cho phép bạn nhập xu hướng đảo chiều sớm hơn. Nhược điểm là nó có thể quá nhạy cảm, phủ nhận mục đích ban đầu của đường trung bình động: làm trơn tru hành động giá. EMA có xu hướng nhạy cảm hơn với những biến động của thị trường.


Sự lựa chọn thực sự: giữa SMA và EMA

Mặc dù đã biết trước về phương pháp này nhưng sự lựa chọn thực sự là giữa phương pháp đơn giản và phương pháp hàm mũ phương pháp Dễ dàng hơn nhiều, nhưng thật khó để biết trước phương pháp nào tốt hơn. Mặc dù người ta có thể nghiêng về Simple vì sự mượt mà của nó hoặc Exponential vì tốc độ của nó, nhưng cuối cùng, người ta sẽ không bao giờ biết ai sẽ là nữ hoàng thực sự của trò chơi cho đến khi một cuộc xét xử công bằng giữa hai người được đưa ra.


Mẹo tối ưu hóa số 1: Bạn nên sử dụng các phương pháp làm tham số bên ngoài của bất kỳ chiến lược dựa trên chỉ báo nào để tối ưu hóa chúng.


Ví dụ:


Double ma_current = iMA(NULL,0,200,0, 0 ,0,0);


Vị trí:


// trong các biến bên ngoài Diện tích

Int bên ngoài MATime = 0;

Int bên ngoài MALength = 200;

Int bên ngoài MAMethod = 0; // 0 = trung bình động; 1 = di chuyển trung bình; 2 = Đường trung bình động tiêu chuẩn; 4= SWMA


// Đặt hàm start() vào

Double ma_current = iMA ( NULL ,MATime,MALength,0,MAMethod,0,0);


Mẹo tối ưu hóa số 2: Chỉ tối ưu hóa giữa SMA và EMA.

Vì tôi đã chỉ ra rằng SMMA là phiên bản dự phòng của SMA và LWMA là phiên bản dự phòng của EMA nên thực tế bạn cũng không cần phải tối ưu hóa. Giữa SMA và EMA, giữa 0 và 1, việc tối ưu hóa ở bước 1 sẽ thông minh hơn và dễ dàng hơn.


Cùng chéo: Bắt đầu với Đường trung bình động giao nhau kép

Khi một nhà giao dịch cố gắng xây dựng một hệ thống giao cắt trung bình động, anh ta sẽ thường xuyên tự hỏi bản thân xem bạn nên thực hiện giao cắt các đường trung bình động đơn, đôi hay ba. Xem bài viết của tôi về đường trung bình động để biết sự khác biệt.


Câu trả lời rất đơn giản: đường trung bình động kép giao nhau là tốt nhất.


Một số người sẽ cho rằng một đường trung bình động giao nhau có lợi thế đơn giản nhất. Khi giá đóng cửa ở trên/dưới đường trung bình động, bạn sẽ mua hoặc bán. Nhưng các đường trung bình động kép cũng có thể đơn giản: bạn có thể mua hoặc bán khi đường trung bình động nhanh cắt/dưới đường trung bình động chậm. Một MA đơn có ưu điểm là nhanh hơn khi giao nhau, nhưng một MA kép cũng có thể nhanh hơn khi giao nhau nếu MA nhanh đủ ngắn. Trên thực tế, nếu bạn xây dựng một hệ thống giao nhau giữa các đường trung bình động kép, bạn có thể thử nghiệm sự giao nhau của đường trung bình động đơn lẻ như một chiến lược tiềm năng bằng cách đặt MA nhanh thành 1. Việc đặt Fast MA thành 1 về cơ bản sẽ biến Fast MA thành chức năng của một thanh đóng, khiến nó hoạt động giống như một hệ thống giao nhau giữa các đường trung bình động đơn lẻ.


Đường trung bình động ba lần có thể có vấn đề. Cơ chế vào lệnh về cơ bản giống như cơ chế của đường trung bình động kép, vào lệnh khi đường trung bình động nhanh vượt qua đường trung bình động chậm. Sự khác biệt là ở cơ chế thoát, đòi hỏi cách tiếp cận nhanh hơn, thoát khi MA nhanh thứ ba vượt qua/dưới MA chậm hơn. Tuy nhiên, việc đưa ra MA thứ ba có nguy cơ gây ô nhiễm chỉ báo. Nếu nó thoát ra khi MA nhanh hơn vượt qua/dưới MA chậm hơn, nó sẽ rút ngắn thời gian tồn tại tiềm năng của đường trung bình động giống như cách chốt lãi hoặc dừng lỗ. Việc thêm MA thứ ba này buộc chiến lược MA phải thoát sớm, khiến nhà phát triển chiến lược không thể hiểu được hiệu suất của nó từ đầu đến cuối, các tín hiệu thoát và đảo chiều.


Vì vậy, chúng ta sẽ bắt đầu với sự giao thoa kép.


Các điều kiện vào/ra để hình thành điểm giao cắt MA kép dừng và đảo ngược

Một số tùy chọn bên ngoài và thông số bên trong hiện bị hạn chế ngay từ đầu Đã đến lúc bắt đầu sử dụng chiến lược trung bình động kép, chiến lược này chỉ tìm cách tối ưu hóa độ dài MA chậm và hai phương pháp SMA và EMA.


Chà, ý tưởng ban đầu của chúng tôi là viết các điều kiện vào lệnh cho MAC Cross kỳ 20-200, nhưng chúng tôi sẽ không thực hiện nó ở các cấp độ cao hơn như ban đầu dự kiến. Thay vì thử nghiệm nó trên khung thời gian hàng ngày, hãy thử nghiệm nó trên khung thời gian H4. Do tính chất phân dạng của thị trường, nó sẽ hoạt động tốt trên khung thời gian ngắn hơn này và nó sẽ cung cấp cho chúng ta cỡ mẫu giao dịch lớn hơn khung thời gian hàng ngày. Chúng tôi chuyển đổi lối vào ngược lại thành lối ra để biến nó thành một hệ thống dừng và đảo ngược đơn giản - cách tốt nhất để kiểm tra độ mạnh của phương thức vào lệnh của bạn. Một phương thức vào lệnh tốt có thể đảo ngược để mục nhập đối diện trở thành một lối thoát cũng phải hoạt động đầy đủ như một phương thức thoát. Sau này chúng ta sẽ thay đổi khung thời gian, độ dài và phương pháp của đường trung bình động để xem liệu sự thay đổi này có mang lại cho chúng ta những khả năng tốt hơn hay không.


Điều kiện:


Nếu đường SMA ngắn cắt lên trên SMA dài, hãy mua Nhập (dài).


Bán (bán khống) nếu đường SMA giảm giá cắt xuống dưới đường SMA tăng giá.


Chúng tôi sẽ chỉ mở một lệnh giao dịch tại một thời điểm bất kỳ.


Điều kiện thoát:


Nếu SMA ngắn cắt xuống dưới SMA dài, hãy đóng ( Mua)


Nếu SMA ngắn hạn vượt lên trên SMA dài hạn, hãy đóng (bán)


< p>Với MT4, thường có nhiều cách để tạo EA cho các điều kiện giống nhau, nhưng hiện tại tôi sẽ sử dụng phiên bản cơ bản nhất.


Cách tiêu chuẩn để mã hóa đường giao nhau của đường trung bình động là chỉ ra hai tập hợp biến và điều kiện:


< p>Mối quan hệ của FastMA với SlowMA trên thanh hiện tại (lớn hơn/nhỏ hơn) và mối quan hệ của FastMA với SlowMA trên thanh trước đó.


Ví dụ về định nghĩa biến:


// Đặt nó vào phần biến ngoài

Int bên ngoài MATime = 0;

int bên ngoài MAFastLen = 20;

int bên ngoài MASlowLen = 200;

int bên ngoài MAMethod = 0;< /p>


// Đặt nó trong phần biến toàn cục, ngay bên dưới các biến bên ngoài

Double

FastMAC hiện tại,

FastMAP trước,

MAC chậm,

SlowMAP trước;


// Được đặt trong hàm Start(), trước điều kiện đầu vào

FastMACurrent = iMA (NULL, MATime, MAFastLen, 0, MAMethod, 0, 0);

FastMAPrevious = iMA (NULL , MATime, MAFastLen, 0, MAMethod, 0, 1);

SlowMACurrent = iMA (NULL, MATime, MASlowLen, 0, MAMethod, 0, 0);

SlowMAPrevious = iMA (NULL, MATime, MASlowLen, 0, MAMethod, 0, 1);


Lưu ý: Để tham khảo hữu ích về các tham số iMA (Trung bình trượt), vui lòng truy cập Tại đây: https://docs.mql4.com/indicators/iMA


Sự khác biệt giữa FastMACurrent và FastMAPrevious không phải là tên tôi gán cho từng biến (I Những tên này được chọn chỉ để giúp tôi nhớ đường trung bình động mà tôi đang làm việc); đó là tham số cuối cùng của iMA. Tham số cuối cùng được gọi là "shift" và được biểu thị bằng 0 cho thanh hiện tại, 1 cho thanh trước đó, 2 cho hai thanh sau thanh hiện tại, v.v.


Trong quá trình thiết lập, tôi sẽ tham chiếu các biến này làm điều kiện đầu vào:


Giá trị Boolean

Mở để mua=false,

Mở để bán=false,

Đóng để mua=false,

Đóng để bán = sai;


if (FastMACurrent > SlowMACurrent && FastMAPrevious < SlowMAPrevious)

{

mở mua=true; // mua

if (ngược lại đóng)

đóng bán=true;

>

< br/ >

If (FastMACurrent < SlowMACurrent && FastMAPrevious > SlowMAPrevious)

{

Bán mở = True; // Bán

p>

If (đối diện đóng)

CloseBuy=True;


Dành cho a tín hiệu mua, bạn có thể thấy rằng tôi cần chỉ ra rằng đường trung bình động nhanh của thanh hiện tại phải lớn hơn đường trung bình động chậm của thanh hiện tại. Các điều kiện của thanh hiện tại có ý nghĩa.


Vậy tại sao tôi cũng phải chỉ ra điều kiện thứ hai là đường trung bình động nhanh của thanh trước phải nhỏ hơn đường trung bình động chậm của thanh trước quán ba ?


Nếu tôi không chỉ định điều kiện thứ hai và chỉ sử dụng mối quan hệ MA hiện tại làm tín hiệu mua — ví dụ: if (FastMACurrent > SlowMACurrent), Tôi sẽ Liên tục mua các vị thế sau mỗi lần dừng lỗ hoặc chốt lãi vì mã cho chương trình biết rằng cần phải đặt một lệnh mới vì đường trung bình động nhanh hiện tại vẫn cao hơn đường trung bình động chậm. Tuy nhiên, tôi không muốn gõ liên tục. Tôi muốn vào vào thời điểm giao nhau. Vì không có hàm chéo gốc trong MT4 nên tôi phải tạo một giải pháp thay thế: Tôi phải tạo điều kiện thứ hai cho biết rằng tôi không thể nhập khi MA nhanh hiện ở trên MA chậm, trừ khi MA nhanh trước đó ở dưới MA chậm. MA.


So sánh giai thoại với TS8

Trong EasyLanguage của Tradestation, bạn sử dụng các từ (chức năng) dành riêng được gọi là "Cross Above/Over" hoặc "Cross Below/Under" để bỏ qua bước bổ sung này; bạn chỉ cần nói "Mua nếu AverageFC (C,20) vượt qua AverageFC (C,200)". Tuy nhiên, trong MT4 thì không đơn giản như vậy. Bạn không có được sự tiện lợi của tính năng "chéo" trừ khi bạn tự tạo một tính năng. Thay vào đó, bạn phải nêu quy trình giao nhau với hai điều kiện: mua nếu MA (20) > MA (200) của thanh hiện tại và MA (20) < MA (200) của thanh trước đó.


Tất cả những gì chúng ta cần làm bây giờ là chèn các tham số cài đặt của mình vào EA, bạn có thể xem tôi đã thực hiện việc này như thế nào trong EA:

p>


ForexRazor_MACrossoverEA_InstrumentX_v1.0


Tải xuống EA và mở mui xe ra và xem nó trông như thế nào.


Sử dụng MA Crossover EA Tiến hành kiểm tra ngược sơ bộ

Tôi dự định kiểm tra điểm giao nhau giữa SMA 20-200 mới tạo của mình trên khung thời gian H4 của EURUSD trên tài khoản demo 10K bằng cách sử dụng các lô nhỏ 0,1. Bởi vì đây là sự giao nhau giữa MA nên tín hiệu tốt nhất thường được tạo ra từ độ dài dài hơn trên các khung hình cao hơn. Độ dài ngắn hơn trên khung thời gian ngắn hơn có thể tạo ra quá nhiều tín hiệu sai. Tôi chọn ba khoảng thời gian để kiểm tra lại.


Tôi sẽ sử dụng FXPro để kiểm tra lại EURUSD trong khoảng thời gian 28 năm từ năm 1971 đến tháng 1 năm 1999, trước khi đồng euro chính thức được thông qua. Làm cách nào FXPro có được dữ liệu EURUSD trước tháng 1 năm 1999 nếu đồng Euro không tồn tại? Có hai cách khả thi: FXPro có thể sử dụng dữ liệu cho Deutsche Mark, đại diện mạnh nhất của đồng Euro hoặc có thể sử dụng rổ lịch sử kết hợp của 11 loại tiền tệ truyền thống tạo nên đồng Euro bắt đầu từ tháng 1 năm 1999. Tiếp theo, tôi sẽ kiểm tra lại EURUSD trong 10 năm từ tháng 1 năm 1999 đến tháng 1 năm 2009, điều này sẽ đưa ra ý tưởng về cách chiến lược này đã hoạt động trong suốt những thăng trầm của 10 năm đầu tiên kể từ khi ra mắt chính thức. Cuối cùng, tôi sẽ kiểm tra lại ba năm qua từ 2009 đến 2012 để xem chiến lược này đã hoạt động như thế nào trong giai đoạn gần đây bị ảnh hưởng bởi cuộc khủng hoảng nợ công.


Backest#1: 28 năm từ tháng 1 năm 1971 đến tháng 1 năm 1999 (click vào hình để xem báo cáo chi tiết):

EA đã được giao dịch trong 49 lần ( 16 thắng) và 28 năm (lợi nhuận 2,8% mỗi năm) tạo ra lợi nhuận là $7690/7690 điểm/76%, nếu bạn vô tình bắt đầu từ điểm xuất phát sai, bạn sẽ phải chịu lợi nhuận là $3786/3780 điểm/thời gian thoái lui 37%. Nếu bạn có thể chịu đựng được sự sụt giảm thì đây là những kết quả tốt, bởi vì trong hơn 28 năm qua, hầu hết các EA đã suy giảm nghiêm trọng về hiệu suất, nhưng EA này vẫn luôn đứng đầu và tạo ra kết quả.


Chà, hãy nhìn vào những gì nó đã làm trong mười năm đầu tiên ra đời của đồng euro.


Backtest #2: 10 năm từ tháng 1 năm 1999 đến tháng 1 năm 2009 (click vào hình để xem báo cáo chi tiết):

Trong 10 năm tới, EA vẫn quản lý để luôn đứng đầu. Ở đây, với lợi nhuận sau 10 năm là 4996 USD/4996 điểm/49% (4,9% mỗi năm) và mức giảm tối đa là 2088 USD/2088 điểm/20%, những con số này cho thấy hiệu suất tốt hơn 28 năm qua; tuy nhiên, đó là The hệ số lợi nhuận đã giảm từ 1,8 xuống 1,48, cho thấy nhiều giai đoạn thoái lui hơn. Điều này xảy ra khi bạn so sánh hai biểu đồ chứng khoán; biểu đồ đầu tiên trông giống như một mức tăng ổn định, trong khi biểu đồ thứ hai trông giống như một mức tăng lởm chởm.


Được rồi, bây giờ hãy xem nó hoạt động như thế nào trong ba năm qua.


Backtest #3: Khoảng thời gian 3 năm từ tháng 1 năm 2009 đến tháng 1 năm 2012 (click vào hình để xem kết quả chi tiết):

< p>

Nếu như bạn có thể thấy, EA có vẻ đầy hứa hẹn. Nó mang lại 2152/2152 điểm/21% trong 3 năm (7% mỗi năm) và 41 giao dịch (11 thắng) trong khi bị lỗ 1978/1978 điểm/19%. Tôi muốn thấy hiệu suất tăng gấp đôi mỗi năm, với số liệu thống kê tổng thể vẫn giống như trong 38 năm qua. Hãy nhớ rằng bạn kiểm tra lại chiến lược của mình càng lâu thì khả năng hồi quy càng lớn. Rất ít nhà phát triển/nhà cung cấp chiến lược EA thể hiện hơn 3 năm thử nghiệm ngược EA của họ và thậm chí ít hơn có thể thể hiện hơn 10 năm. Họ không thể hiện điều đó bởi vì họ đã điều chỉnh chiến lược của mình cho phù hợp với kỳ dữ liệu gần đây nhất và đơn giản là nó không hiệu quả trong kỳ trước. EA mà tôi tạo ở trên là một hệ thống cơ bản không cần tối ưu hóa và khớp đường cong, đồng thời nó đã hoạt động rất đáng tin cậy trong việc nắm bắt các xu hướng lớn hơn trong 41 năm.


Kết luận

Cho đến nay chúng ta đã xác định được hầu hết các tùy chọn bên ngoài và xác định tất cả các tham số bên trong để tạo ra một sản phẩm rất nguyên bản, Đơn giản dừng lỗ và nghịch đảo đường trung bình động kép 20-200. Như chúng ta có thể thấy, trong 41 năm hỗ trợ EURUSD H4 vừa qua, nó đã hoạt động rất tốt, tạo ra hơn 15000 USD / 15000 pip trên tài khoản 10K mà không cần quản lý tiền. Tôi tin rằng nó được thực hiện tốt chính xác vì tình trạng ban đầu của nó. Khi bạn không tô điểm chiến lược dựa trên chỉ báo bằng các chỉ báo bổ sung, kỹ thuật vào/ra, bộ lọc, lệnh và kỹ thuật quản lý, bạn sẽ thấy chiến lược đó hoạt động như bình thường, ít có khả năng khớp đường cong và ô nhiễm chỉ báo. Hệ thống càng có ít bộ phận và tham số thì càng ít có khả năng phù hợp với đường cong dữ liệu lịch sử. Ngoài ra, việc bao phủ nhiều tổ hợp chỉ báo và kỹ thuật có thể che khuất và bóp méo bản chất thực sự của chiến lược dựa trên chỉ báo, do đó, việc giữ lại quy trình thiết bị này ít nhất ban đầu có thể giúp người ta hiểu cách chiến lược dựa trên chỉ báo hoạt động ở trạng thái trần trụi.


Ngoài ra, tôi nghĩ rằng trong tất cả các tham số bên trong, độ dài là quan trọng nhất, phương pháp (các lựa chọn thực sự ở đây rất đơn giản và theo cấp số nhân) thứ hai. Tôi chọn Đường chéo SMA kép 20-200 vì đây là một trong những phiên bản phổ biến nhất của đường giao nhau giữa các đường trung bình động được sử dụng để xác định hướng xu hướng dài hạn. Mặc dù hầu hết mọi người sử dụng nó trên khung thời gian hàng ngày, tôi nghĩ nó cũng có thể được sử dụng trên khung thời gian H4 vì tính chất phân dạng của thị trường và vì chúng ta có thể thấy quy mô mẫu giao dịch lớn hơn. Tôi không hoàn toàn ngạc nhiên khi thấy nó thành công trong khoảng thời gian 41 năm bởi vì bất cứ khi nào tôi vẽ hai đường trung bình động đơn giản này trên biểu đồ, tôi có thể tưởng tượng việc nhanh vượt qua chậm thường có xu hướng lớn hơn như thế nào.


Trong bài viết tiếp theo, chúng tôi sẽ tiếp tục tối ưu hóa độ dài và phương pháp để xem liệu chúng tôi có thể khám phá liệu đường trung bình động kép giao nhau của chúng tôi có thể vượt qua độ dài khác nhau hơn 200 hay không hoặc được tăng cường bằng các phương pháp khác ngoài các phương pháp đơn giản (ví dụ: hàm mũ). Khi làm như vậy, chúng tôi sẽ tìm cách tránh hai mối nguy hiểm kép là tối ưu hóa quá mức và điều chỉnh đường cong phù hợp.