Strategi Perdagangan Dwi MACD Pembalikan


Tarikh penciptaan: 2024-01-12 14:49:47 Akhirnya diubah suai: 2024-01-12 14:49:47
Salin: 0 Bilangan klik: 690
1
fokus pada
1617
Pengikut

Strategi Perdagangan Dwi MACD Pembalikan

Gambaran keseluruhan

Strategi perdagangan MACD berganda yang berbalik adalah strategi perdagangan kuantitatif yang menggunakan indikator MACD untuk mengenal pasti isyarat pembalikan trend. Strategi ini menggabungkan indikator RVI dan indikator CCI untuk mengesahkan masa pembelian, untuk menyaring beberapa pembalikan palsu.

Prinsip Strategi

Strategi ini adalah berdasarkan kepada indikator MACD. MACD adalah EMA bergerak cepat ((12)) tolak EMA bergerak perlahan ((26) untuk mendapatkan garis cepat, dan kemudian menggunakan SIGNAL ((9) sebagai garis lambat. Apabila melintasi garis panjang di atas garis cepat menghasilkan Golden Cross, ia adalah bullish; apabila melintasi garis perlahan di bawah garis cepat menghasilkan Dead Cross, ia adalah bearish.

Strategi ini menggunakan indikator MACD dua tempoh masa untuk mencari peluang untuk berbalik. Strategi ini menggunakan MACD tahap 6 jam untuk menentukan arah trend keseluruhan, MACD tahap 1 jam dalam hari untuk mencari isyarat berbalik. Apabila MACD tahap 6 jam berada dalam trend menaik, tahap 1 jam menunjukkan bahawa harga mungkin akan berbalik ke atas.

Indeks RVI mengukur hubungan harga penutupan dan harga bukaan beberapa garis K terkini dengan harga tertinggi dan terendah. Apabila RVI di bawah 0.2 dianggap sebagai oversold. Indeks CCI di bawah -100 menunjukkan oversold. Oleh itu, strategi menggunakan kedua-dua syarat RVI di bawah 0.2 dan CCI di bawah -95 untuk membantu mengesahkan isyarat pembelian.

Analisis kelebihan

Strategi ini menggabungkan MACD dua kitaran masa dan RVI dan CCI untuk mengenal pasti peluang pembalikan dengan lebih tepat, menyaring beberapa isyarat pembalikan palsu, dan meningkatkan kestabilan strategi. Kelebihan khusus adalah sebagai berikut:

  1. Menggunakan MACD pada tahap enam jam untuk menilai trend besar dan mengelakkan perdagangan dalam persekitaran ketidakpastian yang meningkat di pasaran utama.

  2. MACD peringkat 1 jam mengenal pasti masa berbalik dan dapat menangkap penyesuaian harga dalam tempoh yang lebih pendek.

  3. Penggunaan gabungan RVI dan CCI dapat menentukan masa pembalikan dengan lebih tepat.

  4. Strategi menambah titik hentian boleh mengurangkan kerugian.

Analisis risiko

Strategi ini juga mempunyai risiko, terutamanya:

  1. Indeks MACD sendiri mudah menghasilkan isyarat palsu, jadi walaupun penapisan indikator tambahan berkesan, kerugian tidak dapat dielakkan sepenuhnya. Disarankan untuk mengurangkan saiz kedudukan.

  2. Penunjuk RVI dan penunjuk CCI mungkin menghantar isyarat yang salah, sehingga kehilangan peluang pembalikan yang lebih baik atau meningkatkan kerugian yang tidak perlu. Adalah disyorkan untuk menyesuaikan parameter RVI dan CCI dengan munasabah.

  3. Tetapan titik hentian yang tidak betul mungkin terlalu padat untuk mencetuskan hentian, atau mungkin terlalu longgar tidak dapat mengawal kerugian tepat pada masanya. Adalah disyorkan untuk menyesuaikan ketinggian hentian mengikut tahap turun naik pasaran.

Arah pengoptimuman

Strategi ini boleh terus dioptimumkan dalam beberapa aspek:

  1. Dengan menggunakan dua tempoh masa 1 jam dan 6 jam, lebih banyak kombinasi tempoh masa boleh diuji untuk mencari parameter yang lebih stabil.

  2. Lebih banyak petunjuk boleh diperkenalkan, seperti KDJ, WR, OBV dan lain-lain untuk membantu menentukan titik jual beli. Tetapi untuk mengelakkan sinyal perdagangan yang terlalu rumit.

  3. Perpustakaan parameter boleh dioptimumkan mengikut parameter pelbagai jenis. Jika jenis yang sesuai untuk perdagangan frekuensi rendah dan sederhana, kitaran parameter boleh diperpanjang dengan sewajarnya.

  4. Anda boleh menetapkan mekanisme hentian dinamik, menggerakkan titik hentian secara beransur-ansur selepas keuntungan, atau menyesuaikan ketinggian hentian secara langsung mengikut tahap turun naik pasaran.

ringkaskan

Strategi perdagangan MACD berganda yang berbalik mengambil kira penilaian trend dan isyarat berbalik secara menyeluruh, dan disokong oleh isyarat penapis RVI dan CCI. Strategi ini dapat mengidentifikasi dengan berkesan penyesuaian garis pendek yang memberikan nisbah pulangan risiko yang lebih baik, sesuai untuk perdagangan dalam hari dan garis pendek, atau sebagai sebahagian daripada gabungan pelbagai strategi, untuk memberikan kepelbagaian strategi keseluruhan.

Kod sumber strategi
/*backtest
start: 2023-01-05 00:00:00
end: 2024-01-11 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Bat MACD", overlay=true)

fastLength = input(12)
slowlength = input(26)
MACDLength = input(9)
h=1.05

MACD = ema(close, fastLength) - ema(close, slowlength)
aMACD = ema(MACD, MACDLength)
delta = MACD - aMACD
hmacd= aMACD>0? h*aMACD: -(1/h)*abs(MACD) 

MACDD= (request.security(syminfo.tickerid,'360',ema(close, fastLength)) - request.security(syminfo.tickerid,'360',ema(close,slowlength)))
aMACDD = (request.security(syminfo.tickerid,'360',ema(ema(request.security(syminfo.tickerid,'360',close), fastLength)-ema(request.security(syminfo.tickerid,'360',close),slowlength), MACDLength)))
deltad= MACDD-aMACDD
L= input(0.95, title="SL")
SL = L*ema(close,10)

//MACD
slow = input(26,"Short period")
fast = input(12, "Long period")
signal = input(9, "Smoothing period")
//MACD = ema(close,fast)-ema(close,slow)
dMACD= MACD<0? ema(MACD,5):0
Mcond= rising(dMACD,1)
mcount=0.0
mcount := Mcond ? nz(mcount[1]) + 1 : nz(mcount[1])
counter=0
counter := (mcount-mcount[1]==0) ? nz(counter[1]) + 1 : 0
//counter := counter==3 ? 0: nz(counter[1])
pp=0.0
mc=0.0
pp:= (counter-counter[1]<0)? close[1] : nz(pp[1])
mc:= (counter-counter[1]<0)? MACD[1] : nz(mc[1])

bull = (pp-pp[1]<-close*0.005 and mc-mc[1]>0.02*abs(MACD) and MACD<0 and MACD[1]<0)? 1:0

//bgcolor(bull?green:white)
//RVI
p=10
CO=close-open
HL=high-low
value1 = (CO + 2*CO[1] + 2*CO[2] + CO[3])/6
value2 = (HL + 2*HL[1] + 2*HL[2] + HL[3])/6
num=sum(value1,p)
denom=sum(value2,p)
rvi=denom!=0?num/denom:0

//RVI
drvi= (rvi<0.2)? ema(rvi-0.20,3):0
RVcond= rising(drvi,1)
rvcount=0.0
rvcount := RVcond ? nz(rvcount[1]) + 1 : nz(rvcount[1])
rvcounter=0
rvcounter := (rvcount-rvcount[1]==0) ? nz(rvcounter[1]) + 1 : 0
//counter := counter==3 ? 0: nz(counter[1])
rvpp=0.0
rvmc=0.0
rvpp:= (rvcounter-rvcounter[1]<0)? close[1] : nz(rvpp[1])
rvmc:= (rvcounter-rvcounter[1]<0)? drvi[1] : nz(rvmc[1])
rvbull = (rvpp-rvpp[1]<-close*0.005 and rvmc-rvmc[1]>0.02 and drvi<0 and drvi[1]<0)? 1:0

//VolCCI
length1 = input(10, minval=1)
xMAVolPrice = ema(volume * close, length1)
xMAVol = ema(volume, length1)
src1 = xMAVolPrice / xMAVol
map = sma(src1, length1)
cci = (src1 - map) / (0.015 * dev(src1, length1))
cfi= (cci<0)? ema(cci,3) :0
CCcond= rising(cfi,1)
cccount=0.0
cccount := CCcond ? nz(cccount[1]) + 1 : nz(cccount[1])
cccounter=0
cccounter := (cccount-cccount[1]==0) ? nz(cccounter[1]) + 1 : 0
//counter := counter==3 ? 0: nz(counter[1])
ccpp=0.0
ccmc=0.0
ccpp:= (cccounter-cccounter[1]<0)? close[1] : nz(ccpp[1])
ccmc:= (cccounter-cccounter[1]<0)? cci[1] : nz(ccmc[1])
ccbull = (ccpp-ccpp[1]<-close*0.003 and ccmc-ccmc[1]>20 and cci<-95 and cci[1]<-95)? 1:0

A= bull+ccbull+rvbull
if ((MACD>hmacd)  and deltad>0 and delta>delta[1])
    strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close)
if (crossunder(delta, 0) or crossunder(close,SL))
    strategy.close("Long")
if(crossover(low,SL) and SL-SL[1]<close*0.005 and SL-SL[1]>-close*0.005)    
    strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close)
if A 
    strategy.entry("Long", strategy.long, comment="Buy", qty=10000/close)
plot(SL)

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