Dual Moving Average Golden Cross Strategi Kuantitatif

Penulis:ChaoZhang, Tanggal: 2023-12-26
Tag:

img

Gambaran umum

Strategi ini menilai tren harga dan peluang perdagangan dengan menghitung crossover rata-rata bergerak ganda. Ketika MA cepat melintasi di atas MA lambat, itu dianggap sebagai salib emas untuk pergi panjang. Ketika MA cepat melintasi di bawah MA lambat, itu dianggap sebagai salib kematian untuk pergi pendek. Pada saat yang sama, gabungkan Indikator Volume untuk menilai keandalan crossover untuk menghindari sinyal palsu.

Prinsip Strategi

Prinsip-prinsip inti dari strategi ini adalah:

  1. Perhitungkan dua kelompok moving average dengan parameter yang berbeda, satu kelompok merespons dengan cepat terhadap perubahan harga dan yang lainnya bereaksi relatif lambat. Ketika MA cepat melintasi di atas MA lambat, itu menandakan tren harga naik. Ketika MA cepat melintasi di bawah MA lambat, itu menandakan tren harga menurun.

  2. Ketika MAs bersilang, periksa perubahan Indikator Volume. Jika Indikator Volume juga pecah secara signifikan, sinyal crossover dapat diandalkan. Jika tidak ada pecah yang sesuai dalam Volume, itu mungkin sinyal palsu.

  3. Masukkan posisi panjang atau pendek berdasarkan penilaian arah silang dan volume.

Secara khusus, strategi ini menilai tren harga menggunakan crossover MAs ganda 7-periode. Ini menggunakan indikator Volume untuk memeriksa keandalan sinyal. Ketika mendapatkan sinyal yang dapat diandalkan, itu akan panjang atau pendek per SIGNAL. Ini menetapkan target keuntungan untuk mengambil keuntungan.

Analisis Keuntungan

Keuntungan utama dari strategi ini adalah:

  1. Menggabungkan dua MAs untuk menentukan arah tren dan volume filter untuk menghindari sinyal palsu dan terjebak.

  2. Hanya mengambil posisi ketika Volume mengkonfirmasi, meningkatkan tingkat keberhasilan.

  3. Memiliki mekanisme mengambil keuntungan untuk mengambil keuntungan tepat waktu dan menghindari memberikan kembali keuntungan.

Analisis Risiko

Risiko utama dari strategi ini adalah:

  1. MA crossover delay mungkin kehilangan kesempatan terbaik. dapat mengoptimalkan parameter untuk membuat MA lebih sensitif.

  2. Sulit untuk menilai ketika Volume menyimpang.

  3. Pengaturan stop profit yang tidak benar dapat menyebabkan over trading atau menahan pemenang terlalu lama.

Arahan Optimasi

Strategi dapat dioptimalkan dari aspek berikut:

  1. Mengoptimalkan periode MA untuk membuatnya lebih responsif untuk menangkap perubahan harga dalam waktu.

  2. Tambahkan lebih banyak indikator seperti MACD, KD untuk konfirmasi sinyal untuk menghindari sinyal palsu Volume.

  3. Masukkan lebih banyak mekanisme pengambilan keuntungan seperti trail stop, stop persentase, volatility stop untuk pengambilan keuntungan yang dinamis.

  4. Tambahkan mekanisme stop loss untuk mengontrol jumlah kerugian perdagangan tunggal.

  5. Mengoptimalkan ukuran posisi yang dapat disesuaikan dengan lingkungan pasar yang berbeda.

Kesimpulan

Sebagai kesimpulan, ide inti dari strategi ini adalah menggunakan crossover MA ganda untuk tren dan filter Volume untuk keandalan sinyal. Ini stabil dan mudah diterapkan. Optimasi lebih lanjut pada parameter, penyaringan sinyal, pengambilan keuntungan dan stop loss dapat membuatnya lebih andal dan cerdas untuk perdagangan praktis.


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

//@version=2
strategy("ZendicatoR", overlay=true, calc_on_order_fills= true, calc_on_every_tick=true, default_qty_type=strategy.percent_of_equity, default_qty_value=15, pyramiding=0)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
che1=input(title="MA 1",defval=34,minval=1)
che2=input(title="MA 2",defval=144,minval=1)
che3=input(title="MA 3",defval=377,minval=1)
amnt=input(title="TP ($)",defval=4200,minval=1)
wma1=wma(close,che1)
wma2=wma(close,che2)
wma3=wma(close,che3)
sma1=sma(close,11)
tms=10000000000000
A=request.security(syminfo.tickerid, 'D', close)*tms
B=request.security(syminfo.tickerid, 'D', close[1])*tms
C=A>B?green:red
D=wma2>wma3?green:red
plot(wma1,style=line,color=C,linewidth=4)
p1=plot(wma2,style=line,color=D)
p2=plot(wma3,style=line,color=D)
fill(p1, p2, color=D, transp=75)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)*tms
n2=wma(diff1,sqn)*tms
Q=n1>n2?blue:yellow
plot(sma1,style=line,color=Q,linewidth=4)
closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt
if (closelong)
    strategy.close("Long")
closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt
if (closeshort)
    strategy.close("Short") 
longCondition = A*tms>B*tms and n1*tms>n2*tms
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = A*tms<B*tms and n1*tms<n2*tms
if (shortCondition)
    strategy.entry("Short",strategy.short)

Lebih banyak