La double stratégie de fluctuation des prix EMA

Auteur:ChaoZhang est là., Date: le 26 février 2024
Les étiquettes:

img

Résumé

La stratégie du Double EMA Price Swing évalue le sentiment et l'élan du marché en calculant la différence entre deux EMA de périodes différentes.

La stratégie est simple et facile à utiliser, jugeant l'élan et la direction du marché à travers la différence EMA.

Principe

L'indicateur de base de la stratégie du Double EMA Price Swing est l'APO, à savoir l'oscillateur de prix absolu, représentant la différence entre deux EMA.

APO = EMA(short period) − EMA(long period)

Plus précisément, l'APO de cette stratégie est calculée comme suit:

xShortEMA = ema(close price, LengthShortEMA)  

xLongEMA = ema(close price, LengthLongEMA)

xAPO = xShortEMA − xLongEMA

où LengthShortEMA et LengthLongEMA représentent respectivement les durées de cycle des EMA à court et à long terme.

Plusieurs règles de jugement clés de l'APO:

  1. Une hausse de l' APO au-dessus de 0 est un signal haussier
  2. Un dépassement de l'APO inférieur à 0 est un signal baissier
  3. Une APO positive indique une situation haussière actuelle
  4. Une APO négative indique un état d'urgence actuel

Déterminer le sentiment du marché et le calendrier d'entrée en fonction de la valeur en temps réel de l'APO.

Analyse des avantages

La stratégie à double fluctuation des prix EMA présente les principaux avantages suivants:

  1. L'utilisation d'une moyenne mobile exponentielle peut efficacement aplanir les données sur les prix et réduire l'impact du bruit
  2. L'indicateur APO combine deux EMA pour juger à la fois de l'évolution des prix et de la dynamique du marché
  3. Le signal stratégique est simple et clair, facile à déterminer et à mettre en œuvre
  4. Les cycles EMA personnalisables s'adaptent aux différentes variétés et styles de négociation
  5. Les signaux réversibles s'appliquent à la négociation inverse et à la négociation à découvert

Analyse des risques

La double stratégie de fluctuation des prix de l'EMA comporte également certains risques, principalement dans les domaines suivants:

  1. L'EMA elle-même est en retard et ne peut pas saisir les points tournants des prix à temps
  2. Les paramètres par défaut peuvent ne pas s'appliquer à toutes les variétés, les paramètres doivent être optimisés
  3. Les signaux fréquents ont tendance à produire de faux signaux.
  4. Impossible de déterminer le stop loss et le profit après l'ouverture de la position
  5. Il y a un certain retard, peut-être manquant le meilleur moment d'entrée

Nous pouvons faire face à ces risques et les réduire en appliquant un stop loss raisonnable pour réduire les pertes individuelles; en optimisant les paramètres pour adapter les cycles; en combinant d'autres indicateurs pour filtrer les signaux et améliorer la stabilité de la stratégie.

Directions d'optimisation

La stratégie à double EMA d' oscillation des prix peut être optimisée dans les aspects suivants:

  1. Optimiser les paramètres de cycle EMA, combinaisons de test de longueur de 5 à 60 pour trouver le meilleur
  2. Ajouter d'autres indicateurs tels que MA, KDJ, MACD pour définir les conditions de filtrage et éviter les faux signaux
  3. Utiliser les bandes de Bollinger, KD pour déterminer un stop loss raisonnable et un profit
  4. Combiner l'indice de tendance pour juger de la tendance des prix, éviter les transactions contre tendance
  5. Ajouter un indicateur de volume de négociation pour assurer des signaux avec support de volume
  6. Définir des conditions de réentrée pour réduire les transactions et la fréquence des opérations

Conclusion

En résumé, la stratégie de basculement des prix double EMA juge le sentiment du marché en calculant la différence APO entre deux EMA. Le signal de stratégie est simple et pratique, mais présente également quelques inconvénients. Nous pouvons l'optimiser en ajustant les paramètres, en ajoutant des filtres, en définissant des arrêts et plus encore. Facile à utiliser pour les débutants, également avec un grand potentiel d'expansion. Convient aux apprenants de quant trading pour étudier et appliquer.


/*backtest
start: 2023-02-19 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 30/05/2017
// The Absolute Price Oscillator displays the difference between two exponential 
// moving averages of a security's price and is expressed as an absolute value.
// How this indicator works
//    APO crossing above zero is considered bullish, while crossing below zero is bearish.
//    A positive indicator value indicates an upward movement, while negative readings 
//      signal a downward trend.
//    Divergences form when a new high or low in price is not confirmed by the Absolute Price 
//      Oscillator (APO). A bullish divergence forms when price make a lower low, but the APO 
//      forms a higher low. This indicates less downward momentum that could foreshadow a bullish 
//      reversal. A bearish divergence forms when price makes a higher high, but the APO forms a 
//      lower high. This shows less upward momentum that could foreshadow a bearish reversal.
//
// You can change long to short in the Input Settings
// Please, use it only for learning or paper trading. Do not for real trading.
////////////////////////////////////////////////////////////
strategy(title="Absolute Price Oscillator (APO) Backtest", shorttitle="APO")
LengthShortEMA = input(10, minval=1)
LengthLongEMA = input(20, minval=1)
reverse = input(false, title="Trade reverse")
hline(0, color=gray, linestyle=line)
xPrice = close
xShortEMA = ema(xPrice, LengthShortEMA)
xLongEMA = ema(xPrice, LengthLongEMA)
xAPO = xShortEMA - xLongEMA
pos = iff(xAPO > 0, 1,
       iff(xAPO < 0, -1, nz(pos[1], 0))) 
possig = iff(reverse and pos == 1, -1,
          iff(reverse and pos == -1, 1, pos))	   
if (possig == 1) 
    strategy.entry("Long", strategy.long)
if (possig == -1)
    strategy.entry("Short", strategy.short)	   	    
barcolor(possig == -1 ? red: possig == 1 ? green : blue )
plot(xAPO, color=blue, title="APO")

Plus de