La stratégie de croisement des moyennes mobiles est une stratégie de trading quantitative très courante. Elle utilise les moyennes mobiles pour déterminer les tendances afin de réaliser des bénéfices. Le croisement des moyennes mobiles à court terme indique que le cours de l’action commence à augmenter et que vous pouvez faire plus; le croisement des moyennes mobiles à court terme indique que le cours de l’action commence à baisser et que vous pouvez faire moins.
Cette stratégie est basée sur le mouvement de la ligne moyenne pour déterminer le moment d’achat et de vente. Utilisé dans le codeupOrDownetlongOrShortLes deux paramètres d’entrée de Boole sont utilisés pour juger de l’excès de blanchiment;percentInputParamètres d’entrée pour définir le pourcentage de dépréciation de la variation du cours de l’action; utilisationclosePositionDaysEntrez les paramètres pour définir le nombre de jours de tenue de position.
La logique centrale de la stratégie est la suivante: calculer la baisse ou la baisse d’aujourd’hui par rapport à la baisse d’hier et émettre un signal de transaction si le pourcentage de baisse de l’entrée est atteint. Si c’est un bullish, faire plus lorsque la hausse d’aujourd’hui par rapport à la baisse d’hier dépasse la baisse; Si c’est un bearish, faire un short lorsque la baisse de la baisse de la baisse de la baisse de la baisse de la baisse est supérieure à la baisse d’hier.
Si vous faites plus de blanchiment, vous marquerez ce jour et les 4 jours suivants avec des couleurs différentes sur le graphique.
Mesures de contrôle des risques :
La stratégie de croisement des équilibres mobiles est une stratégie de trading quantitatif très simple et pratique. Elle profite de la tendance des cours d’actions en déterminant la relation entre les tendances à court et à long terme. La stratégie est facile à mettre en œuvre, logiquement claire et est à la base de nombreuses stratégies de trading quantitatif.
/*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")