
Strategi ini menggunakan indikator penilaian risiko pergerakan rata-rata dan defisit yang beradaptasi dengan pelbagai kitaran, digabungkan dengan titik pemisahan dalam operasi pasaran untuk membuat ramalan pergerakan dan output isyarat perdagangan. Strategi ini dipanggil strategi ramalan pergerakan beradaptasi dengan pelbagai kitaran.
Logik teras strategi ini dibahagikan kepada dua garis utama. Garis utama pertama adalah menggunakan parameter yang berbeza untuk membina sistem penilaian penapisan berkala yang menggunakan purata bergerak yang beradaptasi (nAMA), dan garis utama kedua adalah menggunakan parameter yang berbeza untuk membina sistem penilaian risiko berkala yang menggunakan sistem penilaian risiko berkala.
Khususnya, dalam garis utama pertama, rata-rata bergerak beradaptasi masing-masing ditetapkan dengan 10 kitaran dan parameter 4.24. Dalam garis utama kedua, garis penilaian risiko pelepasan ditetapkan dengan 7 kitaran dan parameter 4.300. Akhirnya, garis 10 kitaran dalam garis utama pertama dibandingkan dengan garis 31 kitaran dalam garis utama kedua, membentuk perdagangan.
Di samping itu, strategi ini juga menyediakan modul pengesahan harga kuantiti. Isyarat perdagangan hanya berkesan apabila jumlah transaksi lebih besar daripada purata 6 kitaran. Ini dapat menapis isyarat palsu hingga tahap tertentu.
Kelebihan terbesar strategi ini adalah penggunaan struktur penyesuaian diri pelbagai kitaran, yang boleh menyesuaikan kitaran secara dinamik mengikut parameter penyesuaian diri pasaran. Sama ada dalam bab trend atau di kawasan gegaran, kombinasi kitaran parameter yang sesuai dapat dijumpai, sehingga meningkatkan keupayaan strategi untuk menangkap pergerakan.
Di samping itu, strategi menggunakan sistem penilaian risiko barisan tolak untuk penapisan bersekutu pelbagai kitaran, yang dapat mengawal risiko perdagangan dengan berkesan dan mengelakkan pembentukan kedudukan pada tahap risiko tinggi. Pada masa yang sama, strategi juga menetapkan syarat penapisan harga kuantiti untuk mengelakkan isyarat yang salah apabila kuantiti tidak mencukupi.
Risiko terbesar dalam strategi ini adalah bahawa ia memerlukan pertimbangan yang sama dengan beberapa garis masa, jadi ia kurang mampu menangkap pasaran berbalik jangka pendek. Apabila garis masa pendek dan garis masa panjang berubah pada masa yang sama, ia mudah menghasilkan isyarat yang tidak jelas.
Di samping itu, kitaran utama sistem penilaian risiko rata-rata bergerak dan defisit yang beradaptasi agak pendek berbanding dengan papan besar, dan terdapat beberapa keterlambatan di bawah pemanduan tahap yang lebih lama. Kitaran utama boleh dilanjutkan dengan sewajarnya untuk mengurangkan keterlambatan.
Memperkecil parameter kitaran utama untuk mengadaptasi rata-rata bergerak dan garis penilaian risiko margin, dan mengubahnya menjadi 5 kitaran dan 20 kitaran, meningkatkan tangkapan reversing pasaran jangka pendek.
Meningkatkan parameter kitaran kuasa utama kepada 20 kitaran dan 50 kitaran, mengurangkan ketinggalan yang didorong oleh pasaran peringkat yang lebih lama.
Mengoptimumkan parameter saluran urus niaga kepada 0.5 kali ganda saluran ATR untuk mengurangkan kemungkinan transaksi bising.
Menambah penunjuk pengesahan hasil seperti MACD, meningkatkan kebolehpercayaan isyarat.
Strategi ini menggabungkan penggunaan pelbagai petunjuk teknikal seperti purata bergerak yang menyesuaikan diri, penilaian risiko defisit dan analisis kuantitatif untuk membina sistem keputusan perdagangan yang menyesuaikan diri dalam pelbagai kitaran. Dengan penyesuaian parameter yang dioptimumkan, ia boleh digunakan untuk pelbagai jenis pasaran, mengenal pasti trend dan kawasan secara automatik. Logik strategi jelas, nilai boleh digali, dan merupakan kaedah kuantitatif 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")