
Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada prinsip crossover dua rata-rata. Strategi ini menghasilkan sinyal beli ketika SMA jangka pendek melewati SMA jangka panjang dengan menghitung rata-rata bergerak sederhana (SMA) dari dua periode yang berbeda, dan menghasilkan sinyal jual ketika SMA jangka pendek melewati SMA jangka panjang.
Prinsip inti dari strategi ini adalah memanfaatkan hubungan silang antara rata-rata bergerak dari berbagai periode untuk menangkap perubahan tren harga. Rata-rata bergerak adalah indikator teknis yang umum digunakan, yang dapat mengekstrak fluktuasi jangka pendek, mencerminkan tren harga secara keseluruhan dengan rata-rata harga selama beberapa waktu terakhir.
Strategi ini dapat secara efektif menangkap perubahan tren harga, memberikan sinyal beli dan jual kepada pedagang. Namun, kinerja strategi mungkin lebih sensitif terhadap pilihan parameter, dan dapat menghasilkan efek perdagangan dan lag yang sering terjadi ketika pasar berfluktuasi besar. Untuk lebih mengoptimalkan strategi, pertimbangkan untuk memperkenalkan indikator teknis lainnya, memilih parameter yang dioptimalkan, menambahkan kondisi filter, menyesuaikan parameter secara dinamis, dan menambahkan langkah-langkah manajemen risiko.
/*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")