
Strategi ini adalah sistem perdagangan trend-tracking yang berasaskan dua persimpangan rata-rata, yang digabungkan dengan mekanisme pengurusan risiko. Strategi ini menggunakan purata bergerak sederhana ((SMA) 9 dan 21 kitaran untuk menangkap trend pasaran, sambil menetapkan stop loss dan berhenti 1% untuk mengawal risiko. Sistem ini melakukan lebih banyak masuk ketika melintasi garis rata-rata jangka panjang pada garis rata-rata jangka pendek, dan keluar ketika melintasi garis rata-rata jangka panjang di bawah garis rata-rata jangka pendek.
Logik teras strategi didasarkan pada ciri-ciri kesinambungan trend pasaran. Dengan melihat persilangan rata-rata bergerak jangka pendek (siklus 9) dan jangka panjang (siklus 21) untuk menilai titik peralihan trend. Apabila “Gold Fork” terbentuk di atas rata-rata jangka pendek yang melintasi garis rata-rata jangka panjang, yang menunjukkan permulaan trend menaik, sistem mengeluarkan banyak isyarat; apabila “Dead Fork” terbentuk di bawah rata-rata jangka pendek yang melintasi garis rata-rata jangka panjang, yang menunjukkan kemungkinan berakhirnya trend menaik, sistem keluar dari kedudukan kosong.
Strategi ini adalah sistem perdagangan yang lebih lengkap untuk mengikuti trend dengan menangkap trend silang dua garis sejajar, dan menggabungkan mekanisme stop loss untuk mengawal risiko. Walaupun ia mungkin menghasilkan isyarat palsu di pasaran yang bergolak, dengan pengoptimuman parameter yang munasabah dan peningkatan indikator tambahan, anda dapat meningkatkan lagi kestabilan dan keuntungan strategi.
/*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)