Strategi Reversal Crossover Dual Moving Average adalah strategi perdagangan kuantitatif khas yang melacak tren. Strategi ini memanfaatkan sinyal crossover dari garis 9 hari dan garis 14 hari dalam indikator rata-rata bergerak ganda untuk membangun sinyal beli dan jual. Strategi ini membeli ketika garis 9 hari menerobos garis 14 hari dari bawah untuk membentuk salib emas, dan menjual ketika garis 9 hari menerobos garis 14 hari dari atas untuk membentuk salib kematian. Untuk menyaring sinyal palsu, strategi ini juga memperkenalkan indikator garis 50 hari untuk menentukan apakah harga menerobos.
Strategi ini terutama diperdagangkan berdasarkan sinyal golden cross dan death cross dari indikator moving average ganda. Dalam rata-rata bergerak ganda, garis 9 hari mewakili tren jangka pendek, garis 14 hari mewakili tren jangka menengah, dan persilangan mereka adalah indikator teknis yang efektif untuk menilai perubahan tren pasar. Ketika garis tren jangka pendek menembus garis tren jangka menengah dari bawah untuk membentuk salib emas, itu menunjukkan garis tren jangka pendek menguat, yang merupakan sinyal beli; ketika menembus dari atas untuk membentuk garis tren jangka pendek melemah, yang merupakan sinyal jual.
Selain itu, strategi ini juga memperkenalkan garis 50 hari untuk menyaring sinyal yang menyesatkan. Ini hanya menghasilkan pembelian ketika harga berada di atas garis 50 hari; dan hanya menghasilkan penjualan ketika harga berada di bawah garis 50 hari.
Logika inti adalah sebagai 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
Keuntungan dari strategi rata-rata bergerak ganda jelas:
Strategi rata-rata bergerak ganda juga memiliki beberapa risiko:
Untuk mengatasi risiko, optimasi seperti di bawah ini dapat dilakukan:
Strategi rata-rata bergerak ganda dapat dioptimalkan dalam beberapa aspek:
Strategi rata-rata bergerak ganda umumnya merupakan strategi menghasilkan keuntungan yang efisien. Strategi ini dapat menghasilkan keuntungan dengan mengikuti tren secara terus menerus. Pada saat yang sama, strategi ini memiliki risiko tertentu dan perlu perbaikan lebih lanjut. Dengan mengoptimalkan parameter, metode stop dan kombinasi strategi, efek dari strategi ini dapat ditingkatkan lebih lanjut.
/*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)