
Strategi ini adalah sistem perdagangan pelacakan tren yang didasarkan pada persilangan dua rata-rata, yang digabungkan dengan mekanisme manajemen risiko. Strategi ini menggunakan rata-rata bergerak sederhana (SMA) 9 periode dan 21 periode untuk menangkap tren pasar, sambil mengatur stop loss dan stop loss 1% untuk mengendalikan risiko. Sistem ini melakukan lebih banyak masuk ketika melewati rata-rata jangka panjang di atas rata-rata jangka pendek dan keluar ketika melewati rata-rata jangka panjang di bawah rata-rata jangka pendek.
Logika inti dari strategi didasarkan pada karakteristik kontinuitas tren pasar. Untuk menilai titik pergeseran tren dengan mengamati persimpangan rata-rata bergerak jangka pendek (siklus 9) dan jangka panjang (siklus 21). Ketika “Golden Fork” terbentuk di atas rata-rata jangka pendek melintasi rata-rata jangka panjang, yang menunjukkan bahwa tren naik telah dimulai, sistem mengeluarkan beberapa sinyal; Ketika “Dead Fork” terbentuk di bawah rata-rata jangka pendek melintasi rata-rata jangka panjang, yang menunjukkan bahwa tren naik mungkin berakhir, dan sistem keluar dari posisi kosong.
Strategi ini adalah sistem perdagangan pelacakan tren yang lebih lengkap dengan menangkap tren silang dua garis sejajar dan mengkombinasikan mekanisme stop loss untuk mengendalikan risiko. Meskipun mungkin menghasilkan sinyal palsu di pasar yang bergolak, stabilitas dan profitabilitas strategi dapat ditingkatkan lebih lanjut dengan optimasi parameter yang masuk akal dan penambahan indikator tambahan.
/*backtest
start: 2024-02-21 00:00:00
end: 2024-12-13 00:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"ETH_USDT"}]
*/
//@version=6
strategy("Moving Average Crossover with Stop Loss and Take Profit", overlay=true)
// Parameters for moving averages
short_length = input.int(9, title="Short Moving Average Length") // Optimized for 15-minute time frame
long_length = input.int(21, title="Long Moving Average Length") // Optimized for 15-minute time frame
// Parameters for risk management
stop_loss_percent = input.float(1.0, title="Stop Loss (%)") / 100 // 1% stop loss
take_profit_percent = input.float(1.0, title="Take Profit (%)") / 100 // 1% take profit
// Calculate moving averages
short_ma = ta.sma(close, short_length)
long_ma = ta.sma(close, long_length)
// Plot moving averages
plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.orange, title="Long MA")
// Entry and exit conditions
long_condition = ta.crossover(short_ma, long_ma) // Golden Cross
short_condition = ta.crossunder(short_ma, long_ma) // Death Cross
// Execute strategy with stop loss and take profit
if (long_condition)
strategy.entry("Long", strategy.long)
strategy.exit("Take Profit/Stop Loss", "Long", stop=strategy.position_avg_price * (1 - stop_loss_percent), limit=strategy.position_avg_price * (1 + take_profit_percent) )
if (short_condition)
strategy.close("Long") // Close long position on Death Cross
// Plot Buy/Sell Signals
plotshape(series=long_condition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=short_condition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")
// Draw 1% stop loss level as a transparent red rectangle
var float stop_loss_level = na
var float entry_price = na
if (strategy.position_size > 0) // Only update when in a trade
stop_loss_level := strategy.position_avg_price * (1 - stop_loss_percent)
entry_price := strategy.position_avg_price
// Create transparent colors
transparent_red = color.new(color.black, 90) // 90% transparency
transparent_green = color.new(color.green, 90) // 90% transparency
// Plot stop loss and entry levels conditionally
plot(strategy.position_size > 0 ? stop_loss_level : na, color=transparent_red, title="Stop Loss Level", linewidth=1)
plot(strategy.position_size > 0 ? entry_price : na, color=transparent_green, title="Entry Price", linewidth=1)
// Fill the area between stop loss and entry price conditionally
fill( plot(strategy.position_size > 0 ? stop_loss_level : na), plot(strategy.position_size > 0 ? entry_price : na), color=transparent_red)