Chiến lược này sử dụng đường chéo vàng EMA để tạo ra tín hiệu giao dịch, nghĩa là tín hiệu mua được tạo ra khi đường EMA nhanh vượt qua trên đường EMA chậm, và tín hiệu bán được tạo ra khi đường EMA nhanh vượt qua dưới đường EMA chậm. Nó thuộc về một chiến lược theo xu hướng điển hình. Đồng thời, chiến lược sử dụng chỉ số ATR để thiết lập một stop loss động để kiểm soát rủi ro trong khi đảm bảo lợi nhuận.
Giải pháp:
Chiến lược này tương đối đơn giản và dễ sử dụng. Nó tạo ra các tín hiệu dựa trên đường chéo EMA, theo xu hướng, và sử dụng ATR trailing stop loss để kiểm soát rủi ro một cách hiệu quả. Mặc dù có thể có một số tín hiệu sai, nó có khả năng mạnh mẽ trong việc nắm bắt xu hướng chính và lợi nhuận tương đối ổn định. Nó phù hợp như một chiến lược giao dịch định lượng cơ bản. Ngoài ra còn có tiềm năng cải tiến lớn thông qua tối ưu hóa tham số và mở rộng chức năng.
/*backtest start: 2022-12-04 00:00:00 end: 2023-12-10 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © byee322 /// This strategy uses the EMA to generate buy and sell signals with a 1.5x ATR stop loss //@version=5 strategy("EMA Strategy with ATR Stop Loss", overlay=true) // Define the EMA lengths as input parameters emaLength1 = input(13, "EMA Length 1") emaLength2 = input(48, "EMA Length 2") // Define the moving averages ema1 = ta.ema(close, emaLength1) ema2 = ta.ema(close, emaLength2) // Buy signal: EMA 1 crosses above EMA 2 buy = ta.crossover(ema1, ema2) // Sell signal: EMA 1 crosses below EMA 2 sell = ta.crossunder(ema1, ema2) // Define the state variable state = 0 state := buy ? 1 : sell ? -1 : nz(state[1]) // Change the color of the candles color = state == 1 ? color.green : state == -1 ? color.red : na // Plot the colored candles plotcandle(open, high, low, close, color=color) // Plot the signals on the chart with text labels plotshape(buy, style=shape.triangleup, color=color.new(color.green, 50), location=location.belowbar, text="Buy") plotshape(sell, style=shape.triangledown, color=color.new(color.red, 50), location=location.abovebar, text="Sell") // Calculate the ATR atrVal = ta.atr(14) // Calculate the stop loss level for buy stopLossBuy = buy ? close[1] - 1.5 * atrVal : na // Calculate the stop loss level for sell stopLossSell = sell ? close[1] + 1.5 * atrVal : na // Plot the stop loss level for buy plot(stopLossBuy, color=color.new(color.green, 50), linewidth=3) // Plot the stop loss level for sell plot(stopLossSell, color=color.new(color.red, 50), linewidth=3) if buy strategy.entry("Enter Long", strategy.long) else if sell strategy.entry("Enter Short", strategy.short)