
Chiến lược này sử dụng đường EMA đồng bằng golden cross tạo ra tín hiệu giao dịch, tức là đường EMA nhanh tạo ra tín hiệu mua khi đi qua đường EMA chậm, đường EMA nhanh tạo ra tín hiệu bán khi đi qua đường EMA chậm, thuộc chiến lược theo dõi xu hướng điển hình. Đồng thời, chiến lược sử dụng chỉ số ATR để thiết lập điểm dừng độ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 nói chung là đơn giản và dễ sử dụng, dựa trên đường trung bình EMA để tạo tín hiệu, và có thể kiểm soát rủi ro một cách hiệu quả. Mặc dù có một số tín hiệu giả, nhưng khả năng nắm bắt xu hướng chính mạnh mẽ, thu nhập ổn định hơn, phù hợp với một trong những chiến lược cơ bản của giao dịch định lượ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)