Strategi Mengikuti Rata-rata Bergerak


Tanggal Pembuatan: 2023-10-20 17:02:52 Akhirnya memodifikasi: 2023-10-20 17:03:32
menyalin: 2 Jumlah klik: 614
1
fokus pada
1617
Pengikut

Strategi Mengikuti Rata-rata Bergerak

Ringkasan

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.

Prinsip Strategi

Strategi ini didasarkan pada prinsip-prinsip berikut:

  1. Untuk menentukan arah tren harga, gunakan slowMA dengan durasi 200 hari.
  2. Ketika harga close di atas slow MA, maka kita akan berpikir bahwa harga mulai naik, jadi kita akan melakukan lebih banyak.
  3. Ketika harga penutupan mendekati slowMA, pasar dianggap mulai turun, sehingga melakukan shorting.
  4. Catat waktu terakhir melakukan over dan under dengan variabel last_long dan last_short.
  5. Fungsi crossover menentukan persilangan last_long dan last_short untuk menghasilkan sinyal transaksi.
  6. Dalam jangka waktu pengamatan, jika menerima sinyal long_signal, lakukan lebih banyak, dan jika menerima sinyal short_signal, lakukan lebih sedikit.

Strategi ini digunakan untuk menentukan arah tren melalui moving averages dan melakukan reversal pada saat equity berbalik, sehingga menghasilkan keuntungan dari trend.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Strategi ini sederhana dan jelas, mudah dipahami dan diterapkan.
  2. Penggunaan rata-rata bergerak periode panjang dapat secara efektif menyaring kebisingan dan mengunci tren utama.
  3. Operasi reversal yang dilakukan pada waktu yang tepat dapat menangkap fluktuasi harga yang lebih besar pada titik-titik perubahan tren.
  4. Hanya perlu satu indikator dari Moving Average, yang menghilangkan kompleksitas dari kombinasi beberapa indikator.
  5. Aturan masuk dan keluar jelas dan tidak memerlukan intervensi manusia yang berlebihan.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Garis rata-rata jangka panjang tidak sensitif terhadap perubahan jangka pendek dan mungkin melewatkan peluang garis pendek.
  2. Kemampuan untuk mengenali puncak dan dasar dari tren siklus besar lebih lemah, sehingga mudah terjadi kerugian pembalikan.
  3. Namun, ada beberapa hal yang perlu diperhatikan, antara lain:
  4. Parameter tetap, berbagai varietas dan lingkungan pasar adaptasi yang lemah.
  5. Ada risiko over-fitting dalam pengujian strategi berdasarkan data historis saja.

Ada beberapa hal yang dapat dioptimalkan dan ditingkatkan untuk mengatasi risiko:

  1. Kombinasi rata-rata jangka pendek dengan tren jangka panjang.
  2. Meningkatkan kondisi portofolio untuk menghindari terobosan palsu.
  3. Menambahkan filter indikator tren, meningkatkan kemampuan untuk mengidentifikasi perubahan tren.
  4. Menambahkan mekanisme stop loss dinamis untuk mengendalikan kerugian tunggal.
  5. Menggunakan metode optimasi parameter untuk meningkatkan adaptasi parameter.
  6. Tes replikasi dalam lingkungan pasar yang berbeda untuk memeriksa kehandalan strategi.

Arah optimasi

Strategi ini dapat dioptimalkan lebih lanjut dalam beberapa hal:

  1. Mengoptimalkan parameter periodik dari moving average, mencari kombinasi parameter yang optimal. Metode pengoptimalan parameter seperti Walk Forward Analysis dapat digunakan.

  2. Menambahkan rata-rata bergerak jangka pendek untuk membentuk strategi garis rata-rata ganda, sambil melacak tren jangka pendek.

  3. Menggabungkan indikator tren, seperti MACD dan lain-lain, meningkatkan kemampuan untuk mengidentifikasi perubahan tren.

  4. Menambahkan mekanisme stop loss, seperti tracking stop loss, pending stop loss, dan lain-lain, untuk mengendalikan kerugian tunggal.

  5. Melakukan pengujian replikasi, strategi pengujian pada varietas yang berbeda dan pada periode yang berbeda untuk meningkatkan stabilitas.

  6. Adaptasi parameter dan optimasi strategi menggunakan metode seperti pembelajaran mesin.

Meringkaskan

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.

Kode Sumber Strategi
/*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)