Strategi Peramalan Tren Adaptif Multi-siklus

Penulis:ChaoZhang, Tanggal: 2024-02-01 14:34:38
Tag:

img

Gambaran umum

Strategi ini menggunakan rata-rata bergerak adaptif multi-siklus dan indikator penilaian risiko zigzag, dikombinasikan dengan titik fase dalam operasi pasar, untuk memprediksi tren dan sinyal perdagangan output.

Prinsip Strategi

Logika inti dari strategi ini dibagi menjadi dua garis utama. Jalur utama pertama menggunakan rata-rata bergerak adaptif nAMA dengan parameter yang berbeda untuk membangun sistem penilaian penyaringan multi-siklus. Jalur utama kedua menggunakan sistem penilaian risiko zigzag dengan parameter yang berbeda untuk membangun sistem penilaian risiko multi-siklus. Akhirnya, dua garis utama digabungkan. Ketika garis siklus pendek melebihi garis siklus panjang, sinyal beli dihasilkan. Ketika garis siklus pendek berada di bawah garis siklus panjang, sinyal jual dihasilkan.

Secara khusus, garis utama pertama menetapkan rata-rata 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 di garis utama pertama dibandingkan dengan garis 31-siklus di garis utama kedua untuk membentuk sinyal perdagangan. Ketika garis 10-siklus naik di atas garis 31-siklus, sinyal beli dihasilkan. Ketika garis 10-siklus jatuh di bawah garis 31-siklus, sinyal jual dihasilkan.

Selain itu, strategi ini juga menetapkan modul konfirmasi volume-harga. Sinyal perdagangan hanya berlaku ketika volume perdagangan lebih besar dari volume perdagangan rata-rata 6 siklus. Ini dapat menyaring sinyal palsu sampai batas tertentu. Akhirnya, strategi ini menarik titik fase dari tingkat siklus yang berbeda sebagai sinyal referensi.

Analisis Keuntungan Strategi

Keuntungan terbesar dari strategi ini adalah penerapan struktur adaptif multi-siklus, yang dapat menyesuaikan siklus secara adaptif sesuai dengan kondisi pasar untuk menyesuaikan siklus secara dinamis.

Selain itu, strategi ini menggunakan penyaringan gabungan multi-siklus dari sistem penilaian risiko zigzag untuk secara efektif mengendalikan risiko perdagangan dan menghindari pembentukan posisi selama fase berisiko tinggi. Pada saat yang sama, strategi ini juga menetapkan kondisi penyaringan harga volume untuk menghindari menghasilkan sinyal yang salah ketika volume yang diaktifkan tidak cukup.

Analisis Risiko Strategi

Risiko terbesar dari strategi ini adalah bahwa ia membutuhkan penilaian arah yang sama dari beberapa garis siklus, sehingga kemampuan untuk menangkap pasar pembalikan jangka pendek adalah buruk. Ketika garis siklus pendek dan garis siklus panjang berubah pada saat yang sama, sinyal yang tidak jelas dapat dengan mudah dihasilkan. Siklus parameter dapat diperpendek untuk optimasi.

Selain itu, fase siklus utama dari rata-rata bergerak adaptif dan sistem penilaian risiko zigzag relatif pendek dibandingkan dengan pasar yang lebih luas, dan ada beberapa keterlambatan karena dorongan tingkat yang lebih lama.

Arah Optimasi Strategi

  1. Mempersingkat parameter siklus utama dari rata-rata bergerak adaptif dan garis penilaian risiko zigzag menjadi 5 siklus dan 20 siklus untuk meningkatkan penangkapan pembalikan pasar jangka pendek.

  2. Meningkatkan parameter siklus utama menjadi 20 siklus dan 50 siklus untuk mengurangi keterlambatan di bawah pendorong pasar level yang lebih lama.

  3. Mengoptimalkan parameter saluran perdagangan menjadi 0,5 kali saluran ATR untuk mengurangi kemungkinan perdagangan berisik.

  4. Tambahkan indikator verifikasi hasil seperti MACD untuk meningkatkan keandalan sinyal.

Ringkasan

Strategi ini secara komprehensif menggunakan beberapa indikator teknis seperti rata-rata bergerak adaptif, penilaian risiko zigzag, dan analisis volume-harga untuk membangun sistem keputusan perdagangan adaptif multi-siklus. Melalui optimalisasi dan penyesuaian parameter, strategi ini dapat diterapkan pada berbagai jenis pasar, secara otomatis mengidentifikasi tren dan kisaran. Logika strategi jelas dan berharga untuk digali, yang merupakan metode kuantitatif yang direkomendasikan.


/*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")

Lebih banyak