Strategi pelacakan rata-rata bergerak adalah strategi yang mengikuti tren berdasarkan rata-rata bergerak sederhana. Ini menggunakan rata-rata bergerak sederhana 200 hari untuk menentukan arah tren harga. Ketika harga melintasi di atas rata-rata bergerak, itu panjang. Ketika harga melintasi di bawah rata-rata bergerak, itu pendek. Strategi ini melacak tren untuk keuntungan.
Strategi ini didasarkan pada prinsip-prinsip berikut:
Strategi ini melacak tren dengan bergerak arah rata-rata dan membuat perdagangan terbalik ketika MA crossover terjadi, untuk mendapatkan keuntungan dari tren.
Strategi ini memiliki keuntungan berikut:
Ada juga beberapa risiko:
Risiko dapat ditangani melalui optimasi berikut:
Strategi ini dapat dioptimalkan lebih lanjut dalam aspek berikut:
Mengoptimalkan parameter periode MA menggunakan metode seperti Walk Forward Analysis untuk menemukan parameter optimal.
Tambahkan MA jangka pendek untuk melacak tren jangka panjang dan jangka pendek.
Menggabungkan indikator tren seperti MACD untuk meningkatkan identifikasi pembalikan tren.
Tambahkan mekanisme stop loss seperti trailing stop loss untuk mengendalikan kerugian perdagangan tunggal.
Uji ketahanan pada produk dan periode waktu yang berbeda.
Gunakan pembelajaran mesin untuk optimasi adaptif parameter.
Strategi pelacakan rata-rata bergerak adalah strategi yang sederhana dan praktis mengikuti tren. Strategi ini memiliki logika yang jelas dan mudah diterapkan untuk menangkap tren. Tetapi juga memiliki beberapa kelemahan seperti tidak sensitif terhadap koreksi jangka pendek dan kontrol risiko yang lemah. Kita dapat mengoptimalkan strategi dari berbagai aspek untuk membuatnya lebih kuat, lebih parameter dan dengan manajemen risiko yang lebih kuat. Secara keseluruhan, strategi pelacakan rata-rata bergerak memiliki nilai aplikasi yang baik dan merupakan konsep perdagangan tren penting dalam perdagangan kuantitatif.
/*backtest start: 2023-09-19 00:00:00 end: 2023-10-19 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA X 200 BF", overlay=true, initial_capital=10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_type=strategy.commission.percent, commission_value=0.0) /////////////// Time Frame /////////////// testStartYear = input(2012, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(1, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay, 0, 0) testStopYear = input(2019, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(31, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay, 0, 0) testPeriod() => true ///////////// MA 200 ///////////// slowMA = sma(close, input(200)) /////////////// Strategy /////////////// long = close > slowMA short = close < slowMA last_long = 0.0 last_short = 0.0 last_long := long ? time : nz(last_long[1]) last_short := short ? time : nz(last_short[1]) long_signal = crossover(last_long, last_short) short_signal = crossover(last_short, last_long) /////////////// Execution /////////////// if testPeriod() strategy.entry("Long Entry", strategy.long, when=long_signal) strategy.entry("Short Entry", strategy.short, when=short_signal) strategy.exit("Long Ex", "Long Entry") strategy.exit("Short Ex", "Short Entry") /////////////// Plotting /////////////// plot(slowMA, color = long ? color.lime : color.red, linewidth=2) bgcolor(strategy.position_size > 0 ? color.lime : strategy.position_size < 0 ? color.red : color.white, transp=80) bgcolor(long_signal ? color.lime : short_signal ? color.red : na, transp=30)