Strategie für Gyroskopbanden auf der Grundlage von mehreren Zeitrahmen und durchschnittlicher Amplitude

Schriftsteller:ChaoZhang, Datum: 2023-11-24 17:29:39
Tags:

img

Übersicht

Diese Strategie heißt Gyroskopische Bands-Strategie basierend auf Multi Time Frame und Durchschnittsamplitude.

Strategie Logik

Die Strategie definiert zunächst ein Teilchen, das der Kursbahn entspricht. Unter dem Einfluss von Schwerkraft und Trägheit schwingt die Partikelbahn um den Preis herum. Dann berechnen wir die durchschnittliche Abweichung zwischen dem Teilchen und dem Preis und verwenden sie, um obere und untere Bands zu konstruieren. Wenn der Preis durch das obere oder untere Band bricht, werden Handelssignale generiert.

Insbesondere ist die in der Strategie definierte Partikelpositionsformel:

pos:=if pos<close  
     nz(pos[1])+grav+traj
else
     nz(pos[1])-(grav)+traj 

Hier ist er.gravstellt den Gravitationsbegriff dar, der das Teilchen dem Preis nahe bringt;trajDie Kombination dieser beiden Elemente führt dazu, dass das Teilchen um den Preis schwingt.

Dann berechnen wir die durchschnittliche Abweichungavgdistzwischen dem Preis und dem Teilchen, und nutzen es, um obere und untere Bands zu konstruieren:

bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)  

Schließlich geht man lang, wenn der Preis über dem oberen Band liegt, und kurz, wenn er unter dem unteren Band liegt.

Vorteile

Im Vergleich zu traditionellen gleitenden Durchschnittsstrategien hat diese Strategie folgende Vorteile:

  1. Verwendung von Partikelflugbahnen zur besseren Simulation von Preisschwankungen;
  2. Die oberen und unteren Bands können anhand der historischen Durchschnittsamplitude anpassungsfähig angepasst werden, was zur Erfassung von Durchbrüchen beiträgt.
  3. Das Multi-Time-Frame-Design kann zwischen hohen und niedrigen Zeitrahmen wechseln, um mehr Handelschancen zu erfassen.

Risiken

Diese Strategie birgt auch einige Risiken:

  1. Die falsche Einstellung der Parameter der Partikelbewegung kann zu falschen oder fehlenden Signalen führen.
  2. Bei Wechseln zwischen mehreren Zeitrahmen können Signalkonflikte auftreten.
  3. Durchbruchssignale der oberen und unteren Bands können das Stop-Loss-Risiko erhöhen.

Entsprechende Risikomanagementmaßnahmen umfassen: Optimierung von Parametern zur Verringerung falscher Signale, Festlegung klarer Zeitrahmenregeln, Festlegung geeigneter Stop-Loss-Positionen usw.

Optimierungsrichtlinien

Diese Strategie kann in folgenden Aspekten optimiert werden:

  1. Optimierung der Partikelbewegungsparameter, um sie auf die Preisentwicklung anzupassen;
  2. Erhöhung der Anzahl der Zeitrahmen-Schichten zur Bestätigung von Signalen in höheren Zeitrahmen;
  3. Hinzufügen von Volatilitätsindikatoren zur Vermeidung von Signalen bei starken Marktschwankungen;
  4. Optimieren Sie Stop-Loss-Strategien, um Einzelstop-Loss zu reduzieren.

Schlussfolgerung

Diese Strategie verbessert die gleitende Durchschnittsstrategie durch die Einführung von Preisverlaufsanpassung. Sie verfügt über Funktionen wie adaptive Parameter, Multi-Zeitrahmen, Stop-Loss-Optimierung usw. Der Schlüssel besteht darin, eine geeignete Partikelbewegungsgleichung zu finden, um den Preis zu simulieren. Obwohl weitere Tests und Optimierungen erforderlich sind, ist die Grundidee machbar und lohnt sich weitere Forschung.


/*backtest
start: 2022-11-17 00:00:00
end: 2023-11-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//2 revert
strategy("Jomy's Gyroscopic Bands",precision=8,commission_value=.03,overlay=true,initial_capital =10000, default_qty_type=strategy.percent_of_equity, default_qty_value=100,  pyramiding=0)//,calc_on_order_fills= true, calc_on_every_tick=false) 
leverage=input(1,"leverage")
a=0
a:= if volume > -1
    nz(a[1])+1
else
    nz(a)
    
vara=input(4.0,"variable a (10 to the power of __ ",step=.5)
vara:=pow(10,vara)
varb=input(12,"variable b")
pos=0.0
pos:=if a<=5
    close
else
    nz(pos[1])
grav=1/sqrt((close*close))*vara
traj=0.0
traj:=(nz(close[1])-nz(close[2])+nz(traj[1])*varb)/(varb+1)
pos:=if pos<close
    nz(pos[1])+grav+traj
else
    nz(pos[1])-(grav)+traj

plot(pos,color=color.white)
plot(close)

avgdist=abs(close-pos)
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)

plbbh=plot(bbh,color=color.red)
plbbl=plot(bbl,color=color.red)

long = close>pos
short = close<pos

fill(plbbh,plbbl,color=long?color.lime:color.red)
//bgcolor(close>bbh?color.lime:close<bbl?color.red:na,transp=90)

strategy.entry("Long1",strategy.long,when=long,qty=(strategy.equity*leverage/open)) 
strategy.close("Long1",when=not long)
strategy.entry("Short1",strategy.short,when=short,qty=(strategy.equity*leverage/open)) 
strategy.close("Short1",when=not short)


//plot(strategy.equity,color=color.lime,linewidth=4)

Mehr