
Strategi ini adalah sistem pelacakan tren yang didasarkan pada crossover dua rata-rata, menangkap tren pasar melalui crossover rata-rata bergerak jangka pendek dan jangka panjang, dan mengelola risiko perdagangan dengan rasio risiko-penghasilan 1: 3. Strategi ini menggunakan target stop loss dan profit yang tetap, sekaligus menggabungkan mekanisme stop loss bergerak untuk melindungi profit.
Strategi ini menggunakan rata-rata bergerak jangka pendek 74 periode (SMA pendek) dan rata-rata bergerak jangka panjang 70 periode (SMA panjang) sebagai indikator utama. Sistem menghasilkan sinyal multitasking ketika rata-rata jangka pendek melintasi rata-rata jangka panjang ke atas; sistem menghasilkan sinyal shorting ketika rata-rata jangka pendek melintasi rata-rata jangka panjang ke bawah.
Ini adalah strategi pelacakan tren yang terstruktur, logis, dan jelas. Strategi ini dirancang untuk menangkap tren dengan cara melintasi garis lurus, menggunakan manajemen risiko dan kontrol posisi yang ketat, dan cocok untuk perdagangan jangka menengah dan panjang. Meskipun ada kekurangan yang melekat seperti ketinggalan garis lurus, tetapi dengan arah optimasi yang disarankan, terutama dengan memperkenalkan penyesuaian parameter dinamis dan penyaringan lingkungan pasar, stabilitas dan profitabilitas strategi ini diharapkan dapat ditingkatkan lebih lanjut.
/*backtest
start: 2024-02-18 00:00:00
end: 2025-02-17 00:00:00
period: 4h
basePeriod: 4h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Bitcoin Strategy by Jag", overlay=true)
// Input Parameters
shortSMALength = input.int(74, title="Short SMA Length")
longSMALength = input.int(70, title="Long SMA Length")
trailStopOffset = input.float(353, title="Trailing Stop Offset (USD)") // Trailing Stop Loss Offset in USD
tradeSize = input.float(1, title="Trade Size")
// Automatically set Take Profit as 3 times Stop Loss
fixedTakeProfit = trailStopOffset * 3
// Backtesting Date Range
startDate = timestamp(2025, 02,13, 0, 0)
endDate = timestamp(2025, 03, 31, 23, 59)
withinDateRange = true
// Indicators
shortSMA = ta.sma(close, shortSMALength)
longSMA = ta.sma(close, longSMALength)
// Crossover Conditions
longCondition = withinDateRange and ta.crossover(shortSMA, longSMA)
shortCondition = withinDateRange and ta.crossunder(shortSMA, longSMA)
// Entry Logic
if (strategy.position_size == 0) // Only allow new trades if no position is open
if (longCondition)
strategy.entry("Long", strategy.long, tradeSize)
if (shortCondition)
strategy.entry("Short", strategy.short, tradeSize)
// Exit Logic for Long Position
if (strategy.position_size > 0)
strategy.exit("Long exit", "Long", stop=strategy.position_avg_price - trailStopOffset, limit=strategy.position_avg_price + fixedTakeProfit) // Using stop and limit
// Exit Logic for Short Position
if (strategy.position_size < 0)
strategy.exit("Short Exit", "Short", stop=strategy.position_avg_price + trailStopOffset, limit=strategy.position_avg_price - fixedTakeProfit) // Using stop and limit
// Plot Moving Averages
plot(shortSMA, color=color.blue, title="Short SMA")
plot(longSMA, color=color.black, title="Long SMA")
// Visual Signals
plotshape(series=longCondition and strategy.position_size == 0, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=shortCondition and strategy.position_size == 0, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)