
Chiến lược này được xây dựng dựa trên chỉ số EMA kép, nhằm mục đích nhận ra xu hướng giá và theo dõi xu hướng. Chiến lược này đầu tiên tính toán EMA đường dài trung bình và EMA ngắn hạn, sau đó thực hiện nhập cảnh nhiều đầu bằng cách chéo vàng của cả hai, chéo chết để thực hiện nhập cảnh không.
Chỉ số cốt lõi của chiến lược này là hai EMA, bao gồm một EMA ngắn và dài. Cụ thể, chiến lược xác định các biến sau:
ema1: chu kỳ EMA đường dài, mặc định là 34 ngày ema2: chu kỳ EMA ngắn hạn, mặc định là 13 ngày
ema_sr: EMA đường dài trung bình dựa trên giá đóng cửa highest_ema: giá EMA cao nhất của ema_sr, có chu kỳ eMa2 lowest_ema: giá EMA thấp nhất của ema_sr, có chu kỳ ema2
ema_ysl: EMA được sử dụng để tạo tín hiệu giao dịch, được tính dựa trên mối quan hệ lớn giữa ema_sr và highest/lowest_ema
crosses phát hiện các crosses vàng và dead fork của ema_sl và ema_ysl để theo dõi xu hướng.
Với sự kết hợp của hai EMA, xu hướng giá có thể được đánh giá chính xác hơn. Các EMA trung bình sẽ lọc ra tiếng ồn ngắn hạn, trong khi các EMA ngắn hạn có thể theo dõi chuyển hướng xu hướng trung bình trong thời gian. Việc đưa ra EMA cao nhất / thấp nhất có thể lọc thêm các tín hiệu giả mạo, do đó giảm giao dịch không cần thiết.
Ưu điểm lớn nhất của chiến lược này là xác định xu hướng chính xác. Chỉ số EMA kép tự nó tốt hơn các chỉ số khác như EMA đơn và SMA, có khả năng xác định xu hướng biến đổi mạnh hơn. Và việc sử dụng highest/lowest_ema có thể lọc hiệu quả các tín hiệu sai gây ra bởi rút lui ngắn hạn, điều này rất quan trọng đối với chiến lược theo dõi xu hướng.
Ngoài ra, các tham số chính sách này đơn giản, dễ điều chỉnh và tối ưu hóa. Người dùng chỉ cần chú ý đến hai tham số EMA, rất trực quan. Điều này cũng làm cho chính sách dễ hiểu và sử dụng.
Rủi ro chính của chiến lược này là không thể nhận ra sự đảo ngược xu hướng. Sự chậm trễ của cặp EMA có thể dẫn đến việc bỏ lỡ thời điểm đầu vào tốt nhất khi giá tạo ra sự điều chỉnh lâu dài hoặc biến đổi lớn.
Ngoài ra, EMA cũng không có khả năng ứng phó với các sự kiện bất ngờ. Chiến lược cũng có thể bị tổn thất khi xảy ra một sự kiện Black Swan lớn.
Để giảm thiểu các rủi ro trên, chúng tôi khuyên bạn nên giảm chiều dài EMA đường dài và trung bình một cách thích hợp, hoặc giới thiệu các chỉ số như MACD để đối phó với các sự kiện bất ngờ. Đồng thời, bạn cũng có thể thiết lập dừng lỗ để kiểm soát tổn thất tối đa.
Chiến lược này còn có thể được tối ưu hóa hơn nữa.
Kiểm tra nhiều hơn các kết hợp EMA để tìm ra các tham số tốt nhất;
Tăng khả năng đánh giá khối lượng giao dịch, tránh phát ra tín hiệu sai lầm khi giá cả dao động;
Kết hợp với các công cụ như đường xu hướng, kênh, để xác định chính xác hơn các điểm chuyển hướng.
Thông qua các phương tiện như tối ưu hóa tham số, tăng điều kiện lọc, dự kiến sẽ nâng cao hơn nữa sự ổn định và lợi nhuận của chiến lược. Điều này đòi hỏi người thử nghiệm định lượng phải liên tục kiểm tra lại và tối ưu hóa.
Chiến lược này có khả năng nhận biết xu hướng mạnh mẽ hơn, lọc tiếng ồn và làm mịn đường giá hiệu quả thông qua các cặp EMA. Việc đưa ra EMA cao nhất / thấp nhất cũng tăng cường độ tin cậy của tín hiệu. Từ kết quả kiểm tra lại, chiến lược có thể có được lợi nhuận ổn định tốt hơn.
Tuy nhiên, chính chiến lược này đã bị chậm trễ và không thể nhận ra được xu hướng đảo ngược kịp thời. Đây là rủi ro chính đối với chiến lược này và là hướng tập trung tối ưu hóa trong tương lai. Chúng tôi mong muốn tăng cường tính bền vững của chiến lược thông qua các biện pháp như điều chỉnh tham số, lọc tín hiệu, để nó có thể thu được lợi nhuận ổn định trong nhiều môi trường thị trường hơn.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
// Modified from kivancfr3762's A2MK script
strategy("EMA STRATEGY", overlay=true)
ema2=input(13, "EMA2 Length")
ema1=input(34, "EMA1 Length")
ema_sr = ema((max(close[1], high) + min(close[1], low)) / 2, ema1)
highest_ema = ema(highest(ema_sr, 3), ema2)
lowest_ema = ema(lowest(ema_sr, 3), ema2)
k1 = ema_sr > highest_ema
k2 = ema_sr < lowest_ema
ema_ysl = iff(k1, lowest_ema, highest_ema)
longCondition = crossover(ema_ysl, ema_sr)
if (longCondition)
strategy.entry("Short", strategy.short)
shortCondition = crossunder(ema_ysl, ema_sr)
if (shortCondition)
strategy.entry("Long", strategy.long)