Ini adalah strategi perdagangan yang didasarkan pada sinyal crossover rata-rata bergerak. Ini menggunakan garis rata-rata bergerak 45 hari sebagai indikator teknis utama dan menghasilkan sinyal beli dan jual ketika harga menembus garis rata-rata bergerak.
Setelah posisi dipegang selama 8 hari, sinyal jual dihasilkan. Setelah itu, jika harga naik dan melanggar di atas garis rata-rata bergerak 45 hari lagi, sinyal beli baru akan dipicu, dan seterusnya.
Prinsip logika khusus adalah:
Hal di atas merupakan logika perdagangan inti dari strategi ini.
Strategi ini memiliki keuntungan berikut:
Ada beberapa risiko dengan strategi ini:
Solusi:
Bidang utama peningkatan adalah:
Optimalkan parameter MA untuk menemukan kombinasi terbaik, misalnya MA 15 hari, 30 hari, 60 hari.
Optimalkan periode penyimpanan untuk menentukan durasi optimal, misalnya 5 hari, 10 hari, 15 hari.
Tambahkan trailing stops untuk melacak tren dan mengendalikan risiko, misalnya trialing stops atau ATR stops.
Tambahkan filter menggunakan indikator lain seperti MACD, KDJ untuk mengurangi sinyal palsu.
Memperbaiki aturan re-entry untuk mencegah over-trading, misalnya memberlakukan periode pendinginan.
Efektivitas pengujian di pasar dan instrumen yang berbeda. Parameter perlu disesuaikan untuk pasar yang berbeda.
Singkatnya, strategi crossover MA ini adalah sistem trend berikut yang sederhana dan praktis. Ini memanfaatkan kemampuan pelacakan tren MA dan menggabungkan price breakout untuk menghasilkan sinyal perdagangan. Pro adalah mudah diterapkan sementara kontra adalah whipsaws sesekali. Strategi dapat ditingkatkan lebih lanjut melalui optimasi parameter dan menambahkan indikator lain sebagai filter.
/*backtest start: 2023-01-16 00:00:00 end: 2024-01-22 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average Crossover Strategy", overlay=true) // Calculate the 45-day moving average ma_length = 45 ma = ta.sma(close, ma_length) // Track position entry and entry bar var bool in_long_position = na var int entry_bar = na var int exit_bar = na // Entry condition: Close price crosses above the 45-day moving average to enter the position if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] < ma[1]) in_long_position := true entry_bar := bar_index // Exit condition: Close the position after holding for 8 trading days if (in_long_position and bar_index - entry_bar >= 8) in_long_position := false exit_bar := bar_index // Re-entry condition: Wait for price to cross over the 45-day moving average again if (not in_long_position and ta.crossover(close, ma) and not na(ma[1]) and close > ma and close[1] > ma[1] and (na(exit_bar) or bar_index - exit_bar >= 8)) in_long_position := true entry_bar := bar_index // Execute long entry and exit if (in_long_position) strategy.entry("Long", strategy.long) if (not in_long_position) strategy.close("Long")