
Strategi ini adalah sistem perdagangan untuk melacak tren berdasarkan moving average multi-indeks (EMA) dan amplitudo fluktuasi yang sebenarnya (ATR). Strategi ini menangkap tren pasar melalui kombinasi kolaboratif dari tiga EMA 20 siklus, 50 siklus dan 100 siklus, dan menggunakan ATR untuk manajemen risiko dan pengaturan target keuntungan yang dinamis. Metode ini menjamin sistematisitas perdagangan dan mengontrol risiko secara dinamis.
Logika inti dari strategi ini didasarkan pada interaksi antara harga dan beberapa EMA. Secara khusus:
Strategi ini menggunakan kombinasi dari sistem multi-linear dan ATR untuk membangun sistem perdagangan yang memiliki fitur pelacakan tren dan operasi band. Keunggulan strategi ini adalah kekuatan sistematis dan kontrol risiko, tetapi dalam penerapan praktis, perlu memperhatikan adaptasi lingkungan pasar dan melakukan optimasi yang ditargetkan sesuai dengan situasi aktual. Dengan pengaturan parameter yang masuk akal dan kontrol risiko yang ketat, strategi ini diharapkan untuk mencapai efek perdagangan yang stabil di sebagian besar lingkungan pasar.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=6
strategy("EMA Swing Strategy with ATR", overlay=true)
// Inputs
emaShort = input.int(20, "Short EMA")
emaMid = input.int(50, "Mid EMA")
emaLong = input.int(100, "Long EMA")
rrRatio = input.float(1.5, "Risk-Reward Ratio")
contracts = input.int(5, "Number of Contracts")
// Calculations
ema20 = ta.ema(close, emaShort)
ema50 = ta.ema(close, emaMid)
ema100 = ta.ema(close, emaLong)
atr = ta.atr(14)
// Conditions
longCondition = ta.crossover(close, ema20) and close > ema50
shortCondition = ta.crossunder(close, ema20) and close < ema50
// Variables for trades
var float entryPrice = na
var float stopLoss = na
var float takeProfit = na
// Long Trades
if (longCondition)
entryPrice := close
stopLoss := close - atr
takeProfit := close + atr * rrRatio
strategy.entry("Long", strategy.long, contracts)
strategy.exit("Exit Long", from_entry="Long", stop=stopLoss, limit=takeProfit)
// Short Trades
if (shortCondition)
entryPrice := close
stopLoss := close + atr
takeProfit := close - atr * rrRatio
strategy.entry("Short", strategy.short, contracts)
strategy.exit("Exit Short", from_entry="Short", stop=stopLoss, limit=takeProfit)
// Plot EMAs
plot(ema20, color=color.green, title="EMA 20")
plot(ema50, color=color.red, title="EMA 50")
plot(ema100, color=color.white, title="EMA 100")
// Visualization for Entries
plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Long Entry")
plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Short Entry")