Strategi perdagangan kuantitatif berdasarkan purata bergerak


Tarikh penciptaan: 2024-01-16 17:37:13 Akhirnya diubah suai: 2024-01-16 17:37:13
Salin: 0 Bilangan klik: 711
1
fokus pada
1617
Pengikut

Strategi perdagangan kuantitatif berdasarkan purata bergerak

Gambaran keseluruhan

Strategi ini adalah strategi trend-following yang tipikal dengan mengira purata bergerak dari pelbagai tempoh dan menilai mereka untuk membentuk isyarat perdagangan. Ia menggunakan purata bergerak bertimbangan WMA dan purata bergerak beradaptasi ALMA.

Prinsip Strategi

Strategi ini mula-mula mengira purata bergerak jangka pendek dan sederhana harga ma1 dan ma2, di mana ma1 mempunyai kitaran yang lebih pendek dan ma2 mempunyai kitaran yang lebih lama. Kemudian mengira perbezaan antara ma1 dan ma2 dengan ma3, dan kemudian mengira purata bergerak yang licin ma4 untuk ma3. Ia menghasilkan isyarat beli apabila ma3 melintasi ma4 dan menghasilkan isyarat jual apabila ia melintasi ma3.

Dengan cara ini, ma3 mencerminkan arah trend harga dalam jangka pendek dan pertengahan, dan ma4 menyaring sebahagian daripada kebisingan dalam ma3 dan membentuk isyarat perdagangan yang lebih dipercayai. Perbandingan kitaran antara ma1 dan ma2 ditetapkan melalui parameter maLen, yang membolehkan pengguna mendapatkan kombinasi parameter terbaik berdasarkan kitaran penyesuaian pasaran yang berbeza.

Kelebihan Strategik

Strategi ini mempunyai kelebihan berikut:

  1. Menggunakan ALMA dan WMA yang beradaptasi untuk menyesuaikan diri dengan perubahan pasaran.

  2. Penggunaan purata harga pelbagai kitaran menjadikan isyarat dagangan lebih dipercayai.

  3. Parameter boleh disesuaikan, pengguna boleh mengoptimumkan untuk pasaran yang berbeza, luas digunakan.

  4. Strategi yang jelas, mudah difahami dan mudah dilaksanakan.

  5. Ia boleh didapati dalam pasaran yang sedang trending dan juga di pasaran yang tidak stabil.

Risiko dan penyelesaian

Strategi ini mempunyai beberapa risiko:

  1. Dalam keadaan yang berubah-ubah, strategi purata bergerak mudah menyebabkan masalah seperti isyarat perdagangan yang tidak jelas, kelewatan. Ia boleh dioptimumkan dengan menyesuaikan kitaran dan parameter purata bergerak.

  2. Strategi trend-tracking semata-mata, mudah mengalami kerugian pada tahap penyesuaian yang bergolak. Ia boleh digabungkan dengan petunjuk lain sebagai syarat penapis.

  3. Tetapan parameter yang tidak betul boleh menyebabkan terlalu banyak perdagangan dalam tempoh yang terlalu pendek. Parameter yang sesuai harus dipilih dengan berhati-hati.

Pengoptimuman Strategi

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Uji lebih banyak jenis purata bergerak, seperti purata bergerak linear, purata bergerak berat, dan lain-lain.

  2. Menambah mekanisme penangguhan kerugian berdasarkan indikator seperti kadar turun naik dan saluran harga.

  3. Menggabungkan beberapa analisis kitaran masa, mengambil parameter pengoptimuman bergulir.

  4. Menambah algoritma pembelajaran mesin untuk mengoptimumkan parameter secara automatik.

ringkaskan

Strategi ini berdasarkan pada purata bergerak untuk membentuk isyarat perdagangan. Menggunakan purata bergerak yang menyesuaikan diri dan purata harga jangka masa berbilang untuk membuat isyarat lebih tepat dan dipercayai. Parameter strategi ini boleh disesuaikan, luas, idea mudah dan jelas, berkesan dalam pasaran yang sedang tren, mempunyai nilai pertempuran yang tinggi.

Kod sumber strategi
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Oracle Move Strategy", overlay=true)

maLen = input(30, "ma period")
mode =  input(defval="wma", options=["alma", "ema", "wma"])
price = close

ma(src, len) =>
     mode=="alma"  ? alma(src, len, 0.85, 6) :
     mode=="ema"? ema(src, len) : 
     wma(src, len)
    

ma1 = ma(price, floor(maLen / 2))
ma2 = ma(price, maLen)
ma3 = 2.0 * ma1 - ma2
ma4 = ma(ma3, floor(sqrt(maLen)))

//plot(ma1, color = red)
//plot(ma2, color = green)
plot(ma3, color = blue)
plot(ma4, color = orange)


mafast = ma3
maslow = ma4

if (crossover(mafast, maslow))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(mafast, maslow))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)