La stratégie de négociation de la moyenne mobile est une stratégie de négociation quantitative relativement courante. Cette stratégie génère des signaux de négociation en calculant les moyennes mobiles de différentes périodes et en fonction de leurs situations de croisement. Plus précisément, elle calcule les moyennes mobiles exponentielles (EMA) de 4 périodes, 8 périodes et 20 périodes. Lorsque l'EMA à court terme dépasse l'EMA à long terme, allez long; lorsque l'EMA à court terme dépasse l'EMA à long terme, allez court.
La logique de base de cette stratégie est la suivante:
Grâce à cette méthode, nous profitons du croisement entre différentes moyennes mobiles de période pour juger des signaux du marché, et utilisons la direction de la plus longue moyenne mobile de période pour filtrer les faux signaux, construisant une stratégie de trading stable.
Les principaux avantages de cette stratégie sont les suivants:
Cette stratégie comporte également certains risques:
Les principales solutions sont les suivantes:
La stratégie peut être optimisée dans les aspects suivants:
Optimisation de la période: déterminer la combinaison optimale de périodes de MA selon les différentes variétés.
Optimisation de la perte d'arrêt: fixer raisonnablement des points d'arrêt de perte pour contrôler une seule perte.
Optimisation des paramètres: optimiser dynamiquement les paramètres à l'aide d'algorithmes génétiques, de chaînes de Markov, etc.
Fusion de modèle: intégrer avec LSTM, RNN et d'autres modèles d'apprentissage en profondeur pour extraire plus d'Alpha.
Optimisation du portefeuille: Combiner avec d'autres stratégies d'indicateurs techniques pour construire des portefeuilles stratégiques.
En général, la stratégie de croisement des moyennes mobiles est une stratégie de trading quantitative relativement classique et couramment utilisée. Cette stratégie a une logique simple et est facile à comprendre et à mettre en œuvre, avec une certaine stabilité. Mais il y a aussi des problèmes, tels que la génération de faux signaux, l'incapacité de s'adapter aux changements du marché, etc. Ces problèmes peuvent être améliorés grâce à l'optimisation des paramètres, l'optimisation des pertes, la fusion des modèles et d'autres méthodes.
/*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)