
Strategi ini adalah strategi dagangan kuantitatif berdasarkan prinsip silang dua persamaan. Strategi ini menghasilkan isyarat beli apabila melewati SMA jangka panjang di atas SMA jangka pendek dan menghasilkan isyarat jual apabila melewati SMA jangka panjang di bawah SMA jangka pendek dengan mengira purata bergerak sederhana dalam dua kitaran yang berbeza.
Prinsip teras strategi ini adalah menggunakan hubungan silang antara purata bergerak dari pelbagai kitaran untuk menangkap perubahan trend harga. Purata bergerak adalah petunjuk teknikal yang biasa digunakan, yang dapat menghapuskan turun naik jangka pendek dengan mengambil purata harga dalam jangka masa yang lalu, untuk mencerminkan trend keseluruhan harga. Apabila harga mungkin mula naik ke atas rata-rata bergerak jangka pendek, yang menghasilkan isyarat pembelian; sebaliknya, apabila harga mungkin mula turun ke bawah rata-rata bergerak jangka panjang, yang menghasilkan isyarat jual.
Strategi penyambungan dua garis sejajar SMA adalah strategi perdagangan kuantitatif yang mudah difahami, mudah beradaptasi. Dengan memanfaatkan hubungan silang rata-rata bergerak berkala yang berbeza, strategi ini dapat menangkap perubahan trend harga dengan berkesan, memberikan isyarat membeli dan menjual kepada peniaga. Namun, prestasi strategi mungkin lebih sensitif terhadap pilihan parameter, dan mungkin menghasilkan perdagangan yang kerap dan kesan lag apabila terdapat turun naik pasaran yang besar.
/*backtest
start: 2023-06-01 00:00:00
end: 2024-06-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("SMA Crossover Strategy with Date Range and Timeframe", overlay=true, default_qty_type=strategy.fixed, default_qty_value=1, initial_capital=1000, currency=currency.USD, pyramiding=0, commission_type=strategy.commission.percent, commission_value=0)
// Define the lengths for the short and long SMAs
shortSMA_length = input.int(50, title="Short SMA Length", minval=1)
longSMA_length = input.int(200, title="Long SMA Length", minval=1)
// Define the start and end dates for the backtest
startDate = input(timestamp("2024-06-01 00:00"), title="Start Date")
endDate = input(timestamp("2024-06-05 00:00"), title="End Date")
// Define the timeframe for the SMAs
smaTimeframe = input.timeframe("D", title="SMA Timeframe")
// Request the short and long SMAs from the selected timeframe
dailyShortSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, shortSMA_length))
dailyLongSMA = request.security(syminfo.tickerid, smaTimeframe, ta.sma(close, longSMA_length))
// Plot the SMAs on the chart
plot(dailyShortSMA, color=color.blue, title="Short SMA")
plot(dailyLongSMA, color=color.red, title="Long SMA")
// Define the crossover conditions based on the selected timeframe SMAs
buyCondition = ta.crossover(dailyShortSMA, dailyLongSMA)
sellCondition = ta.crossunder(dailyShortSMA, dailyLongSMA)
// Generate buy and sell signals only if the current time is within the date range
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.close("Buy")
// Optional: Add visual buy/sell markers on the chart
plotshape(series=buyCondition and (time >= startDate and time <= endDate), title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=sellCondition and (time >= startDate and time <= endDate), title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")