Strategi Mengikuti Purata Pergerakan


Tarikh penciptaan: 2023-10-20 17:02:52 Akhirnya diubah suai: 2023-10-20 17:03:32
Salin: 2 Bilangan klik: 614
1
fokus pada
1617
Pengikut

Strategi Mengikuti Purata Pergerakan

Gambaran keseluruhan

Strategi pengesanan purata bergerak adalah strategi pengesanan trend berdasarkan purata bergerak sederhana. Strategi ini menggunakan purata bergerak sederhana dengan panjang 200 hari untuk menentukan arah trend harga, melakukan lebih banyak apabila harga melintasi purata bergerak di atas, dan melakukan kosong apabila harga melintasi purata bergerak di bawah, untuk mencapai trend pengesanan.

Prinsip Strategi

Strategi ini berdasarkan kepada prinsip-prinsip berikut:

  1. Menggunakan purata bergerak sederhana dengan jangka masa 200 hari slowMA untuk menentukan arah trend harga.
  2. Apabila harga penutupan mendekati slowMA, anda menganggap harga mula meningkat, jadi anda perlu melakukan lebih banyak.
  3. Apabila harga penutupan ditutup di bawah slowMA, ia dianggap bahawa pasaran mula jatuh, dan oleh itu ia kosong.
  4. Mencatatkan masa terakhir melakukan over dan under dengan menggunakan pembolehubah last_long dan last_short.
  5. Fungsi crossover menilai persilangan last_long dan last_short untuk menghasilkan isyarat perdagangan.
  6. Dalam tempoh masa pengesanan semula, apabila menerima banyak isyarat long_signal lakukan lebih banyak, apabila menerima isyarat short_signal lakukan kosong.

Strategi ini digunakan untuk menentukan arah trend dengan menggunakan purata bergerak, dan melakukan operasi terbalik tepat pada masanya apabila garis rata bertukar, untuk mendapatkan keuntungan dari trend.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Strategi ini mudah difahami dan dilaksanakan.
  2. Menggunakan purata bergerak jangka panjang, anda boleh menyaring kebisingan dengan berkesan dan mengunci trend utama.
  3. Dengan melakukan operasi pembalikan tepat pada masanya, anda boleh menangkap turun naik harga yang lebih besar pada titik perubahan trend.
  4. Hanya perlu satu pengukur purata bergerak, menghapuskan kerumitan gabungan pelbagai pengukur.
  5. Peraturan kemasukan dan keluar adalah jelas dan tidak memerlukan banyak intervensi manusia.

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Garis purata jangka panjang tidak sensitif terhadap penyesuaian jangka pendek, dan mungkin terlepas peluang untuk garis pendek.
  2. Keupayaan untuk mengenal pasti trend pusingan besar adalah lemah dan mudah mengalami kerugian pembalikan.
  3. Ia juga boleh menyebabkan penarikan balik yang lebih besar.
  4. Parameter tetap, adaptasi yang lemah terhadap pelbagai jenis dan persekitaran pasaran.
  5. Ujian strategi berdasarkan data sejarah sahaja boleh menyebabkan risiko over-fitting.

Mengenai risiko, terdapat beberapa aspek yang boleh dioptimumkan dan diperbaiki:

  1. Menggabungkan garis purata kitaran pendek, sambil mengambil kira trend kitaran panjang.
  2. Menambah syarat-syarat portfolio kuantiti dan harga untuk mengelakkan penembusan palsu.
  3. Menambah penapis indikator trend, meningkatkan keupayaan untuk mengenal pasti perubahan trend.
  4. Menambah mekanisme hentikan kerugian dinamik untuk mengawal kerugian tunggal.
  5. Menggunakan kaedah pengoptimuman parameter untuk meningkatkan kebolehpasaran parameter.
  6. Ujian replikasi dalam persekitaran pasaran yang berbeza untuk memeriksa kekuatan strategi.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dengan cara berikut:

  1. Mengoptimumkan parameter kitaran untuk purata bergerak, mencari kombinasi parameter yang optimum. Kaedah pengoptimuman parameter seperti Analisis Walk Forward boleh digunakan.

  2. Menambah purata bergerak jangka pendek, membentuk strategi garis rata-rata, sambil menjejaki trend jangka pendek.

  3. Gabungan dengan penunjuk trend seperti MACD dan lain-lain, meningkatkan keupayaan untuk mengenal pasti perubahan trend.

  4. Menyertai mekanisme penangguhan kerugian, seperti menjejaki penangguhan kerugian, penangkapan penangguhan kerugian, dan lain-lain, untuk mengawal kerugian tunggal.

  5. Melakukan ujian replikasi, strategi ujian dalam pelbagai jenis dan tempoh yang berbeza untuk meningkatkan kestabilan.

  6. Menggunakan kaedah pembelajaran mesin dan lain-lain untuk menyesuaikan parameter dan mengoptimumkan strategi.

ringkaskan

Strategi pengesanan purata bergerak adalah strategi pengesanan trend yang mudah dan praktikal, idea yang jelas, mudah dilaksanakan, dan dapat menangkap peluang trend. Tetapi strategi ini juga mempunyai beberapa masalah, seperti tidak sensitif terhadap penyesuaian jangka pendek, kemampuan kawalan risiko yang lemah, dan sebagainya.

Kod 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)