Mehrperioden-Strategie zur adaptiven Trendvorhersage


Erstellungsdatum: 2024-02-01 14:34:38 zuletzt geändert: 2024-02-01 14:34:38
Kopie: 0 Klicks: 682
1
konzentrieren Sie sich auf
1617
Anhänger

Mehrperioden-Strategie zur adaptiven Trendvorhersage

Überblick

Die Strategie nutzt mehrzeitige, anpassungsfähige Moving Averages und Depreciation-Risikovaluation-Indikatoren, die in Kombination mit den Schlüsselfunktionen der Marktbewegung zur Bewegungsvorhersage und zur Handelssignal-Ausgabe verwendet werden. Die Strategie wird als “Mehrzeitige, anpassungsfähige Bewegungsvorhersage-Strategie” bezeichnet.

Strategieprinzip

Die Kernlogik der Strategie besteht aus zwei Leitlinien. Die erste Leitlinie ist die Verwendung von unterschiedlichen Parametern, um ein Mehrzeit-Filterungssystem zu bauen. Die zweite Leitlinie ist die Verwendung von unterschiedlichen Parametern, um ein Mehrzeit-Risiko-Bewertungssystem zu bauen.

Konkret wird in der ersten Hauptlinie ein Adaptive Moving Average mit 10 Perioden und 4,24 Parametern eingestellt. In der zweiten Hauptlinie wird eine Abweichungsrisikobewertungslinie mit 7 Perioden und 4,300 Parametern eingestellt. Schließlich wird die 10-Perioden-Linie in der ersten Hauptlinie mit der 31-Perioden-Linie in der zweiten Hauptlinie verglichen, um eine Transaktion zu bilden.

Darüber hinaus wurde ein Modul zur Preisbestätigung in der Strategie eingerichtet. Die Handelssignale sind nur dann wirksam, wenn die Transaktionsmenge größer als die durchschnittliche Transaktionsmenge von 6 Zyklen ist. Dies kann zu einem gewissen Grad falsche Signale filtern.

Strategische Stärkenanalyse

Der größte Vorteil dieser Strategie liegt in der Verwendung einer mehrzeitigen Anpassungsstruktur, die sich an die Anpassungsparameter des Marktes anpasst und die Perioden dynamisch anpasst. Sowohl in Trendkapiteln als auch in Schwingungsgebieten kann die richtige Kombination von Parameterzyklen gefunden werden, um die Trendfangfähigkeit der Strategie zu verbessern.

Darüber hinaus verwendet die Strategie ein Abweichungsrisikobewertungssystem für mehrere Zyklen, um das Handelsrisiko effektiv zu kontrollieren und die Errichtung von Positionen in der Phase des hohen Risikos zu vermeiden. Gleichzeitig setzt die Strategie auch die Filterbedingungen für die Menge ein, um falsche Signale zu vermeiden, wenn die Menge nicht ausreicht.

Strategische Risikoanalyse

Die größte Gefahr dieser Strategie besteht darin, dass die Gleichgewichtsbeurteilung mehrerer Periodenzüge erforderlich ist, so dass die Fähigkeit, einen kurzfristigen reversing-Markt zu erfassen, schlechter ist. Wenn die kurze Periodenzüge und die lange Periodenzüge gleichzeitig variieren, können leicht unklare Signale erzeugt werden.

Darüber hinaus sind die Hauptregionszyklen für adaptive Moving Averages und Abweichungsrisikobewertungssysteme relativ kurz im Verhältnis zum Großraum, und es besteht eine gewisse Verzögerung bei einer längeren Antriebsstufe. Die Hauptregionszyklen können entsprechend verlängert werden, um die Verzögerung zu verringern.

Richtung der Strategieoptimierung

  1. Kurzer Einsatz von Adaptive Moving Averages und Abweichungen der Hauptsyklusparameter auf 5- und 20-Zyklen, um die Erfassung von kurzfristigen Marktreversungen zu verbessern.

  2. Erhöhung der Parameter für die Hauptschwingungszyklen auf 20 und 50 und Verringerung der Marktrückstände auf höheren Ebenen.

  3. Optimierung der Handelskanalparameter auf ein 0,5faches ATR-Kanal, um die Wahrscheinlichkeit von Geräuschhandel zu verringern.

  4. Erhöhung der Signalzuverlässigkeit durch die Einführung von Ergebnisverifizierungsindikatoren wie MACD.

Zusammenfassen

Die Strategie verwendet mehrere technische Indikatoren wie Adaptive Moving Averages, Depreciation Risk Assessment und Quantifizierungsanalysen, um ein mehrzeitlich anpassungsfähiges Handelsentscheidungssystem zu erstellen. Durch die optimierte Anpassung der Parameter kann sie für verschiedene Arten von Märkten verwendet werden, Trends und Regionen werden automatisch identifiziert. Die Strategie ist klar in der Logik, die Werte sind abrufbar und ist eine empfehlenswerte Quantifizierungsmethode.

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