Strategi Perdagangan Trend Purata Bergerak

Penulis:ChaoZhang, Tarikh: 2023-10-09 16:00:02
Tag:

Ringkasan

Strategi ini adalah strategi perdagangan trend berdasarkan purata bergerak. Ia menggunakan 3 purata bergerak dengan parameter yang berbeza untuk menjana isyarat perdagangan. Ia pergi lama apabila harga melintasi di atas purata bergerak dan pergi pendek apabila harga melintasi di bawah. Strategi ini mempunyai 3 garis purata bergerak untuk masuk bertahap panjang atau pendek, yang membolehkannya mengikuti trend.

Logika Strategi

Strategi ini mengira garis purata bergerak ma dengan panjang len menggunakan fungsi sma. Kemudian ia mengira 3 garis purata bergerak tambahan longline1, longline2, longline3 yang bergeser masing-masing sebanyak -4%, -5%, -6% berdasarkan ma.

Untuk penjanaan isyarat panjang, jika kedudukan semasa rata, ia pergi panjang dengan 1 lot apabila harga melintasi di atas longline1. Jika sudah 1 lot panjang, ia menambah 1 lagi lot apabila harga melintasi di atas longline2. Jika sudah 2 lot panjang, ia menambah 1 lagi lot apabila harga melintasi di atas longline3. Kedudukan panjang maksimum adalah 3 lot.

Untuk penjanaan isyarat pendek, jika sudah lama, ia keluar dari semua kedudukan panjang apabila harga melintasi di bawah ma.

Pendaftaran bertahap membolehkan strategi untuk mengikuti trend.

Kelebihan

  • Menggunakan purata bergerak untuk menentukan arah trend menapis bunyi pasaran dan membolehkan keuntungan yang stabil
  • Pendaftaran panjang/pendek bertahap boleh mendapat keuntungan lebih daripada trend
  • Menggunakan purata bergerak bergeser sebagai titik masuk lebih baik menangkap trend
  • Pengambilan yang agak kecil, pengambilan maksimum dikawal sekitar 20%

Risiko

  • Trend murni mengikut strategi cenderung untuk dibasuh semasa pasaran yang terikat julat
  • Isyarat yang tertinggal dari purata bergerak mungkin terlepas titik perubahan trend
  • Pendaftaran panjang bertahap boleh mengejar harga tinggi dan meningkatkan risiko
  • Tiada mekanisme stop loss boleh membawa kepada kerugian besar daripada kejadian tiba-tiba

Penyelesaian Risiko:

  • Tambah penunjuk lain untuk menentukan titik perubahan trend
  • Parameter purata bergerak ditetapkan dengan munasabah, tidak terlalu lama untuk mengelakkan isyarat yang terlalu lambat
  • Mengurangkan kumpulan masuk yang panjang untuk mengelakkan mengejar harga tinggi
  • Tambahkan stop loss bergerak untuk mengehadkan kerugian

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Tambah penunjuk lain seperti MACD untuk menentukan kekuatan trend

  2. Mengoptimumkan parameter purata bergerak untuk mencari kombinasi terbaik

  3. Sesuaikan saiz dan nisbah kumpulan kemasukan bertahap untuk mengelakkan mengejar harga tinggi

  4. Tambahkan mekanisme stop loss bergerak berdasarkan ATR

  5. Sesuaikan saiz kedudukan secara dinamik berdasarkan turun naik pasaran, mengurangkan saiz apabila turun naiknya tinggi

  6. Parameter ujian pada produk yang berbeza untuk mencari simbol optimum

  7. Membangunkan modul keluar untuk mempertimbangkan mengambil keuntungan pada corak tertentu

Ringkasan

Secara keseluruhan, strategi perdagangan berdasarkan arah trend yang ditentukan oleh purata bergerak, dan keuntungan dari trend melalui entri bertahap. Tetapi ia mempunyai beberapa isu yang tertinggal dan risiko mengejar harga yang tinggi. Kita boleh mengoptimumkannya dengan menambah penunjuk tambahan, mengoptimumkan parameter, menyesuaikan saiz kedudukan, menambahkan stop loss, dll, untuk menyesuaikan diri dengan keadaan pasaran yang berbeza dan mencapai keuntungan yang stabil.


/*backtest
start: 2022-10-02 00:00:00
end: 2023-10-08 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2019

//@version=4
strategy(title = "Noro's ShiftMA-multi Strategy v1.0", shorttitle = "ShiftMA-multi", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Lot")
len = input(3, minval = 1, title = "MA Lenghs")
src = input(ohlc4, title = "MA Source")
longlevel1 = input(-4.0, title = "Long line 1")
longlevel2 = input(-5.0, title = "Long line 2")
longlevel3 = input(-6.0, title = "Long line 3")
needoffset = input(true, title = "Offset")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick

//MA
ma = sma(src, len)
longline1 = round(ma * ((100 + longlevel1) / 100) * mult) / mult
longline2 = round(ma * ((100 + longlevel2) / 100) * mult) / mult
longline3 = round(ma * ((100 + longlevel3) / 100) * mult) / mult

//Lines
offset = needoffset ? 1 : 0
plot(ma, color = color.blue)
plot(longline1, offset = offset, color = color.lime)
plot(longline2, offset = offset, color = color.lime)
plot(longline3, offset = offset, color = color.lime)

//Trading
lot = 0.0
lot := size == 0 ? strategy.equity / close * capital / 100 : lot[1]
lots = 0.0
if ma > 0
    lots := round(size / lot)
    strategy.entry("L1", strategy.long, lot, limit = longline1, when = (lots == 0))
    lots := round(size / lot)
    strategy.entry("L2", strategy.long, lot, limit = longline2, when = (lots <= 1))
    lots := round(size / lot)
    strategy.entry("L3", strategy.long, lot, limit = longline3, when = (lots <= 2))
if size > 0
    strategy.entry("TP", strategy.short, 0, limit = ma)
    

Lebih lanjut