
Strategi ini adalah sistem perdagangan otomatis yang didasarkan pada teori penembusan dua rata-rata, yang digabungkan dengan fungsi manajemen risiko. Inti strategi menggunakan rata-rata pergerakan indeks 21 siklus dan 50 siklus (EMA) sebagai indikator sinyal, menilai perubahan tren pasar melalui persilangan rata-rata dan melakukan perdagangan secara otomatis. Sistem ini mengintegrasikan fungsi stop loss (Stop Loss) dan stop profit (Take Profit), yang dapat mengontrol risiko dan target keuntungan setiap perdagangan secara efektif.
Logika inti dari strategi ini didasarkan pada teori persilangan rata-rata klasik dalam analisis teknis. Ketika periode pendek (21 hari) EMA naik melintasi periode panjang (50 hari) EMA, sistem mengidentifikasi sebagai sinyal bullish dan membuka posisi lebih banyak; Ketika periode pendek EMA turun melintasi periode panjang EMA, sistem mengidentifikasi sebagai sinyal bearish dan membuka posisi kosong.
Ini adalah strategi perdagangan otomatis yang dirancang secara rasional dan logis. Dengan menggabungkan sinyal silang linier dan manajemen risiko yang ketat, strategi ini memberikan kerangka teknis yang andal untuk menangkap peluang tren pasar sambil menjamin keamanan perdagangan. Meskipun ada ruang untuk pengoptimalan tertentu, infrastruktur strategi ini utuh, cocok untuk pengembangan dan penyempurnaan lebih lanjut untuk modul dasar sistem perdagangan kuantitatif.
/*backtest
start: 2024-10-01 00:00:00
end: 2024-10-31 23:59:59
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover Strategy with SL & TP", overlay=true, default_qty_type=strategy.percent_of_equity)
// Input settings for SL and TP (ticks)
slTicks = input.int(40, title="Stop Loss (ticks)", minval=1)
tpTicks = input.int(80, title="Take Profit (ticks)", minval=1)
// Define EMA periods
ema21 = ta.ema(close, 21)
ema50 = ta.ema(close, 50)
// Detect crossovers
bullishCross = ta.crossover(ema21, ema50)
bearishCross = ta.crossunder(ema21, ema50)
// Plot the EMAs
plot(ema21, color=color.green, linewidth=2, title="EMA 21")
plot(ema50, color=color.red, linewidth=2, title="EMA 50")
// Calculate tick size in points
var float tickSize = syminfo.mintick
// Calculate stop loss and take profit prices for long and short positions
longSL = close - slTicks * tickSize
longTP = close + tpTicks * tickSize
shortSL = close + slTicks * tickSize
shortTP = close - tpTicks * tickSize
// Execute trades on crossover signals
if (bullishCross)
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", "Long", stop=longSL, limit=longTP)
if (bearishCross)
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", "Short", stop=shortSL, limit=shortTP)
// Plot arrows on crossovers
plotshape(series=bullishCross, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY", size=size.small)
plotshape(series=bearishCross, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL", size=size.small)
// Optional: Background coloring
bgcolor(bullishCross ? color.new(color.green, 90) : na, title="Bullish Background")
bgcolor(bearishCross ? color.new(color.red, 90) : na, title="Bearish Background")