Strategi ini menggunakan indikator penilaian risiko bergerak beradaptasi multi-siklus dan deviasi, yang dikombinasikan dengan titik-titik klasifikasi dalam operasi pasar untuk melakukan prediksi tren dan sinyal perdagangan output. Strategi ini disebut strategi prediksi tren beradaptasi multi-siklus.
Logika inti dari strategi ini adalah terbagi menjadi dua garis utama. Jalur utama pertama adalah menggunakan berbagai parameter rata-rata bergerak adaptif (nAMA) untuk membangun sistem penilaian filter multi-periode, dan jalur utama kedua adalah menggunakan berbagai parameter sistem penilaian risiko diskon untuk membangun sistem penilaian risiko multi-periode. Akhirnya, dua garis utama dikombinasikan, menghasilkan sinyal beli ketika siklus pendek melebihi siklus panjang.
Secara khusus, pada baris utama pertama, ada rata-rata bergerak beradaptasi dengan parameter 10 periode dan 4,24 masing-masing. Pada baris utama kedua, ada garis penilaian risiko defisit dengan parameter 7 periode dan 4,300 masing-masing. Akhirnya, 10 baris siklus di baris utama pertama dibandingkan dengan 31 baris siklus di baris utama kedua, membentuk transaksi.
Selain itu, strategi ini juga menyertakan modul konfirmasi harga kuantitatif. Sinyal perdagangan hanya berlaku jika volume transaksi lebih besar dari rata-rata volume transaksi 6 siklus. Ini dapat memfilter sinyal palsu hingga batas tertentu.
Keuntungan terbesar dari strategi ini adalah penggunaan struktur adaptasi multi-siklus, yang dapat menyesuaikan siklus secara dinamis sesuai dengan parameter adaptasi pasar yang beroperasi. Kombinasi siklus parameter yang sesuai dapat ditemukan baik di bab tren maupun di zona getaran, sehingga meningkatkan kemampuan strategi untuk menangkap tren.
Selain itu, strategi ini menggunakan sistem penilaian risiko marginal untuk melakukan pemfilteran konjungsi multi-siklus, yang dapat secara efektif mengontrol risiko perdagangan dan menghindari pembentukan posisi pada tahap risiko tinggi. Pada saat yang sama, strategi ini juga mengatur kondisi pemfilteran harga kuantitatif untuk menghindari sinyal yang salah ketika kapasitas kuantitatif tidak mencukupi.
Risiko terbesar dari strategi ini adalah bahwa diperlukan penilaian simetris dari beberapa garis siklus, sehingga kemampuan untuk menangkap pasar reversing jangka pendek yang buruk. Ketika garis siklus pendek dan garis siklus panjang berubah pada saat yang sama, mudah untuk menghasilkan sinyal yang tidak jelas. Dapat dioptimalkan dengan mempersingkat siklus parameter.
Selain itu, siklus utama dari sistem penilaian risiko rata-rata bergerak dan defisit yang beradaptasi relatif pendek dari yang besar, ada beberapa keterlambatan pada tingkat penggerak yang lebih panjang. Anda dapat memperpanjang siklus utama untuk mengurangi keterlambatan.
Mempersingkat parameter siklus utama untuk mengadaptasi rata-rata bergerak dan garis penilaian risiko defisit, berubah menjadi 5 siklus dan 20 siklus, meningkatkan penangkapan reversing pasar jangka pendek.
Meningkatkan parameter siklus utama menjadi 20 siklus dan 50 siklus, mengurangi keterlambatan yang didorong oleh pasar tingkat yang lebih tinggi.
Optimalkan parameter saluran perdagangan, mengubahnya menjadi saluran ATR 0,5 kali lipat, mengurangi kemungkinan transaksi bising.
Menambahkan indikator verifikasi hasil seperti MACD, meningkatkan keandalan sinyal.
Strategi ini menggabungkan beberapa indikator teknis, seperti rata-rata bergerak yang beradaptasi, penilaian risiko defisit, dan analisis kuantitatif, untuk membangun sistem keputusan perdagangan yang beradaptasi secara multi-siklus. Dengan penyesuaian parameter yang dioptimalkan, strategi ini dapat diterapkan pada berbagai jenis pasar, secara otomatis mengidentifikasi tren dan wilayah.
/*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")