Cette stratégie est appelée
La stratégie définit d'abord une particule qui correspond à la trajectoire du prix. Sous l'influence de la gravité et de l'inertie, la trajectoire de la particule oscillera autour du prix. Ensuite, nous calculons l'écart moyen entre la particule et le prix, et l'utilisons pour construire des bandes supérieures et inférieures. Lorsque le prix franchit la bande supérieure ou inférieure, des signaux de trading sont générés.
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 vous en prie.grav
représente le terme de gravité qui rapproche la particule du prix;traj
représente le terme d'inertie qui maintient la tendance du mouvement de la particule.
Ensuite, nous calculons la déviation moyenneavgdist
entre le prix et la particule, et l'utiliser pour construire des bandes supérieures et inférieures:
bbl=pos-sma(avgdist,varb)
bbh=pos+sma(avgdist,varb)
Enfin, allez long lorsque le prix est supérieur à la bande supérieure, et allez court lorsque le prix est inférieur à la bande inférieure.
Cette stratégie présente les avantages suivants par rapport aux stratégies de moyenne mobile traditionnelles:
Cette stratégie comporte également des risques:
Les mesures de gestion des risques correspondantes comprennent: l'optimisation des paramètres pour réduire les faux signaux, la définition de règles claires de calendrier, la définition de positions de stop loss appropriées, etc.
Cette stratégie peut être optimisée dans les aspects suivants:
Cette stratégie améliore la stratégie de la moyenne mobile en introduisant l'ajustement de la trajectoire des prix. Elle possède des fonctionnalités telles que des paramètres adaptatifs, des délais multiples, l'optimisation de la perte de stop, etc. La clé est de trouver une équation de mouvement de particules appropriée pour simuler le prix. Bien que des tests et une optimisation supplémentaires soient nécessaires, l'idée de base est réalisable et mérite d'être poursuivie.
/*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)