Stratégie de trading de cassure lorsque la moyenne mobile à court terme croise la moyenne mobile à moyen et long terme


Date de création: 2023-11-24 13:33:21 Dernière modification: 2023-11-24 13:33:21
Copier: 0 Nombre de clics: 853
1
Suivre
1617
Abonnés

Stratégie de trading de cassure lorsque la moyenne mobile à court terme croise la moyenne mobile à moyen et long terme

Cette stratégie génère des signaux de négociation basés sur des moyennes mobiles indicielles (EMA) de trois périodes différentes: courte, moyenne et longue. Parmi elles, la période de l’EMA à court terme est de 5 jours, la période de l’EMA à moyen terme est de 8 jours et la période de l’EMA à long terme est de 13 jours.

Principe de stratégie

Cette stratégie permet de juger de la tendance du marché en calculant les EMA de différents cycles. Les EMA à court terme reflètent les prix moyens des derniers jours, tandis que les EMA à moyen terme reflètent les prix moyens sur une période plus longue. Les EMA à court terme sur les EMA à moyen terme représentent les prix qui commencent à se briser vers le haut, donc faire plus; et les EMA à long terme sur les EMA à court terme sur les EMA à moyen terme représentent les prix qui commencent à se briser vers le bas, donc faire moins.

Plus précisément, la stratégie calcule simultanément trois EMA de 5 jours, 8 jours et 13 jours. Un signal de plus est généré lorsque l’EMA de 5 jours est porté à 8 jours et à 13 jours. Un signal de creux est généré lorsque l’EMA de 5 jours est porté à 8 jours et à 13 jours.

Avantages stratégiques

  1. Utilisez des EMA pluricycliques pour juger des tendances, afin d’éviter de manquer des virages de tendance clés en raison d’une EMA unique trop courte ou trop longue
  2. Les signaux de négociation sont plus fiables et plus précis en combinant les EMA à trois cycles
  3. L’EMA permet de réduire le bruit du marché et d’empêcher la prise de positions inutiles

Risque stratégique

  1. Les trois EMA sont des indicateurs de tendance en retard, il y a forcément un décalage de temps avant que le prix réel ne se brise, ce qui peut entraîner un retard du signal de négociation.
  2. L’EMA ne peut pas distinguer les tendances réelles des ajustements à court terme, ce qui peut générer de faux signaux
  3. Les EMA à cycle fixe ne peuvent pas s’adapter aux caractéristiques changeantes du marché à différents cycles.

L’optimisation peut être réalisée par:

  1. Combiner avec d’autres indicateurs comme le MACD pour juger de la tendance réelle et éviter de produire de faux signaux
  2. Les paramètres du cycle EMA peuvent être ajustés de manière flexible en fonction des variétés et des conditions du marché
  3. Augmentation des stop-loss mobiles pour verrouiller les bénéfices et contrôler les risques

Résumer

Cette stratégie est un système de rupture typique. Son avantage est que les signaux de négociation sont simples, clairs et faciles à utiliser. Son inconvénient est que l’indicateur EMA lui-même est en retard et ne peut pas distinguer la vraie tendance de l’ajustement à court terme.

Code source de la stratégie
/*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())