Strategi ini menggunakan purata bergerak adaptif pelbagai kitaran dan penunjuk penilaian risiko zigzag, digabungkan dengan titik fasa dalam operasi pasaran, untuk meramalkan trend dan isyarat perdagangan output.
Logik teras strategi ini dibahagikan kepada dua garis utama. Garis utama pertama menggunakan purata bergerak adaptif nAMA dengan parameter yang berbeza untuk membina sistem penghakiman penapisan pelbagai kitaran. Garis utama kedua menggunakan sistem penilaian risiko zigzag dengan parameter yang berbeza untuk membina sistem penilaian risiko pelbagai kitaran. Akhirnya, kedua-dua garis utama digabungkan. Apabila garis kitaran pendek melebihi garis kitaran panjang, isyarat beli dihasilkan. Apabila garis kitaran pendek berada di bawah garis kitaran panjang, isyarat jual dihasilkan.
Secara khusus, garis utama pertama menetapkan purata bergerak adaptif masing-masing 10-siklus dan 4, 24 parameter. Garis utama kedua menetapkan garis penilaian risiko zigzag masing-masing 7-siklus dan 4, 300 parameter. Akhirnya, garis 10-siklus dalam garis utama pertama dibandingkan dengan garis 31-siklus dalam garis utama kedua untuk membentuk isyarat perdagangan. Apabila garis 10-siklus naik di atas garis 31-siklus, isyarat beli dihasilkan. Apabila garis 10-siklus jatuh di bawah garis 31-siklus, isyarat jual dihasilkan.
Selain itu, strategi ini juga menetapkan modul pengesahan harga-volume. Isyarat perdagangan hanya sah apabila jumlah dagangan lebih besar daripada jumlah dagangan purata 6-siklus. Ini dapat menapis isyarat palsu hingga tahap tertentu. Akhirnya, strategi ini menarik titik fasa tahap kitaran yang berbeza sebagai isyarat rujukan.
Kelebihan terbesar strategi ini adalah penggunaan struktur penyesuaian pelbagai kitaran, yang dapat menyesuaikan kitaran mengikut keadaan pasaran untuk menyesuaikan kitaran secara dinamik.
Di samping itu, strategi ini menggunakan penapisan bersama pelbagai kitaran sistem penilaian risiko zigzag untuk mengawal risiko perdagangan dengan berkesan dan mengelakkan penubuhan kedudukan semasa fasa berisiko tinggi. Pada masa yang sama, strategi ini juga menetapkan syarat penapisan harga jumlah untuk mengelakkan menghasilkan isyarat yang salah apabila jumlah yang diaktifkan tidak mencukupi.
Risiko terbesar strategi ini adalah bahawa ia memerlukan penghakiman arah yang sama dari pelbagai garis kitaran, jadi keupayaan untuk menangkap pasaran pembalikan jangka pendek adalah lemah. Apabila garis kitaran pendek dan garis kitaran panjang berubah pada masa yang sama, isyarat yang tidak jelas dapat dengan mudah dihasilkan. Kitaran parameter boleh diperpendek untuk pengoptimuman.
Di samping itu, fasa kitaran utama sistem penilaian risiko purata bergerak adaptif dan zigzag agak pendek berbanding dengan pasaran yang lebih luas, dan terdapat beberapa kelewatan akibat pemacu tahap yang lebih lama.
Memendekkan parameter kitaran utama purata bergerak adaptif dan garis penilaian risiko zigzag kepada 5 kitaran dan 20 kitaran untuk meningkatkan tangkapan pembalikan pasaran jangka pendek.
Meningkatkan parameter kitaran utama kepada 20 kitaran dan 50 kitaran untuk mengurangkan kelewatan di bawah pemacu pasaran yang lebih lama.
Mengoptimumkan parameter saluran dagangan kepada 0.5 kali saluran ATR untuk mengurangkan kemungkinan perdagangan bising.
Tambah penunjuk pengesahan hasil seperti MACD untuk meningkatkan kebolehpercayaan isyarat.
Strategi ini secara komprehensif menggunakan pelbagai penunjuk teknikal seperti purata bergerak adaptif, penilaian risiko zigzag, dan analisis harga volum untuk membina sistem keputusan perdagangan adaptif bersiklus. Melalui pengoptimuman dan penyesuaian parameter, ia boleh digunakan untuk pelbagai jenis pasaran, secara automatik mengenal pasti trend dan julat. Logik strategi jelas dan berharga untuk menggali, yang merupakan kaedah kuantiti yang disyorkan.
/*backtest start: 2023-01-25 00:00:00 end: 2024-01-31 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy("Best Rabbit Strategy", shorttitle="Rabbit God",overlay=true) Length = input(10, minval=1) xPrice = close xvnoise = abs(xPrice - xPrice[1]) Fastend = input(2) Slowend = input(30) nfastend = 2/(Fastend + 1) nslowend = 2/(Slowend + 1) nsignal = abs(xPrice - xPrice[Length]) nnoise = sum(xvnoise, Length) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) nAMA = nz(nAMA[1]) + nsmooth * (xPrice - nz(nAMA[1])) Length2 = input(10, minval=1) xPrice2 = close xvnoise2 = abs(xPrice2 - xPrice2[1]) Fastend2 = input(4) Slowend2 = input(24) nfastend2 = 2/(Fastend2 + 1) nslowend2 = 2/(Slowend2 + 1) nsignal2 = abs(xPrice2 - xPrice2[Length2]) nnoise2 = sum(xvnoise, Length2) nefratio2 = iff(nnoise2 != 0, nsignal2 / nnoise2, 0) nsmooth2 = pow(nefratio2 * (nfastend2 - nslowend2) + nslowend2, 2) nAMA2 = nz(nAMA2[1]) + nsmooth2 * (xPrice2 - nz(nAMA2[1])) price = input(hl2) len = input(defval=7,minval=1) FC = input(defval=4,minval=1) SC = input(defval=300,minval=1) len1 = len/2 w = log(2/(SC+1)) H1 = highest(high,len1) L1 = lowest(low,len1) N1 = (H1-L1)/len1 H2 = highest(high,len)[len1] L2 = lowest(low,len)[len1] N2 = (H2-L2)/len1 H3 = highest(high,len) L3 = lowest(low,len) N3 = (H3-L3)/len dimen1 = (log(N1+N2)-log(N3))/log(2) dimen = iff(N1>0 and N2>0 and N3>0,dimen1,nz(dimen1[1])) alpha1 = exp(w*(dimen-1)) oldalpha = alpha1>1?1:(alpha1<0.01?0.01:alpha1) oldN = (2-oldalpha)/oldalpha N = (((SC-FC)*(oldN-1))/(SC-1))+FC alpha_ = 2/(N+1) alpha = alpha_<2/(SC+1)?2/(SC+1):(alpha_>1?1:alpha_) out = (1-alpha)*nz(out[1]) + alpha*price price2 = input(hl2) len2 = input(defval=31,minval=1) FC2 = input(defval=40,minval=1) SC2 = input(defval=300,minval=1) len12 = len2/2 w2 = log(2/(SC2+1)) H12 = highest(high,len12) L12 = lowest(low,len12) N12 = (H1-L1)/len12 H22 = highest(high,len2)[len12] L22 = lowest(low,len2)[len12] N22 = (H22-L22)/len12 H32 = highest(high,len2) L32 = lowest(low,len2) N32 = (H32-L32)/len2 dimen12 = (log(N12+N22)-log(N32))/log(2) dimen2 = iff(N12>0 and N22>0 and N32>0,dimen12,nz(dimen12[1])) alpha12 = exp(w*(dimen2-1)) oldalpha2 = alpha12>1?1:(alpha12<0.01?0.01:alpha12) oldN2 = (2-oldalpha2)/oldalpha2 N4 = (((SC2-FC2)*(oldN2-1))/(SC2-1))+FC2 alpha_2 = 2/(N4+1) alpha2 = alpha_2<2/(SC2+1)?2/(SC2+1):(alpha_2>1?1:alpha_2) out2 = (1-alpha2)*nz(out2[1]) + alpha2*price2 tf = input(title="Resolution", defval = "current") vamp = input(title="VolumeMA", defval=6) vam = sma(volume, vamp) up = high[3]>high[4] and high[4]>high[5] and high[2]<high[3] and high[1]<high[2] and volume[3]>vam[3] down = low[3]<low[4] and low[4]<low[5] and low[2]>low[3] and low[1]>low[2] and volume[3]>vam[3] fractalup = up ? high[3] : fractalup[1] fractaldown = down ? low[3] : fractaldown[1] fuptf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractalup) fdowntf = request.security(syminfo.tickerid,tf == "current" ? timeframe.period : tf, fractaldown) plot(fuptf, "FractalUp", color=lime, linewidth=1, style=cross, transp=0, offset =-3, join=false) plot(fdowntf, "FractalDown", color=red, linewidth=1, style=cross, transp=0, offset=-3, join=false) buyEntry= nAMA[0]>nAMA2[0] and out[0]>out2[0] sellEntry= nAMA[0]<nAMA2[0] and out[0]<out2[0] if (buyEntry) strategy.entry("Buy", strategy.long, comment="Long Position Entry") if (sellEntry) strategy.entry("Sell", strategy.short, comment="Short Position Entry")