Stratégie de rupture de l'oscillation moyenne mobile double

Auteur:ChaoZhang est là., Date: 2023-11-27 17:44:49 Je vous en prie.
Les étiquettes:

img

Résumé

La stratégie de rupture de la moyenne mobile double calcule deux moyennes mobiles de différentes périodes pour former un canal et juger de la tendance oscillante des prix. Elle génère des signaux de trading lorsque les prix franchissent le canal. Cette stratégie intègre également le jugement de la direction du marché pour éviter de fausses ruptures.

Principe de stratégie

Les principales étapes de cette stratégie sont les suivantes:

  1. Calculer deux moyennes mobiles, l'une avec une période plus courte et l'autre avec une période plus longue.

  2. L'ATR reflète la volatilité actuelle du marché.

  3. Un signal d'achat est généré lorsque le prix traverse le canal vers le haut. Un signal de vente est généré lorsque le prix traverse le canal vers le bas.

  4. Les signaux de trading valides ne sont générés que lorsque la percée à court terme s'aligne sur la direction de la tendance dominante.

En suivant ces étapes, cette stratégie capte les points de rupture dans les tendances oscillantes et évite les faux signaux en se référant à la tendance dominante.

Analyse des avantages

Les avantages de cette stratégie:

  1. Le double canal MA reflète la fourchette actuelle d'oscillation des prix.

  2. Le paramètre ATR permet à la gamme de canaux de suivre la volatilité du marché en temps réel.

  3. Le filtrage des tendances traditionnelles évite les faux signaux sur les marchés oscillants.

  4. Les règles sont simples et faciles à comprendre, adaptées à l'apprentissage et à la recherche.

Analyse des risques

Les risques:

  1. Les percées échouées peuvent conduire à manquer de bonnes opportunités, qui peuvent être atténuées par la prise de profit et la réentrée.

  2. Le jugement des tendances traditionnelles a un décalage de temps et ne peut pas éliminer tous les faux signaux.

  3. Le stop loss peut être pénétré dans les marchés volatils.

Directions d'optimisation

Façons d'optimiser cette stratégie:

  1. Optimiser les paramètres de l'AM pour différents produits.

  2. Optimiser le paramètre ATR pour mieux suivre la volatilité.

  3. Ajoutez des filtres supplémentaires tels que des indicateurs de volume et de volatilité pour éviter davantage de faux signaux.

  4. Utilisez l'apprentissage automatique pour optimiser les paramètres.

Conclusion

Cette stratégie de percée de double MA oscillation capture les tendances d'oscillation à travers le canal double MA et le filtrage grand public. Avec ses règles simples et claires, il est un excellent exemple pour apprendre des stratégies de trading de percée.


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

//Anuj4912
//@version=4
strategy("Anuj4912", overlay=true)
res = input(title="Time Frame",  defval="120")
Factor=input(1, minval=1,maxval = 100)
Pd=input(1, minval=1,maxval = 100)

tp = input(500,title="Take Profit")
sl = input(400,title="Stop Loss")


Up=hl2-(Factor*atr(Pd))
Dn=hl2+(Factor*atr(Pd))
MUp=request.security(syminfo.tickerid,res,hl2-(Factor*atr(Pd)))
MDn=request.security(syminfo.tickerid,res,hl2+(Factor*atr(Pd)))

Mclose=request.security(syminfo.tickerid,res,close)

TrendUp=close[1]>TrendUp[1]? max(Up,TrendUp[1]) : Up
TrendDown=close[1]<TrendDown[1]? min(Dn,TrendDown[1]) : Dn

MTrendUp=Mclose[1]>MTrendUp[1]? max(MUp,MTrendUp[1]) : MUp
MTrendDown=Mclose[1]<MTrendDown[1]? min(MDn,MTrendDown[1]) : MDn

Trend = close > TrendDown[1] ? 1: close< TrendUp[1]? -1: nz(Trend[1],1)
Tsl = Trend==1? TrendUp: TrendDown

MTrend = Mclose > MTrendDown[1] ? 1: Mclose< MTrendUp[1]? -1: nz(MTrend[1],1)
MTsl = MTrend==1? MTrendUp: MTrendDown

linecolor = Trend == 1 ? green : red
plot(Tsl, color = linecolor , style = line , linewidth = 2,title = "SuperTrend")

Mlinecolor = MTrend == 1 ? blue : orange
plot(MTsl, color = Mlinecolor , style = line , linewidth = 2,title = "Main SuperTrend")

plotshape(cross(close,Tsl) and close>Tsl , "Up Arrow", shape.triangleup,location.belowbar,green,0,0)
plotshape(cross(Tsl,close) and close<Tsl , "Down Arrow", shape.triangledown , location.abovebar, red,0,0)

up = Trend == 1 and Trend[1] == -1 and MTrend == 1 
down = Trend == -1 and Trend[1] == 1 and MTrend == -1 
plotarrow(up ? Trend : na, title="Up Entry Arrow", colorup=lime, maxheight=60, minheight=50, transp=0)
plotarrow(down ? Trend : na, title="Down Entry Arrow", colordown=red, maxheight=60, minheight=50, transp=0)


golong = Trend == 1 and Trend[1] == -1 and MTrend == 1 
goshort = Trend == -1 and Trend[1] == 1 and MTrend == -1 

strategy.entry("Buy", strategy.long,when=golong)
strategy.exit("Close Buy","Buy",profit=tp,loss=sl)
   
   
strategy.entry("Sell", strategy.short,when=goshort)
strategy.exit("Close Sell","Sell",profit=tp,loss=sl)



Plus de