Stratégie de négociation croisée à court, moyen et long terme de l'EMA

Auteur:ChaoZhang est là., Date: 2023-11-24 13:33:21
Les étiquettes:

img

Cette stratégie génère des signaux de négociation basés sur trois lignes moyennes mobiles exponentielles (EMA) avec des périodes différentes: EMA à court terme avec une période de 5 jours, EMA à moyen terme avec une période de 8 jours et EMA à long terme avec une période de 13 jours.

La logique de la stratégie

Cette stratégie évalue la tendance du marché en calculant les EMA de différentes périodes. L'EMA à court terme reflète le prix moyen des derniers jours tandis que les EMA à moyen et long terme reflètent le prix moyen sur des périodes plus longues. Le croisement de l'EMA à court terme sur les EMA à moyen et long terme signale une rupture à la hausse du prix, de sorte qu'une position longue est prise. Inversement, lorsque l'EMA à court terme traverse sous les deux autres, il signale une rupture à la baisse du prix, de sorte qu'une position courte est prise.

Plus précisément, cette stratégie calcule simultanément les EMA de 5 jours, 8 jours et 13 jours. Elle génère des signaux longs lorsque l'EMA de 5 jours traverse les EMA de 8 jours et 13 jours; elle génère des signaux courts lorsque l'EMA de 5 jours traverse sous les deux autres. Après un long, la position est fermée une fois que l'EMA de 5 jours traverse à nouveau sous l'EMA de 13 jours. De même pour la position courte.

Les avantages de la stratégie

  1. L'utilisation d'EMA à plusieurs périodes évite de manquer les principaux points d'inversion de tendance qui pourraient se produire avec des périodes d'EMA uniques trop courtes ou trop longues
  2. La combinaison de trois EMA à court, moyen et long terme améliore la fiabilité des signaux de négociation
  3. Une tarification facilitée par l'intermédiaire des EMA élimine une partie du bruit du marché et empêche les entrées inutiles

Risques liés à la stratégie

  1. Les trois EMA sont des indicateurs de tendance en retard, contenant par nature des retards de temps avant les écarts de prix réels, ce qui risque d'indiquer des signaux tardifs.
  2. Les EMA ne sont pas en mesure de distinguer efficacement les tendances réelles des corrections à court terme, susceptibles de donner de faux signaux
  3. Les périodes EMA fixes ne peuvent pas s'adapter à des régimes de marché variables dans des délais différents

Idées d'amélioration:

  1. Ajout d'autres indicateurs comme le MACD pour mieux mesurer la tendance réelle, évitant de faux signaux
  2. Adaptation flexible des paramètres de la période EMA pour différents produits et environnements de marché
  3. Ajout d'un stop loss mobile pour verrouiller les bénéfices et contrôler les risques

Résumé

Il s'agit d'un système de rupture typique qui juge les renversements de tendance en comparant les croisements entre les EMA à court, moyen et long terme. Sa simplicité de signalisation facilite la facilité de négociation, mais souffre également du retard inhérent aux EMA et de l'incapacité de filtrer les tendances réelles des corrections temporaires.


/*backtest
start: 2023-11-16 00:00:00
end: 2023-11-23 00:00:00
period: 30m
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// 
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © gregoirejohnb
// @It is modified by ttsaadet.
// Moving average crossover systems measure drift in the market. They are great strategies for time-limited people.
// So, why don't more people use them?
// 

//
strategy(title="EMA Crossover Strategy", shorttitle="EMA-5-8-13 COS by TTS", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, currency=currency.TRY,commission_type=strategy.commission.percent,commission_value=0.04, process_orders_on_close = true, initial_capital = 100000)

// === GENERAL INPUTS ===
//strategy start date
start_year = input(defval=2020, title="Backtest Start Year")

// === LOGIC ===
short_period = input(type=input.integer,defval=5,minval=1,title="Length")
mid_period = input(type=input.integer,defval=8,minval=1,title="Length")
long_period = input(type=input.integer,defval=13,minval=1,title="Length")

longOnly = input(type=input.bool,defval=false,title="Long Only")
shortEma = ema(hl2,short_period)
midEma = ema(hl2,mid_period)
longEma = ema(hl2,long_period)

plot(shortEma,linewidth=2,color=color.red,title="Fast")
plot(midEma,linewidth=2,color=color.orange,title="Fast")
plot(longEma,linewidth=2,color=color.blue,title="Slow")

longEntry = ((shortEma > midEma) and crossover(shortEma,longEma)) or ((shortEma > longEma) and crossover(shortEma,midEma))
shortEntry =((shortEma < midEma) and crossunder(shortEma,longEma)) or ((shortEma < longEma) and crossunder(shortEma,midEma))

plotshape(longEntry ? close : na,style=shape.triangleup,color=color.green,location=location.belowbar,size=size.small,title="Long Triangle")
plotshape(shortEntry and not longOnly ? close : na,style=shape.triangledown,color=color.red,location=location.abovebar,size=size.small,title="Short Triangle")
plotshape(shortEntry and longOnly ? close : na,style=shape.xcross,color=color.black,location=location.abovebar,size=size.small,title="Exit Sign")

// === STRATEGY - LONG POSITION EXECUTION ===
enterLong() =>
    longEntry 
exitLong() =>
    crossunder(shortEma,longEma)

strategy.entry(id="Long", long=strategy.long, when=enterLong())
strategy.close(id="Long", when=exitLong())


// === STRATEGY - SHORT POSITION EXECUTION ===

enterShort() =>
    not longOnly and shortEntry  
exitShort() =>
    crossover(shortEma,longEma)

strategy.entry(id="Short", long=strategy.short, when=enterShort())
strategy.close(id="Short", when=exitShort())

Plus de