Strategi pembalikan silang purata bergerak berganda adalah strategi perdagangan kuantitatif biasa yang menjejaki trend. Strategi ini menggunakan isyarat silang dari garis 9 hari dan garis 14 hari dalam penunjuk purata bergerak berganda untuk membina isyarat beli dan jual. Ia membeli apabila garis 9 hari menembusi garis 14 hari dari bawah untuk membentuk salib emas, dan menjual apabila garis 9 hari menembusi garis 14 hari dari atas untuk membentuk salib kematian. Untuk menapis isyarat palsu, strategi ini juga memperkenalkan penunjuk garis 50 hari untuk menentukan sama ada harga menembusi.
Strategi ini terutamanya berdagang berdasarkan isyarat salib emas dan salib kematian dari penunjuk purata bergerak berganda. Dalam purata bergerak berganda, garis 9 hari mewakili trend jangka pendek, garis 14 hari mewakili trend jangka sederhana, dan persilangan mereka adalah penunjuk teknikal yang berkesan untuk menilai perubahan dalam trend pasaran. Apabila garis trend jangka pendek menembusi garis trend jangka sederhana dari bawah untuk membentuk salib emas, ia menunjukkan garis trend jangka pendek menguat, yang merupakan isyarat beli; apabila ia menembusi dari atas untuk membentuk salib kematian, ia menunjukkan garis trend jangka pendek melemah, yang merupakan isyarat jual.
Di samping itu, strategi ini juga memperkenalkan garis 50 hari untuk menapis isyarat yang mengelirukan. Ia hanya menghasilkan pembelian apabila harga berada di atas garis 50 hari; dan hanya menghasilkan jual apabila harga berada di bawah garis 50 hari. Baris 50 hari mewakili trend jangka menengah hingga panjang. Hanya apabila trend jangka menengah hingga panjang bersetuju, operasi jangka pendek dijalankan.
Logika teras adalah seperti berikut:
// Buy condition: 9-day line crosses above 14-day line and close price is above 50-day line
buyCondition = ta.crossover(sma9, sma14) and close > sma50
// Sell condition: 9-day line crosses below 14-day line and close price is below 50-day line
sellCondition = ta.crossunder(sma9, sma14) and close < sma50
Kelebihan strategi purata bergerak berganda adalah jelas:
Strategi purata bergerak berganda juga mempunyai beberapa risiko:
Untuk menangani risiko, pengoptimuman seperti di bawah boleh dibuat:
Strategi purata bergerak berganda boleh dioptimumkan dalam beberapa aspek:
Strategi purata bergerak berganda umumnya merupakan strategi menghasilkan keuntungan yang cekap. Ia boleh mendapat keuntungan dengan mengikuti trend secara berterusan. Pada masa yang sama, ia mempunyai risiko tertentu dan memerlukan penambahbaikan lanjut. Dengan mengoptimumkan parameter, kaedah berhenti dan kombinasi strategi, kesan strategi ini dapat ditingkatkan lagi.
/*backtest start: 2022-11-24 00:00:00 end: 2023-11-30 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("smaCrossReverse", shorttitle="smaCrossReverse", overlay=true) // Define the length for the SMAs sma9Length = input(9, title="SMA 9 Length") sma14Length = input(14, title="SMA 14 Length") sma50Length = input(50, title="SMA 50 Length") // Add input for SMA 50 // Calculate SMAs sma9 = ta.sma(close, sma9Length) sma14 = ta.sma(close, sma14Length) sma50 = ta.sma(close, sma50Length) // Calculate SMA 50 // Buy condition: SMA 9 crosses above SMA 14 and current price is above SMA 50 buyCondition = ta.crossover(sma9, sma14) and close > sma50 // Sell condition: SMA 9 crosses below SMA 14 and current price is below SMA 50 sellCondition = ta.crossunder(sma9, sma14) and close < sma50 // Track the time since position was opened var float timeElapsed = na if (buyCondition) timeElapsed := 0 else timeElapsed := na(timeElapsed[1]) ? timeElapsed[1] : timeElapsed[1] + 1 // Close the buy position after 5 minutes if (timeElapsed >= 5) strategy.close("Buy") // Track the time since position was opened var float timeElapsedSell = na if (sellCondition) timeElapsedSell := 0 else timeElapsedSell := na(timeElapsedSell[1]) ? timeElapsedSell[1] : timeElapsedSell[1] + 1 // Close the sell position after 5 minutes if (timeElapsedSell >= 5) strategy.close("Sell") // Plot the SMAs on the chart plot(sma9, title="SMA 9", color=color.blue) plot(sma14, title="SMA 14", color=color.red) plot(sma50, title="SMA 50", color=color.green) // Plot SMA 50 on the chart // Strategy entry and exit conditions using if statements if (buyCondition) strategy.entry("Buy", strategy.long) if (sellCondition) strategy.entry("Sell", strategy.short)