Cette stratégie utilise des moyennes mobiles doubles, en particulier des moyennes mobiles à 8 périodes et à 21 périodes. Elle génère des signaux longs lorsque le MA plus court traverse le plus long et des signaux courts lorsque le MA plus court traverse le plus long.
La stratégie intègre également la pente de la ligne moyenne mobile pour filtrer certaines périodes non tendance et ne produire des signaux que lorsque la tendance est plus évidente.
Le noyau de cette stratégie réside dans le croisement des moyennes mobiles à court et à long terme. Le MA plus court peut capturer les changements de tendance plus rapidement, tandis que le MA plus long a de meilleurs effets de filtrage du bruit. L'établissement d'une tendance haussière est suggéré lorsque le MA plus court croise le MA plus long, ce qui conduit à un signal long; l'établissement d'une tendance baissière est suggéré lorsque le MA plus court croise le MA plus long, ce qui conduit à un signal court.
La stratégie définit également un seuil de pente. Seulement lorsque la pente est supérieure à la valeur de seuil positif, un signal long sera généré. Seulement lorsque la pente est inférieure à la valeur de seuil négatif, un signal court sera généré. Cela aide à filtrer les zones où aucune tendance prononcée n'existe, ce qui se traduit par des signaux de trading de meilleure qualité.
Plus précisément, la logique de génération des signaux de trading est la suivante:
Les avantages de cette stratégie sont les suivants:
Cette stratégie comporte également certains risques:
Quelques façons d'optimiser en fonction de ces risques:
Quelques orientations pour optimiser la stratégie:
En résumé, cette stratégie double MA est simple et pratique. En capturant différentes caractéristiques de tendance à travers les deux paramètres de période et en les combinant pour générer des signaux de trading. Pendant ce temps, l'incorporation du seuil de pente améliore la qualité du signal. Cette stratégie peut servir de base pour les extensions, avec beaucoup d'espace d'optimisation et de potentiel.
/*backtest start: 2024-01-09 00:00:00 end: 2024-01-16 00:00:00 period: 10m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //written by sixpathssenin //@version=4 strategy(title="Dual Moving Average",initial_capital=10000,overlay=true) ma1= sma(close,8) ma2= sma(close,21) angleCriteria = input(title="Angle", type=input.integer, defval=7, minval=1, maxval=13) i_lookback = input(2, "Angle Period", input.integer, minval = 1) i_atrPeriod = input(10, "ATR Period", input.integer, minval = 1) i_angleLevel = input(6, "Angle Level", input.integer, minval = 1) i_maSource = input(close, "MA Source", input.source) f_angle(_src, _lookback, _atrPeriod) => rad2degree = 180 / 3.141592653589793238462643 //pi ang = rad2degree * atan((_src[0] - _src[_lookback]) / atr(_atrPeriod)/_lookback) ang _angle = f_angle(ma2, i_lookback, i_atrPeriod) plot(ma1,color=#FF0000) plot(ma2,color=#00FF00) crosso=crossover(ma1,ma2) crossu=crossunder(ma1,ma2) _lookback = 15 f_somethingHappened(_cond, _lookback) => bool _crossed = false for i = 1 to _lookback if _cond[i] _crossed := true _crossed longcrossed = f_somethingHappened(crosso,_lookback) shortcrossed = f_somethingHappened(crossu,_lookback) long = longcrossed and _angle > angleCriteria short= shortcrossed and _angle < -(angleCriteria) if(long) strategy.entry("Long",strategy.long) if(short) strategy.entry("short",strategy.short)