Strategi ini adalah strategi perdagangan kuantitatif yang didasarkan pada prinsip crossover rata-rata bergerak ganda. Strategi ini menghasilkan sinyal beli ketika SMA jangka pendek melintasi SMA jangka panjang, dan menghasilkan sinyal jual ketika SMA jangka pendek melintasi SMA jangka panjang.
Prinsip inti dari strategi ini adalah untuk menangkap perubahan tren harga dengan memanfaatkan hubungan silang antara rata-rata bergerak dari periode yang berbeda. Rata-rata bergerak adalah indikator teknis yang umum digunakan yang menyaring fluktuasi jangka pendek dan mencerminkan tren harga keseluruhan dengan rata-rata harga selama periode waktu yang lalu. Ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata bergerak jangka panjang, itu menunjukkan bahwa harga dapat memulai tren naik, menghasilkan sinyal beli; sebaliknya, ketika rata-rata bergerak jangka pendek melintasi di bawah rata-rata bergerak jangka panjang, itu menunjukkan bahwa harga dapat memulai tren menurun, menghasilkan sinyal jual.
Strategi crossover SMA dual moving average adalah strategi perdagangan kuantitatif yang sederhana, mudah dimengerti, dan sangat mudah beradaptasi. Dengan memanfaatkan hubungan crossover moving average dengan periode yang berbeda, strategi dapat secara efektif menangkap perubahan tren harga dan memberikan sinyal beli dan jual bagi pedagang. Namun, kinerja strategi dapat sensitif terhadap pemilihan parameter, dan dapat menghasilkan efek perdagangan dan lag yang sering terjadi ketika pasar sangat volatile. Untuk lebih mengoptimalkan strategi, langkah-langkah seperti memperkenalkan indikator teknis lainnya, mengoptimalkan pemilihan parameter, menambahkan kondisi penyaringan, menyesuaikan parameter secara dinamis, dan menggabungkan manajemen risiko dapat dipertimbangkan. Secara keseluruhan, strategi ini dapat berfungsi sebagai salah satu strategi dasar untuk perdagangan kuantitatif, tetapi perlu dioptimalkan dan ditingkatkan secara tepat sesuai dengan situasi praktis tertentu dalam aplikasi.
/*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")