Strategi Perdagangan Pasangan Multi-MA

Penulis:ChaoZhang, Tarikh: 23 September 2023 15:16:50
Tag:

Ringkasan

Strategi ini menggabungkan pemilihan purata bergerak berganda dan pengiktirafan corak harga untuk membentuk mekanisme kemasukan yang lebih komprehensif untuk meningkatkan kualiti isyarat.

Logika Strategi

Strategi ini merangkumi penunjuk dan peraturan berikut:

  1. 3 SMA menilai trend keseluruhan.

  2. 2 EMA membuat penilaian arah terperinci.

  3. SAR membantu dengan trend dan momentum.

  4. Corak harga mengenal pasti pembentukan sebagai isyarat kemasukan.

  5. Maksimum keuntungan mengambil had kawalan keuntungan buku.

  6. Had tempoh memegang mengelakkan pengembangan kerugian.

Gabungan pelbagai penunjuk membentuk isyarat kemasukan yang kukuh dan mekanisme keluar, menyeimbangkan keuntungan dan kawalan risiko untuk perdagangan yang stabil.

Kelebihan

Berbanding dengan strategi satu penunjuk, kelebihan adalah:

  1. Pelbagai penunjuk meningkatkan ketepatan.

  2. Pengiktirafan corak harga meningkatkan masa kemasukan.

  3. Keuntungan mengambil kawalan mewujudkan keuntungan.

  4. Tempoh pemegang mengelakkan pengembangan kerugian.

  5. SMA mengikuti trend.

  6. EMA meningkatkan kepekaan.

  7. SAR mengesahkan kebolehpercayaan pelarian.

  8. Secara keseluruhan keseimbangan risiko-balasan yang baik, ketahanan.

  9. Parameter penyesuaian boleh mencapai alfa yang stabil.

Risiko

Walaupun terdapat manfaatnya, risiko berikut harus diperhatikan:

  1. Pelbagai penunjuk meningkatkan kerumitan.

  2. Penyesuaian parameter luas berisiko terlalu optimum.

  3. Kecekapan pengiktirafan corak harga tidak pasti.

  4. Mengambil risiko keuntungan kehilangan trend berterusan.

  5. Tempoh penyimpanan mengehadkan potensi keuntungan.

  6. Kestabilan dan keuntungan ada tradeoff.

  7. Kekuatan pelbagai pasaran memerlukan pengesahan.

  8. Pemantauan berterusan kebolehpercayaan model adalah penting.

Peningkatan

Berdasarkan analisis, penambahbaikan mungkin termasuk:

  1. Sesuaikan parameter untuk kestabilan pulangan.

  2. Masukkan pembelajaran mesin untuk masa kemasukan.

  3. Mengoptimumkan stop loss dinamik dan mengambil keuntungan.

  4. Menilai kesan tempoh pegangan pada lengkung ekuiti.

  5. Uji ketahanan di pasaran yang berbeza.

  6. Tambah pemeriksaan ketahanan parameter untuk mengelakkan pemasangan berlebihan.

  7. Membangunkan pengurusan risiko kuantitatif.

  8. Sentiasa mengesahkan keberkesanan strategi.

Kesimpulan

Ringkasnya, pendekatan multi-penunjuk membentuk sistem perdagangan yang agak kukuh. Tetapi pengoptimuman dan pengesahan berterusan adalah kunci untuk mana-mana strategi, dengan tumpuan pada ketahanan parameter untuk daya adaptasi pasaran. Perdagangan kuant adalah proses berulang.


//@version=3
strategy("Free Strategy #08 (Combo of #01 and #02) (ES / SPY)", overlay=true)

// Inputs
Quantity = input(1, minval=1, title="Quantity")
SmaPeriod01 = input(3, minval=1, title="SMA Period 01")
SmaPeriod02 = input(8, minval=1, title="SMA Period 02")
SmaPeriod03 = input(10, minval=1, title="SMA Period 03")
EmaPeriod01 = input(5, minval=1, title="EMA Period 01")
EmaPeriod02 = input(3, minval=1, title="EMA Period 02")
MaxProfitCloses = input(5, minval=1, title="Max Profit Close")
MaxBars = input(10, minval=1, title="Max Total Bars")

// Misc Variables
src = close
BarsSinceEntry = 0
MaxProfitCount = 0
Sma01 = sma(close, SmaPeriod01)
Sma02 = sma(close, SmaPeriod02)
Sma03 = sma(close, SmaPeriod03)
Ema01 = ema(close, EmaPeriod01)
Ema02 = ema(close, EmaPeriod02)
OHLC = (open + high + low + close) / 4.0

// Conditions
Cond00 = strategy.position_size == 0
Cond01 = close < Sma03
Cond02 = close <= Sma01
Cond03 = close[1] > Sma01[1]
Cond04 = open > Ema01
Cond05 = Sma02 < Sma02[1]
Entry01 = Cond00 and Cond01 and Cond02 and Cond03 and Cond04 and Cond05

Cond06 = close < Ema02
Cond07 = open > OHLC
Cond08 = volume <= volume[1]
Cond09 = (close < min(open[1], close[1]) or close > max(open[1], close[1]))
Entry02 = Cond00 and Cond06 and Cond07 and Cond08 and Cond09

// Update Exit Variables
BarsSinceEntry := Cond00 ? 0 : nz(BarsSinceEntry[1]) + 1
MaxProfitCount := Cond00 ? 0 : (close > strategy.position_avg_price and BarsSinceEntry > 1) ? nz(MaxProfitCount[1]) + 1 : nz(MaxProfitCount[1])

// Entries
strategy.entry(id="L1", long=true, qty=Quantity, when=(Entry01 or Entry02))
 
// Exits
strategy.close("L1", (BarsSinceEntry - 1 >= MaxBars or MaxProfitCount >= MaxProfitCloses))

Lebih lanjut