Chiến lược giao cắt đường trung bình động đa khung thời gian Mondrian
Chiến lược này chủ yếu sử dụng giao cắt đường MA đa khung thời gian (MTF) để xác định hướng xu hướng, kết hợp với các điều kiện lọc cụ thể để chọn mua (long) hoặc bán (short) khi hướng xu hướng rõ ràng, thuộc loại chiến lược theo xu hướng (trend following).
Nguyên lý chiến lược
-
Nhập khoảng thời gian backtest do người dùng tùy chỉnh.
-
Nhập tùy chọn sử dụng nến Heikin-Ashi (tổng hợp từ nến tăng/giảm), mặc định là có sử dụng.
-
Lần lượt xác định đường MA chậm, đường MA nhanh và đường MA tùy chọn thứ ba sử dụng khi xu hướng tăng.
-
Với mỗi đường MA có thể tùy chỉnh loại MA, chu kỳ thời gian và tham số.
-
Khi đường MA nhanh cắt lên trên đường MA chậm hình thành tín hiệu mua, cắt xuống dưới hình thành tín hiệu bán.
-
Có thể chọn sử dụng đường MA thứ ba làm bộ lọc hướng tăng, chỉ khi giá đóng cửa vượt qua MA thứ ba mới phát sinh tín hiệu mua.
-
Sử dụng module strategy.entry để thực hiện giao dịch tự động.
-
Có thể tùy chỉnh số lượng giao dịch mỗi lô hoặc sử dụng khối lượng cố định.
Ưu điểm chiến lược
-
Sử dụng kiến trúc MTF, các đường MA khác nhau có thể sử dụng các chu kỳ khác nhau, nhận diện đặc điểm xu hướng trên nhiều khung thời gian.
-
Có thể tùy chỉnh loại MA, có thể chọn MA trơn để tăng độ ổn định, hoặc MA phản ứng nhanh.
-
Kết hợp nến Heikin-Ashi có thể lọc các phá vỡ giả.
-
Có thể thêm đường MA thứ ba làm bộ lọc hướng tăng, tránh giao dịch trong thị trường đi ngang.
-
Có thể linh hoạt điều chỉnh tham số chu kỳ MA, phù hợp với các điều kiện thị trường khác nhau.
-
Sử dụng module strategy.entry có thể tự động đặt lệnh, không cần can thiệp thủ công.
-
Hỗ trợ tối ưu hóa tham số khi backtest, tìm tổ hợp tham số tốt nhất.
Rủi ro chiến lược
-
Chiến lược giao cắt MA nhạy cảm với tín hiệu phá vỡ giả, có thể tạo ra giao dịch không cần thiết. Có thể điều chỉnh chu kỳ MA hoặc thêm điều kiện lọc để giảm rủi ro.
-
Trong thị trường đi ngang, giao cắt MA diễn ra thường xuyên, dễ gây thua lỗ. Có thể mở rộng khoảng cách MA hoặc kéo dài chu kỳ MA để giảm rủi ro.
-
Khối lượng cố định không kiểm soát được rủi ro, có thể cân nhắc đặt khối lượng theo phần trăm tài khoản.
-
Phí giao dịch và trượt giá cũng ảnh hưởng đến khả năng sinh lời của chiến lược. Có thể điều chỉnh tham số phù hợp để đảm bảo tỷ lệ thắng đủ cao.
Hướng tối ưu hóa
-
Thử nghiệm các loại MA khác nhau, tìm tổ hợp tham số tốt nhất. MA trơn có thể tăng độ ổn định, MA nhanh có thể tăng độ nhạy.
-
Tối ưu hóa tham số MA, kéo dài chu kỳ phù hợp giúp nhận diện xu hướng, rút ngắn chu kỳ tăng độ nhạy. Tìm điểm cân bằng tốt nhất.
-
Tối ưu hóa điều kiện mở lệnh, có thể tăng cường lọc hướng tăng, tránh mở lệnh trong thị trường đi ngang.
-
Có thể tối ưu hóa tham số chu kỳ MA cho từng sản phẩm cụ thể, tìm tham số phù hợp nhất với môi trường giao dịch của sản phẩm đó.
-
Có thể cân nhắc kết hợp các chỉ báo khác làm bộ lọc để tăng độ ổn định của chiến lược, ví dụ chỉ báo khối lượng giao dịch.
-
Tiến hành tối ưu hóa tổ hợp tham số dựa trên dữ liệu backtest, tìm tổ hợp tham số tốt nhất để nâng cao hiệu quả chiến lược.
Tổng kết
Chiến lược giao cắt MA đa khung thời gian nhìn chung thuộc loại chiến lược theo xu hướng khá phổ biến. Ưu điểm là triển khai đơn giản, điều chỉnh tham số linh hoạt, có thể thích ứng với các điều kiện thị trường khác nhau. Tuy nhiên cũng tồn tại rủi ro tín hiệu giả nhất định. Có thể cải thiện thông qua tối ưu hóa tham số và thêm điều kiện lọc phụ trợ, tìm tổ hợp tham số tốt nhất trong backtest. Chiến lược này phù hợp hơn với thị trường có xu hướng rõ ràng, nên thận trọng sử dụng hoặc tạm dừng giao dịch trong thị trường đi ngang. Nhìn chung, là một chiến lược theo xu hướng khá truyền thống, chiến lược giao cắt MA đa khung thời gian vẫn đáng được nghiên cứu và ứng dụng chuyên sâu.
/*backtest
start: 2023-11-08 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(shorttitle="MZ MA Cross",title="MA MTF Cross Strategy", overlay=true, calc_on_order_fills=false, calc_on_every_tick=false, default_qty_type=strategy.fixed, default_qty_value=5,commission_value=0.1)
timeFrameticker = input('D',type=input.resolution, title="Chart Timeframe")- 1

