Diese Strategie heißt
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.grav
stellt den Gravitationsbegriff dar, der das Teilchen dem Preis nahe bringt;traj
Die Kombination dieser beiden Elemente führt dazu, dass das Teilchen um den Preis schwingt.
Dann berechnen wir die durchschnittliche Abweichungavgdist
zwischen 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.
Im Vergleich zu traditionellen gleitenden Durchschnittsstrategien hat diese Strategie folgende Vorteile:
Diese Strategie birgt auch einige Risiken:
Entsprechende Risikomanagementmaßnahmen umfassen: Optimierung von Parametern zur Verringerung falscher Signale, Festlegung klarer Zeitrahmenregeln, Festlegung geeigneter Stop-Loss-Positionen usw.
Diese Strategie kann in folgenden Aspekten optimiert werden:
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)