
Strategi pelacakan rata-rata bergerak adalah strategi pelacakan tren yang didasarkan pada rata-rata bergerak sederhana. Strategi ini menggunakan rata-rata bergerak sederhana dengan panjang 200 hari untuk menentukan arah tren harga, melakukan lebih banyak ketika harga melewati rata-rata bergerak di atas, dan melakukan celah ketika harga melewati rata-rata bergerak di bawah, untuk mencapai pelacakan tren.
Strategi ini didasarkan pada prinsip-prinsip berikut:
Strategi ini digunakan untuk menentukan arah tren melalui moving averages dan melakukan reversal pada saat equity berbalik, sehingga menghasilkan keuntungan dari trend.
Strategi ini memiliki keuntungan sebagai berikut:
Strategi ini juga memiliki beberapa risiko:
Ada beberapa hal yang dapat dioptimalkan dan ditingkatkan untuk mengatasi risiko:
Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:
Mengoptimalkan parameter periodik dari moving average, mencari kombinasi parameter yang optimal. Metode pengoptimalan parameter seperti Walk Forward Analysis dapat digunakan.
Menambahkan rata-rata bergerak jangka pendek untuk membentuk strategi garis rata-rata ganda, sambil melacak tren jangka pendek.
Menggabungkan indikator tren, seperti MACD dan lain-lain, meningkatkan kemampuan untuk mengidentifikasi perubahan tren.
Menambahkan mekanisme stop loss, seperti tracking stop loss, pending stop loss, dan lain-lain, untuk mengendalikan kerugian tunggal.
Melakukan pengujian replikasi, strategi pengujian pada varietas yang berbeda dan pada periode yang berbeda untuk meningkatkan stabilitas.
Adaptasi parameter dan optimasi strategi menggunakan metode seperti pembelajaran mesin.
Strategi pelacakan rata-rata bergerak adalah strategi pelacakan tren yang sederhana dan praktis, dengan ide yang jelas, mudah diimplementasikan, dan dapat menangkap peluang tren. Namun, strategi ini juga memiliki beberapa masalah, seperti tidak sensitif terhadap penyesuaian jangka pendek, kemampuan pengendalian risiko yang lemah, dll.
/*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)