Stratégie de cassure de superposition de triple EMA


Date de création: 2023-12-28 15:56:54 Dernière modification: 2023-12-28 15:56:54
Copier: 0 Nombre de clics: 680
1
Suivre
1621
Abonnés

Stratégie de cassure de superposition de triple EMA

Aperçu

La stratégie de triple EMA superposée utilise les indices de la triple moyenne mobile pour déterminer la direction de la tendance du marché et effectue une entrée au point de rupture de la tendance. Cette stratégie est combinée à un signal de jugement de forme K.

Principe de stratégie

Cette stratégie est basée sur les principes suivants:

  1. Il utilise trois lignes EMA de différentes périodes (lignes 200, 50 et 20) pour déterminer les grandes tendances, les tendances intermédiaires et les tendances à court terme.

  2. Un signal d’achat est généré lorsque l’EMA à court terme (ligne de 20 jours) franchit la moyenne EMA (ligne de 50 jours) à la hausse; un signal de vente est généré lorsque la tendance à la baisse est franchie.

  3. La fiabilité d’un signal de rupture est déterminée par la combinaison de la forme de la ligne K. Une rupture est considérée comme fiable uniquement si le prix de clôture de la deuxième ligne K est supérieur à (inférieur à) le prix le plus élevé (inférieur au prix le plus bas) de la journée précédente.

  4. Définir un point d’arrêt et d’arrêt pour éviter les risques au-delà d’une marge de fluctuation raisonnable.

Avantages stratégiques

  1. L’utilisation de plusieurs indicateurs EMA pour évaluer les tendances améliore la précision de l’évaluation.

  2. Il est possible d’éviter les risques de transaction inutiles en combinant un filtre de forme K avec des signaux trompeurs.

  3. Il est possible de définir des points de stop-loss pour contrôler efficacement les pertes individuelles.

Risque stratégique

  1. En cas de choc, les EMA génèrent de nombreux signaux trompeurs et ne permettent pas d’évaluer efficacement les tendances du marché.

  2. La combinaison d’un seul indicateur est simple et le jugement sur des situations complexes est faible.

  3. Il est possible qu’il ne soit pas rentable sur un marché à frais de transaction élevés sans tenir compte des coûts de transaction.

Optimisation de la stratégie

  1. D’autres indicateurs, tels que MACD, KDJ, peuvent être introduits pour former une combinaison d’indicateurs, améliorant la précision du jugement.

  2. Les paramètres de la stratégie peuvent être optimisés en fonction des variétés et des périodes de test, afin de mieux correspondre aux caractéristiques de la variété.

  3. Il est possible d’introduire des indicateurs de volume de transactions afin d’éviter un faible niveau de signaux trompeurs.

Résumer

L’idée générale de la stratégie de rupture de l’EMA triple est claire et compréhensible. Elle permet de juger des tendances principales du marché et de trouver le moment d’entrer en jeu lorsque la tendance se retourne. Cependant, la stratégie a certaines limites.

Code source de la stratégie
/*backtest
start: 2022-12-21 00:00:00
end: 2023-12-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("GHG RETRACEMENT MODE 1", overlay=true)

entryLevel1 = input(0.5, "ENTRY LEVEL 1")
entryLevel2 = input(0.25, "ENTRY LEVEL 2")
entryLevel3 = input(0.0, "ENTRY LEVEL 3")

stopLevel = input(-0.35, "STOP LEVEL")
tpLevel = input(0.88, "TP LEVEL")
dontUseEma = input(false, "Don't Use EMA")


get_level(level, level100, level0) =>
    level * (level100 - level0) + level0

buySignal = close[2] < open[2] and close[1] > open[1] and close[0] > open[0] and high[0] > open[2] and high[1] < high[2]
sellSignal = close[2] > open[2] and close[1] < open[1] and close[0] < open[0] and low[0] < open[2] and low[1] > low[2]

if buySignal and (close[0] > ta.ema(close, 200) or dontUseEma)
    l = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, high[0], low[2])
    entryPrice2 = get_level(entryLevel2, high[0], low[2])
    entryPrice3 = get_level(entryLevel3, high[0], low[2])
    
    exitPrice = get_level(tpLevel, high[0], low[2])
    stopPrice = get_level(stopLevel, high[0], low[2])
    
    strategy.order("BUY 1", strategy.long, comment="BUY 1", limit=entryPrice1)
    strategy.exit("exit", "BUY 1", limit=high[0], stop=stopPrice)
    strategy.order("BUY 2", strategy.long, comment="BUY 2", limit=entryPrice2)
    strategy.exit("exit", "BUY 2", limit=high[0], stop=stopPrice)

    label.set_text(l, "Buy => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(l, color.green)
    label.set_yloc(l, yloc.belowbar)
    label.set_style(l, label.style_label_up)
    
if sellSignal and (close[0] < ta.ema(close, 200) or dontUseEma)
    a = label.new(bar_index, na)
    entryPrice1 = get_level(entryLevel1, low[0], high[2])
    entryPrice2 = get_level(entryLevel2, low[0], high[2])
    entryPrice3 = get_level(entryLevel3, low[0], high[2])
    
    exitPrice = get_level(tpLevel, low[0], high[2])
    stopPrice = get_level(stopLevel,low[0], high[2])
    
    strategy.order("SELL 1", strategy.short, comment="SELL 1", limit=entryPrice1)
    strategy.exit("exit", "SELL 1", limit=low[0], stop=stopPrice) 
    strategy.order("SELL 2", strategy.short, comment="SELL 2", limit=entryPrice2)
    strategy.exit("exit", "SELL 2", limit=low[0], stop=stopPrice) 

    label.set_text(a,"Sell => " + str.tostring(close[2]) + "\nSL=> " + str.tostring(stopPrice) + "\nTP => " + str.tostring(exitPrice) )
    label.set_color(a, color.red)
    label.set_yloc(a, yloc.abovebar)
    label.set_style(a, label.style_label_down)