Chiến lược này sử dụng trung bình di chuyển nhanh và chậm để xác định và theo dõi xu hướng. Nó tạo ra tín hiệu mua khi đường nhanh vượt qua đường chậm và bán tín hiệu khi đường nhanh vượt qua đường chậm. Chiến lược này phù hợp để theo dõi xu hướng trung và dài hạn và lọc tiếng ồn thị trường hiệu quả.
Những lợi thế của chiến lược này bao gồm:
Một số rủi ro cũng tồn tại:
Một số hướng tối ưu hóa:
Chiến lược này xây dựng một hệ thống giao dịch dựa trên đường chéo EMA kép, sử dụng các mối quan hệ EMA nhanh và chậm để xác định xu hướng thị trường. Việc tạo tín hiệu đơn giản và rõ ràng. Nó lọc một số tiếng ồn và đi cùng với xu hướng, phù hợp với giao dịch xu hướng trung hạn đến dài hạn. Có chỗ để cải thiện tính phổ quát và hiệu quả thông qua tối ưu hóa và kiểm soát rủi ro đa chỉ số.
/*backtest start: 2023-01-21 00:00:00 end: 2024-01-21 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("EMA Strategy v2", shorttitle = "EMA Strategy v2", overlay=true, pyramiding = 3,default_qty_type = strategy.percent_of_equity, default_qty_value = 10) // === Inputs === // short ma maFastSource = input(defval = close, title = "Fast MA Source") maFastLength = input(defval = 30, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = close, title = "Slow MA Source") maSlowLength = input(defval = 100, title = "Slow MA Period", minval = 1) // invert trade direction tradeInvert = input(defval = false, title = "Invert Trade Direction?") // risk management useStop = input(defval = true, title = "Use Initial Stop Loss?") slPoints = input(defval = 0, title = "Initial Stop Loss Points", minval = 1) useTS = input(defval = true, title = "Use Trailing Stop?") tslPoints = input(defval = 0, title = "Trail Points", minval = 1) useTSO = input(defval = false, title = "Use Offset For Trailing Stop?") tslOffset = input(defval = 0, title = "Trail Offset Points", minval = 1) // === Vars and Series === fastMA = ema(maFastSource, maFastLength) slowMA = ema(maSlowSource, maSlowLength) plot(fastMA, color=blue) plot(slowMA, color=purple) goLong() => crossover(fastMA, slowMA) killLong() => crossunder(fastMA, slowMA) strategy.entry("Buy", strategy.long, when = goLong()) strategy.close("Buy", when = killLong()) // Shorting if using goShort() => crossunder (fastMA, slowMA) killShort() => crossover(fastMA, slowMA) //strategy.entry("Sell", strategy.short, when = goShort()) //strategy.close("Sell", when = killShort()) if (useStop) strategy.exit("XLS", from_entry ="Buy", stop = strategy.position_avg_price / 1.08 ) strategy.exit("XSS", from_entry ="Sell", stop = strategy.position_avg_price * 1.58)