Diese Strategie verwendet mehrstündige adaptive gleitende Durchschnitte und Zickzack-Risikobewertungsindizes, kombiniert mit Phasing-Punkten im Marktbetrieb, um Trends und Ausgangshandelssignale vorherzusagen.
Die Kernlogik der Strategie ist in zwei Hauptlinien unterteilt. Die erste Hauptlinie nutzt adaptive gleitende Durchschnitte nAMA mit verschiedenen Parametern, um ein Mehrzyklus-Filter-Urteilssystem zu konstruieren. Die zweite Hauptlinie nutzt das Zickzack-Risikobewertungssystem mit verschiedenen Parametern, um ein Mehrzyklus-Risikobewertungssystem zu konstruieren. Schließlich werden die beiden Hauptlinien kombiniert. Wenn die Kurzzykluslinie die Langzykluslinie überschreitet, wird ein Kaufsignal generiert. Wenn die Kurzzykluslinie unterhalb der Langzykluslinie ist, wird ein Verkaufssignal generiert.
Die erste Hauptlinie setzt adaptive gleitende Durchschnitte von 10 Zyklen bzw. 4,24 Parametern. Die zweite Hauptlinie setzt Zickzack-Risikobewertungslinien von 7 Zyklen bzw. 4,300 Parametern. Schließlich wird die 10-Zyklus-Linie in der ersten Hauptlinie mit der 31-Zyklus-Linie in der zweiten Hauptlinie verglichen, um ein Handelssignal zu bilden. Wenn die 10-Zyklus-Linie über die 31-Zyklus-Linie steigt, wird ein Kaufsignal generiert. Wenn die 10-Zyklus-Linie unter die 31-Zyklus-Linie fällt, wird ein Verkaufssignal generiert.
Darüber hinaus legt die Strategie auch ein Volumen-Preis-Bestätigungsmodul fest. Handelssignale sind nur gültig, wenn das Handelsvolumen größer als das durchschnittliche Handelsvolumen von 6 Zyklen ist. Dies kann falsche Signale bis zu einem gewissen Grad filtern. Schließlich zeichnet die Strategie Phasenpunkte verschiedener Zyklusstufen als Referenzsignale.
Der größte Vorteil dieser Strategie besteht in der Anwendung von mehrzyklischen anpassungsfähigen Strukturen, die die Zyklen anpassungsfähig an die Marktbedingungen anpassen können, um die Zyklen dynamisch anzupassen.
Darüber hinaus setzt die Strategie eine mehrstündige gemeinsame Filterung von Zickzack-Risikobewertungssystemen ein, um Handelsrisiken wirksam zu kontrollieren und Positionen in Hochrisikophasen zu vermeiden.
Das größte Risiko dieser Strategie ist, dass sie das gleiche Richtungsurteil von mehreren Zykluslinien erfordert, so dass die Fähigkeit, kurzfristige Umkehrmärkte zu erfassen, schlecht ist. Wenn sich Kurzzykluslinien und Langzykluslinien gleichzeitig ändern, können leicht unklare Signale generiert werden. Parameterzyklen können zur Optimierung verkürzt werden.
Darüber hinaus ist die Hauptzyklusphase des adaptiven gleitenden Durchschnitts und des Zickzack-Risikobewertungssystems im Vergleich zum breiteren Markt relativ kurz, und es gibt eine gewisse Verzögerung aufgrund längerer Niveaus.
Die wichtigsten Zyklusparameter des adaptiven gleitenden Durchschnitts und der Zickzack-Risikobewertung auf 5 und 20 Zyklen zu verkürzen, um die Erfassung von kurzfristigen Marktumkehrungen zu erhöhen.
Erhöhung der Hauptzyklusparameter auf 20 und 50 Zyklen, um die Verzögerung bei längeren Marktverzögerungen zu verringern.
Optimierung der Handelskanalparameter auf das 0,5-fache des ATR-Kanals, um die Möglichkeit eines lauten Handels zu verringern.
Hinzufügen von Ergebnisüberprüfungsindikatoren wie MACD zur Verbesserung der Signalzuverlässigkeit.
Diese Strategie nutzt umfassend mehrere technische Indikatoren wie adaptive gleitende Durchschnitte, Zickzackrisikobewertungen und Volumenpreisanalyse, um ein mehrzyklisches adaptives Handelsentscheidungssystem zu konstruieren. Durch Optimierung und Anpassung von Parametern kann sie auf verschiedene Arten von Märkten angewendet werden, die automatisch Trends und Bereiche identifizieren.
/*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")