
Cette stratégie est appelée stratégie de négociation multi-chronologique basée sur l’amplitude moyenne de la trajectoire. Son idée principale est de construire un signal de négociation basé sur l’amplitude moyenne entre la particule et le prix en introduisant une particule correspondant à la trajectoire des prix.
La stratégie commence par définir une particule qui s’adapte à l’orbite des prix. La particule est affectée par la gravité et l’inertie, et sa trajectoire de mouvement s’écarte autour de l’oscillation des prix.
Plus précisément, la formule de position des particules définie dans la stratégie est la suivante:
pos:=if pos<close
nz(pos[1])+grav+traj
else
nz(pos[1])-(grav)+traj
Je suis là.gravLe point de gravité, qui rapproche les particules du prix;trajLes deux composants permettent aux particules d’osciller autour du prix.
Et puis on calcule la distance moyenne entre le prix et la particule.avgdistLa construction de l’orbite ascendante et descendante:
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)
Enfin, lorsque le prix est supérieur à la ligne supérieure, faites plus, et lorsque le prix est inférieur à la ligne inférieure, faites moins.
Les avantages de cette stratégie par rapport aux stratégies traditionnelles de moyenne mobile sont les suivants:
Cette stratégie présente aussi des risques:
Les mesures de gestion des risques correspondantes comprennent: l’optimisation des paramètres pour réduire les faux signaux, la définition d’un cadre de temps clair pour les règles de prise de décision, la mise en place d’une position d’arrêt appropriée, etc.
Cette stratégie peut être optimisée dans les domaines suivants:
Cette stratégie améliore la stratégie des moyennes mobiles en introduisant l’adaptation des trajectoires de prix, avec des caractéristiques telles que l’auto-adaptation des paramètres, le multi-cadre temporel et l’optimisation des pertes. La clé est de trouver les équations de mouvement des particules appropriées pour simuler les prix. Bien que des tests et des optimisations supplémentaires soient encore nécessaires, les idées de base sont viables et méritent d’être étudiées plus en profondeur.
/*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)