La stratégie de croisement des moyennes mobiles est une stratégie de trading quantitative très courante. Elle utilise la croix d'or et la croix de la mort des moyennes mobiles pour déterminer les tendances et les bénéfices. Lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme, elle indique une tendance haussière et une position longue peut être prise. Lorsque la moyenne mobile à court terme dépasse la moyenne mobile à long terme, elle indique une tendance baissière et une position courte peut être prise.
Cette stratégie est basée sur la croix d'or et la croix de la mort des moyennes mobiles pour déterminer les points d'entrée et de sortie.upOrDown
etlongOrShort
pour déterminer le long ou le court;percentInput
fixer le pourcentage de seuil de variation des prix;closePositionDays
pour définir le nombre de jours pour maintenir la position.
La logique de base est la suivante: calculer l'augmentation/diminution d'aujourd'hui par rapport à hier. S'il atteint le pourcentage de seuil d'entrée, un signal de négociation est déclenché. S'il s'agit d'un signal long, lorsque le prix d'aujourd'hui augmente plus que le seuil par rapport à hier, passez long. S'il s'agit d'un signal court, lorsque le prix d'aujourd'hui diminue plus que le seuil par rapport à hier, passez court.
Après avoir acheté, le jour d'entrée et les 4 jours suivants seront marqués en couleur sur le graphique.
Gestion des risques:
La stratégie de croisement de moyenne mobile est une stratégie de trading quantitative très simple et pratique. En jugeant la relation entre les tendances à court et à long terme, elle profite de la nature tendancielle des prix des actifs. Cette stratégie est facile à mettre en œuvre avec une logique claire et constitue la base de nombreuses stratégies de trading quantitative. Nous pouvons obtenir de meilleures performances grâce à l'ajustement et à l'optimisation des paramètres. Mais nous devons également gérer les risques et éviter les abus.
/*backtest start: 2023-01-01 00:00:00 end: 2023-10-11 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 // Created by Leon Ross strategy(title = "DaysAfterCertainPercentChangev1", shorttitle = "DACPCv1", overlay = true, pyramiding = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, calc_on_every_tick=true, initial_capital=100000) //Inputs longOrShort = input(title="Long=Checked Short=Unchecked", type=bool, defval=true) //long=true, down=false upOrDown = input(title="Direction of Today vs. Previous day: Up=Checked Down=Unchecked", type=bool, defval=true) //up=true, down=false: this is the direction of days vs previous day percentInput = input(title="Percent", type=float, defval=4.5) closePositionDays = input(title="How Many Days to Close Position", defval=4) //Conditions //percentUpValue = (close / close[1]) - 1 //percentUp = percentUpValue >= (percentInput/100.0) //upConditions = percentUp //percentDownValue = 1- (close / close[1]) //percentDown = percentDownValue >= (percentInput/100.0) //downConditions = percentDown upValue = (close / close[1]) - 1 downValue = 1 - (close / close[1]) allConditions = if(upOrDown) upValue >= (percentInput/100.0) else downValue >= (percentInput/100.0) //Plots bgcolor(allConditions ? (upOrDown ? green : red) : na, transp=70) bgcolor(allConditions ? silver : na, transp=70, offset=1) bgcolor(allConditions ? silver : na, transp=70, offset=2) bgcolor(allConditions ? silver : na, transp=70, offset=3) bgcolor(allConditions ? silver : na, transp=70, offset=4) //bgcolor(downConditions == 1 ? red : na, transp=70) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=1) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=2) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=3) //bgcolor(downConditions == 1 ? silver : na, transp=70, offset=4) //Entires if(longOrShort) strategy.entry(id = "Long", long = true, when = allConditions) else strategy.entry(id = "Short", long = false, when = allConditions) //Exits if (barssince(allConditions) == closePositionDays) if(longOrShort) strategy.close("Long") else strategy.close("Short")