
Strategi perdagangan MACD reverse binary adalah strategi perdagangan kuantitatif yang menggunakan indikator MACD untuk mengidentifikasi sinyal reversal tren. Strategi ini menggabungkan indikator RVI dan indikator CCI untuk mengkonfirmasi waktu pembelian sekaligus untuk menyaring beberapa reversal palsu. Strategi ini berlaku untuk perdagangan intraday dan short-line.
Strategi ini didasarkan pada indikator MACD. MACD adalah EMA bergerak cepat (< 12) dikurangi EMA bergerak lambat (< 26) untuk mendapatkan garis cepat, kemudian menggunakan SIGNAL (< 9) sebagai garis lambat. Jika melewati garis panjang di atas garis cepat menghasilkan Golden Cross, maka Anda akan melihat bullish; Jika melewati garis lambat di bawah garis cepat menghasilkan Dead Cross, maka Anda akan melihat bearish.
Strategi ini menggunakan indikator MACD dua periode waktu untuk mencari peluang pembalikan. Strategi ini menggunakan MACD tingkat 6 jam untuk menentukan arah tren keseluruhan, MACD tingkat 1 jam dalam sehari untuk mencari sinyal pembalikan. Ketika MACD tingkat 6 jam berada dalam tren naik, tingkat 1 jam menunjukkan bahwa harga mungkin akan membalik ke atas.
Indikator RVI mengukur hubungan antara harga penutupan dan harga bukaan beberapa garis K terbaru dengan harga tertinggi dan terendah. Ketika RVI di bawah 0,2 dianggap oversold. Indikator CCI di bawah 100 berarti oversold. Jadi strategi menggunakan indikator RVI di bawah 0,2 dan indikator CCI di bawah -95 untuk membantu mengkonfirmasi sinyal beli.
Strategi ini menggabungkan MACD dua periode waktu dan RVI dan CCI untuk mengidentifikasi peluang reversal dengan lebih akurat, memfilter beberapa sinyal reversal palsu, sehingga meningkatkan stabilitas strategi. Keunggulan spesifiknya adalah sebagai berikut:
Menggunakan MACD pada tingkat 6 jam untuk menentukan tren besar, hindari perdagangan di lingkungan yang meningkat ketidakpastian di pasar besar.
MACD tingkat 1 jam mengidentifikasi waktu berbalik, yang dapat menangkap perubahan harga dalam periode yang lebih pendek.
Kombinasi indikator RVI dan CCI dapat digunakan untuk menentukan waktu reversi dengan lebih akurat.
Strategi menambahkan stop loss dapat mengurangi kerugian.
Strategi ini juga memiliki beberapa risiko, terutama di:
Indikator MACD sendiri mudah menghasilkan sinyal palsu, sehingga bahkan jika filter indikator bantu lebih baik, tidak dapat sepenuhnya menghindari kerugian. Disarankan untuk mengurangi ukuran posisi.
Indikator RVI dan CCI dapat mengirimkan sinyal yang salah, sehingga kehilangan peluang yang lebih baik untuk berbalik atau meningkatkan kerugian yang tidak perlu. Disarankan untuk menyesuaikan parameter RVI dan CCI secara wajar.
Stop loss yang tidak tepat mungkin terlalu intensif untuk memicu stop loss, atau mungkin terlalu longgar untuk mengontrol kerugian secara tepat waktu. Disarankan untuk menyesuaikan stop loss sesuai dengan tingkat fluktuasi pasar.
Strategi ini dapat terus dioptimalkan dalam beberapa hal:
Saat ini digunakan dua periode waktu 1 jam dan 6 jam, dapat menguji lebih banyak kombinasi periode waktu, mencari parameter yang lebih stabil.
Indikator tambahan seperti KDJ, WR, OBV dan lain-lain dapat diperkenalkan untuk membantu menentukan titik jual beli. Namun, untuk mencegah sinyal perdagangan yang terlalu rumit.
Anda dapat terus mengoptimalkan parameter sesuai dengan varietas yang berbeda, dan membuat perpustakaan parameter. Jika varietas yang cocok untuk perdagangan frekuensi rendah dan menengah, Anda dapat memperpanjang siklus parameter dengan tepat.
Anda dapat mengatur mekanisme stop loss dinamis, bergerak stop loss secara bertahap setelah keuntungan. Atau menyesuaikan stop loss secara real-time sesuai dengan tingkat volatilitas pasar.
Strategi perdagangan MACD ganda reversal secara komprehensif mempertimbangkan penilaian tren dan sinyal reversal, dan didukung dengan sinyal penyaringan RVI dan CCI. Strategi ini dapat secara efektif mengidentifikasi penyesuaian garis pendek untuk memberikan rasio pengembalian risiko yang lebih baik, cocok untuk perdagangan intraday dan garis pendek, atau dapat digunakan sebagai bagian dari portofolio multi-strategi untuk memberikan keragaman strategi keseluruhan.
/*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)