Strategi ini adalah strategi perdagangan kuantitatif berdasarkan prinsip crossover purata bergerak berganda. Strategi ini menghasilkan isyarat beli apabila SMA jangka pendek melintasi di atas SMA jangka panjang, dan menghasilkan isyarat jual apabila SMA jangka pendek melintasi di bawah SMA jangka panjang.
Prinsip utama strategi ini adalah untuk menangkap perubahan dalam trend harga dengan menggunakan hubungan silang antara purata bergerak dari tempoh yang berbeza. purata bergerak adalah penunjuk teknikal yang biasa digunakan yang menapis turun naik jangka pendek dan mencerminkan trend harga keseluruhan dengan rata-rata harga dalam tempoh masa yang lalu. Apabila purata bergerak jangka pendek melintasi di atas purata bergerak jangka panjang, ia menunjukkan bahawa harga mungkin memulakan trend menaik, menjana isyarat beli; sebaliknya, apabila purata bergerak jangka pendek melintasi di bawah purata bergerak jangka panjang, ia menunjukkan bahawa harga mungkin memulakan trend menurun, menjana isyarat jual.
Strategi crossover purata bergerak berganda SMA adalah strategi perdagangan kuantitatif yang mudah, mudah difahami, dan sangat dapat disesuaikan. Dengan memanfaatkan hubungan crossover purata bergerak dengan tempoh yang berbeza, strategi ini dapat menangkap perubahan trend harga dengan berkesan dan memberikan isyarat beli dan jual untuk peniaga. Walau bagaimanapun, prestasi strategi mungkin sensitif terhadap pemilihan parameter, dan ia boleh menghasilkan kesan perdagangan dan kelewatan yang kerap apabila pasaran sangat tidak menentu. Untuk mengoptimumkan lagi strategi, langkah-langkah seperti memperkenalkan penunjuk teknikal lain, mengoptimumkan pemilihan parameter, menambah keadaan penapisan, menyesuaikan parameter secara dinamik, dan menggabungkan pengurusan risiko boleh dipertimbangkan. Secara keseluruhan, strategi ini boleh berfungsi sebagai salah satu strategi asas untuk perdagangan kuantitatif, tetapi perlu dioptimumkan dengan sewajarnya dan ditingkatkan mengikut situasi praktikal 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")