Chiến lược này được xây dựng dựa trên chỉ số EMA kép với mục đích nhận ra xu hướng giá và theo dõi xu hướng. Đầu tiên nó tính toán EMA trung dài và ngắn hạn và EMA ngắn hạn, và sau đó thực hiện vị trí dài khi có chéo vàng và vị trí ngắn khi có chéo chết giữa hai EMA. Trong khi đó, việc lọc cao nhất / thấp nhất cũng được giới thiệu để loại bỏ thêm các tín hiệu sai.
Các chỉ số cốt lõi của chiến lược này là hai EMA, một là ngắn hạn và một là dài hạn.
Ema1: Thời gian EMA trung và dài hạn, mặc định đến 34 ngày
Ema2: Thời gian EMA ngắn hạn, mặc định đến 13 ngày
ema_sr: EMA trung dài hạn dựa trên giá đóng cửa
highest_ema: EMA cao nhất của ema_sr, giai đoạn là ema2
lowest_ema: EMA thấp nhất của ema_sr, giai đoạn là 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ệ giữa ema_sr và highest/lowest_ema
chéo phát hiện vàng và chết chéo giữa ema_sl và ema_ysl, và do đó đạt được xu hướng theo.
Sự kết hợp của EMA kép có thể đánh giá xu hướng giá chính xác hơn. EMA trung hạn đến dài hạn lọc ra tiếng ồn ngắn hạn, trong khi EMA ngắn hạn có thể theo dõi kịp thời các biến động của xu hướng trung hạn. Việc giới thiệu EMA cao nhất / thấp nhất có thể loại bỏ thêm các tín hiệu sai và giảm các giao dịch không cần thiết.
Lợi thế lớn nhất của chiến lược này nằm ở việc xác định xu hướng chính xác của nó. EMA kép tự nó vượt trội hơn so với EMA duy nhất, SMA và các chỉ số khác để nắm bắt những thay đổi xu hướng. Và việc áp dụng highest/lowest_ema có thể lọc hiệu quả các tín hiệu sai gây ra bởi các pullback ngắn hạn, điều này rất quan trọng đối với các chiến lược theo xu hướng.
Ngoài ra, các thông số của chiến lược này rất đơn giản và dễ điều chỉnh và tối ưu hóa. Người dùng chỉ cần tập trung vào hai thông số EMA, điều này rất trực quan. Điều này cũng làm cho chiến lược dễ hiểu và sử dụng.
Rủi ro chính của chiến lược này là nó không thể xác định sự đảo ngược xu hướng. Khi giá hình thành các điều chỉnh dài hạn hoặc những bước ngoặt lớn, sự chậm trễ của EMA kép có thể dẫn đến việc bỏ lỡ các điểm vào tốt nhất.
Ngoài ra, EMA không có khả năng đáp ứng các trường hợp khẩn cấp. Chiến lược cũng có thể chịu tổn thất khi các sự kiện thiên nga đen xảy ra.
Để giảm thiểu các rủi ro trên, chúng tôi khuyên nên rút ngắn đúng thời gian của EMA trung dài đến dài hạn hoặc giới thiệu các chỉ số như MACD để đối phó với các trường hợp khẩn cấp.
Có chỗ cho việc tối ưu hóa hơn nữa chiến lược này.
Kiểm tra nhiều kết hợp các thông số EMA để tìm các thông số tối ưu;
Thêm đánh giá khối lượng để tránh phát ra tín hiệu sai khi giá dao động;
Kết hợp các đường xu hướng, kênh và các công cụ khác để đánh giá các điểm chuyển hướng xu hướng chính xác hơn.
Thông qua tối ưu hóa tham số, thêm các điều kiện lọc và các phương tiện khác, nó hứa hẹn sẽ tiếp tục cải thiện sự ổn định và lợi nhuận của chiến lược. Điều này đòi hỏi các nhà phân tích định lượng phải liên tục tiến hành kiểm tra và tối ưu hóa.
Nói chung, chiến lược này có khả năng tương đối mạnh để xác định xu hướng bằng cách lọc ra tiếng ồn với EMA kép và làm mịn đường cong giá hiệu quả. Việc giới thiệu EMA cao nhất / thấp nhất cũng tăng độ tin cậy của tín hiệu.
Tuy nhiên, chính chiến lược có một số chậm trễ trong việc xác định kịp thời sự đảo ngược xu hướng. Đây là rủi ro chính mà nó phải đối mặt và cũng là hướng chính cho các tối ưu hóa trong tương lai. Chúng tôi mong muốn tiếp tục tăng cường độ bền của chiến lược thông qua điều chỉnh tham số, lọc tín hiệu và các phương tiện khác, để nó có thể đạt đượ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)