Handelsstrategie für ein System mit gleitenden Durchschnittswerten auf mehreren Zeitlinien


Erstellungsdatum: 2023-12-12 16:07:18 zuletzt geändert: 2023-12-12 16:07:18
Kopie: 1 Klicks: 648
1
konzentrieren Sie sich auf
1621
Anhänger

Handelsstrategie für ein System mit gleitenden Durchschnittswerten auf mehreren Zeitlinien

Überblick

Die Strategie verwendet ein einheitliches System mit mehreren Zeitlinien, kombiniert mit mehreren technischen Indikatoren wie dem RSI, um eine automatische Umschaltung zu ermöglichen. Die Strategie wird als Multi-Timeframe Moving Average System Trading Strategy bezeichnet. Die Hauptidee besteht darin, durch den Vergleich von Preistrends in verschiedenen Zeiträumen zu verhandeln, um zuverlässigere Handelssignale zu erzeugen.

Strategieprinzip

Die Strategie verwendet mehrere Gleichgewichtsindikatoren wie JMA, TEMA und DEMA, um die Preisentwicklung in verschiedenen Perioden wie 15 Minuten, 30 Minuten und 60 Minuten zu berechnen. Die Strategie verwendet beispielsweise die durchschnittliche Liniebewegung, die von JMA in 15 Perioden berechnet wurde, um die Preisentwicklung in diesem Zeitraum zu beurteilen. Die Strategie vergleicht dann die Preisentwicklung in verschiedenen Perioden, um zu beurteilen, ob eine Abweichung zwischen der langen und der kurzen Linie besteht.

Die Varianten trend, trend2 und trend3 in der Strategie repräsentieren die Preisentwicklung für 15 Minuten, 30 Minuten und 60 Minuten. Wenn der Preis für 15 Minuten umgekehrt ist, während der Preis für 30 Minuten und 60 Minuten noch nicht umgekehrt ist, wird ein Handelssignal erzeugt, das als Abweichung zwischen der kurzen und der langen Linie beurteilt wird.

Die Strategie basiert auf der Idee, durch den Vergleich von Beziehungen zwischen mehreren Zyklen falsche Signale herauszufiltern und zuverlässige Handelssignale zu erzeugen.

Analyse der Stärken

Diese Strategie hat folgende Vorteile:

  1. Die Verwendung von mehrfachen Zeitlinien zur Verbesserung der Signalzuverlässigkeit und zur Filterung falscher Signale;
  2. Zusammenfassende Beurteilungen in Kombination mit mehreren Indikatoren, um Probleme zu vermeiden, die durch einen einzigen Indikator entstehen;
  3. Automatische Umschaltung von mehreren Luftköpfen, ohne manuelle Intervention, reduziert die Schwierigkeit der Bedienung.

Risikoanalyse

Die Strategie birgt auch einige Risiken:

  1. Multi-Times-Axis-Analysen erhöhen die Unsicherheit über den Zeitpunkt der Transaktion und können den optimalen Einstiegsmoment verpassen.
  2. Gleichzeitig kann die falsche Einstellung der Parameter in Kombination mit mehreren Indikatoren zu einer Verringerung der Qualität der Handelssignale führen.
  3. Es besteht die Gefahr, dass die automatische Umschaltung der Multifunktion überoptimiert ist und die Festplattenwirkung schwächer als die Rückmessung ist.

Wir können diese Risiken mit folgenden Maßnahmen verringern:

  1. Anpassung der Parameter der Zeitleiste, um sicherzustellen, dass die kurzlebigen Signale rechtzeitig in vez eingegeben werden;
  2. Die Daten werden von der Zentralregierung und den Behörden der Provinzen erfasst.
  3. Es wird eine angemessene Intervention in der virtuellen Währung durchgeführt, um automatische Blindhandelssysteme zu vermeiden.

Optimierungsrichtung

Die Strategie kann noch weiter optimiert werden:

  1. Die Einführung von Machine-Learning-Algorithmen, die automatisch mehrdimensionale Parameter durch Modell-Training optimieren können;
  2. Die Anpassung der Schiebepunkte kann erweitert werden, um die Größe der Schiebepunkte an die Marktschwankungen anzupassen und die Festplatte zu verbessern.
  3. Die Einführung eines Preiskonfirmierungsmechanismus könnte die Schäden durch eine schnelle Trendwende verhindern.

Zusammenfassen

Diese Strategie erzeugt Handelssignale, um automatische Multiple-Head-Switching und Rückmessung zu ermöglichen. Wir haben auch festgestellt, dass die Strategie einen gewissen Raum für Verbesserungen bietet. In der Zukunft können die reale Effektivität der Strategie durch die Einführung von Methoden wie maschinelles Lernen, Anpassungs-Slipping und Preisbestätigung optimiert werden.

Strategiequellcode
/*backtest
start: 2023-11-11 00:00:00
end: 2023-12-11 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("Drexel Strategy", overlay=true )
Length1=7
Length2=9
Multiplier=input(1.5,"Multiplier")
jma(src,length) =>
    beta = 0.45*(length-1)/(0.45*(length-1)+2)
    alpha = beta
    tmp0 = (1-alpha)*src + alpha*nz(tmp0[1])
    tmp1 = (src - tmp0[0])*(1-beta) + beta*nz(tmp1[1])
    tmp2 = tmp0[0] + tmp1[0]
    tmp3 = (tmp2[0] - nz(tmp4[1]))*((1-alpha)*(1-alpha)) + (alpha*alpha)*nz(tmp3[1])
    tmp4 = nz(tmp4[1]) + tmp3[0]
    JMA = tmp4
    JMA
rsx(src,length) =>
    f90_ = (nz(f90_[1]) == 0.0) ? 1.0 : (nz(f88[1]) <= nz(f90_[1])) ? nz(f88[1])+1 : nz(f90_[1])+1
    f88 = (nz(f90_[1]) == 0.0) and (length-1 >= 5) ? length-1.0 : 5.0 
    f8 =  100.0*(src) 
    f18 = 3.0 / (length + 2.0) 
    f20 = 1.0 - f18 
    f10 = nz(f8[1])
    v8 = f8 - f10 
    f28 = f20 * nz(f28[1]) + f18 * v8 
    f30 = f18 * f28 + f20 * nz(f30[1])
    vC = f28 * 1.5 - f30 * 0.5 
    f38 = f20 * nz(f38[1]) + f18 * vC 
    f40 = f18 * f38 + f20 * nz(f40[1])
    v10 = f38 * 1.5 - f40 * 0.5 
    f48 = f20 * nz(f48[1]) + f18 * v10 
    f50 = f18 * f48 + f20 * nz(f50[1])
    v14 = f48 * 1.5 - f50 * 0.5 
    f58 = f20 * nz(f58[1]) + f18 * abs(v8) 
    f60 = f18 * f58 + f20 * nz(f60[1])
    v18 = f58 * 1.5 - f60 * 0.5
    f68 = f20 * nz(f68[1]) + f18 * v18 
    f70 = f18 * f68 + f20 * nz(f70[1])
    v1C = f68 * 1.5 - f70 * 0.5 
    f78 = f20 * nz(f78[1]) + f18 * v1C 
    f80 = f18 * f78 + f20 * nz(f80[1])
    v20 = f78 * 1.5 - f80 * 0.5
    f0 = ((f88 >= f90_) and (f8 != f10)) ? 1.0  : 0.0
    f90 = ((f88 == f90_) and (f0 == 0.0))  ? 0.0  : f90_
    v4_ = ((f88 < f90) and (v20 > 0.0000000001)) ? (v14 / v20 + 1.0) * 50.0 : 50.0
    rsx = ((v4_ > 100.0) ? 100.0 : (v4_ < 0.0) ? 0.0 : v4_)-50
    rsx
xPrice=open
emaA = ema(xPrice, Length2)  
Xprice = rsx(open,14)
XPrice = high, xprice = low
xe1 = jma(xPrice, Length1)
xe11 = jma(Xprice[1],Length1)
xe111 = jma(XPrice[1],Length1)
xe1111=jma(xprice[1],Length1)
xe2 = jma(xe1, Length1)
xe21 = jma(xe111, Length1)
xe3 = jma(xe2, Length1)
xe31 = jma(xe1111,Length2)
xe3a = jma(xe2,Length1)
xe4 = jma(xe3, Length1)
xe5 = jma(xe4, Length1)
xe6 = jma(xe5, Length1)
b = 0.7
c1 = -b*b*b
c2 = 3*b*b+3*b*b*b
c3 = -6*b*b-3*b-3*b*b*b
c3a = nz(c3a[1])
c4 = 1+3*b+b*b*b+3*b*b
TEMA = c1 * xe6 + c2 * xe5 + c3 * xe4 + c4 * xe3
DEMA = 2 * emaA - ema(emaA, Length2)
Length(mod)=>(mod*c3a)+Length2
Trend1=TEMA/DEMA
a=rsx(open,Length(2))
b1=rsx(open,Length(3))
c=rsx(open,Length(5))
d=rsx(open,Length(8))
e=rsx(open,Length(13))
f=rsx(open,Length(21))
g=rsx(open,Length(34))
h=rsx(open,Length(55))
i=rsx(open,Length(89))
j=rsx(open,Length(144))
trend1 = (((a-b1)+(c-d)+(e-f)+(g-h)+(i-j))/10)
trend = trend1>0?avg(a,b,c4,c2):trend1==0?XPrice:avg(rsx(open,24),jma(open,24),rsx(jma(open,24),24))
trend2 = trend1>0?avg(d,e,c2,c1):trend1==0?XPrice:avg(rsx(open,48),jma(open,48),rsx(jma(open,48),48))
trend3 = trend1>0?avg(d,e,c2,c1):trend1==0?xprice:avg(rsx(open,96),jma(open,96),rsx(jma(open,96),96))
bc=request.security(syminfo.tickerid,'15',trend)
bc1=request.security(syminfo.tickerid,'15',trend2)
bc2=request.security(syminfo.tickerid,'15',trend3)
bd=request.security(syminfo.tickerid,'30',trend)
bd1=request.security(syminfo.tickerid,'30',trend2)
bd2=request.security(syminfo.tickerid,'30',trend3)
be=request.security(syminfo.tickerid,'60',trend)
be1=request.security(syminfo.tickerid,'60',trend2)
be2=request.security(syminfo.tickerid,'60',trend3)
bf=request.security(syminfo.tickerid,'120',trend)
bf1=request.security(syminfo.tickerid,'120',trend2)
bf2=request.security(syminfo.tickerid,'120',trend3)
bg=request.security(syminfo.tickerid,'240',trend)
bg1=request.security(syminfo.tickerid,'240',trend2)
bg2=request.security(syminfo.tickerid,'240',trend3)
bh=request.security(syminfo.tickerid,'D',trend)
bh1=request.security(syminfo.tickerid,'D',trend2)
bh2=request.security(syminfo.tickerid,'D',trend3)
Trend=((bc-bc1)+(bd-bd1)+(be-be1)+(bf-bf1)+(bg-bg1)+(bh))
Trend11=((bc-bc1)+(bd-bd1)+(be-be1)+(bf-bf1)+(bg-bg1)+(bh1))
Trend33 = max(min(min(min(bc2,bd2),min(be2,bf2)),bg2),bh2)
AverageTrend=sma(Trend1,1000)
StdDev=Multiplier*stdev(Trend1,1000)
TopBand=AverageTrend+StdDev
BotBand=AverageTrend-StdDev
ap=open
n1=10
n2=21
esa1 = jma(ap, n1)
d1 = jma(abs(ap - esa1), n1)
x1 = trend3==Trend33
y1 = trend2==Trend11 
ci = (ap - esa1) / (0.015 * d1)
tci = jma(ci, n2)
wt1=tci
wt2=sma(wt1,4)
fast=jma(open,5)
slow=jma(open,13)
macd=fast-slow
signal=sma(macd,4)
WaveTrend1=wt1-wt2
JMACD1=macd-signal
rsi = (((rsi(open,6))-50)*3)
g1=rsi>Trend1 and WaveTrend1>Trend1 and JMACD1>Trend1
h1=g1?tci*c3a:nz(h[1])
strategy.entry("Long",true,when=x1)
strategy.close("Long",y1)
strategy.entry("Short",false,when=y1)
strategy.close("Short",x1)