
Strategi ini adalah sistem pengesanan trend yang berasaskan silang dua garis rata, menangkap trend pasaran melalui silang rata-rata bergerak jangka pendek dan jangka panjang, dan menguruskan risiko perdagangan dengan nisbah risiko-keuntungan 1: 3. Strategi ini menggunakan sasaran berhenti dan keuntungan yang tetap, sambil menggabungkan mekanisme berhenti bergerak untuk melindungi keuntungan.
Strategi ini menggunakan purata bergerak jangka pendek 74 kitaran (SMA pendek) dan purata bergerak jangka panjang 70 kitaran (SMA panjang) sebagai petunjuk utama. Apabila purata bergerak jangka pendek melintasi purata jangka panjang ke atas, sistem menghasilkan isyarat berganda; apabila purata bergerak jangka pendek melintasi garis purata jangka panjang ke bawah, sistem menghasilkan isyarat kosong.
Ini adalah strategi pengesanan trend dengan struktur yang lengkap dan logik yang jelas. Ia sesuai untuk perdagangan jangka menengah dan panjang dengan menangkap trend di seberang garisan, menggunakan pengurusan risiko dan kawalan kedudukan yang ketat. Walaupun terdapat kelemahan yang wujud seperti ketinggalan garisan, tetapi dengan arah pengoptimuman yang disyorkan, khususnya dengan memperkenalkan penyesuaian parameter dinamik dan penapisan persekitaran pasaran, kestabilan dan keuntungan strategi dijangka dapat ditingkatkan lagi.
/*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)