
La stratégie de négociation croisée des moyennes mobiles est une stratégie de négociation quantitative plus courante. Cette stratégie consiste à calculer des moyennes mobiles de différentes périodes et à générer un signal de négociation en fonction de leur croisement. Plus précisément, il s’agit de calculer des moyennes mobiles indicielles de 4 cycles, 8 cycles et 20 cycles.
La logique de cette stratégie est la suivante:
Par cette méthode, nous utilisons des croisements entre les différentes moyennes périodiques pour juger des signaux du marché, tout en utilisant la direction de la plus longue moyenne périodique pour filtrer les signaux erronés et construire une stratégie de trading stable.
Les principaux avantages de cette stratégie sont les suivants:
Cette stratégie comporte aussi des risques:
Les principales solutions sont les suivantes:
Cette stratégie peut être optimisée dans les domaines suivants:
Optimisation des cycles: déterminer la meilleure combinaison de cycles MA pour les différentes variétés Optimisation des arrêts de perte: définir un arrêt de perte raisonnable pour contrôler les pertes individuelles
Fusion de modèles: intégration avec des modèles d’apprentissage en profondeur tels que LSTM, RNN, etc. pour extraire plus d’alpha
Optimisation du portefeuille: construction d’un portefeuille de stratégies avec d’autres indicateurs
La stratégie de croisement des moyennes mobiles est une stratégie de négociation quantitative classique et couramment utilisée. La logique de la stratégie est simple, facile à comprendre et à mettre en œuvre, avec une certaine stabilité. Mais il existe également des problèmes, tels que la production de faux signaux, l’incapacité à s’adapter aux changements du marché, etc. Ces problèmes peuvent être améliorés par des méthodes telles que l’optimisation des paramètres, l’optimisation des pertes, la fusion des modèles.
/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1, overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub", overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100, overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)
testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testPeriod() => true
ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)
go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]
go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]
if testPeriod()
strategy.entry("simpleBuy", strategy.long, when=go_long)
strategy.exit("simpleBuy", "simpleSell",when=exit_long)
strategy.entry("simpleSell", strategy.short,when=go_short)
strategy.exit("simpleSell", "simpleSell",when=exit_short)