Stratégie de répartition croisée de l'EMA

Auteur:ChaoZhang est là., Date: 2024-03-29 14h39 et 27h
Les étiquettes:

img

Résumé

La stratégie d'intersection EMA BreakHigh est une stratégie de trading basée sur la rupture de prix et le croisement de la moyenne mobile exponentielle (EMA). La stratégie utilise le prix le plus élevé dans une période spécifiée comme signal d'achat et l'EMA comme signal de vente. Lorsque le prix de clôture dépasse le prix le plus élevé dans la période spécifiée, la stratégie génère un signal d'achat. Lorsque le prix de clôture tombe en dessous de l'EMA, la stratégie génère un signal de vente. La stratégie définit également un prix stop-loss pour contrôler le risque.

Principe de stratégie

Le principe de base de la stratégie de croisement de la EMA BreakHigh est de capturer les tendances du marché en utilisant la rupture des prix et la croisée de la EMA. Lorsque le prix dépasse le prix le plus élevé dans une période spécifiée, cela indique que le marché peut entrer dans une tendance haussière, de sorte que la stratégie génère un signal d'achat. En même temps, la EMA sert d'indicateur de suivi de tendance. Lorsque le prix tombe en dessous de la EMA, cela indique que la tendance haussière peut se terminer, de sorte que la stratégie génère un signal de vente.

La stratégie utilise les étapes suivantes pour mettre en œuvre le trading:

  1. Calculer le prix le plus élevé au cours de la période spécifiée comme prix d'achat de rupture.
  2. Calculer l'EMA comme le signal de vente.
  3. Lorsque le prix de clôture dépasse le prix d'achat de rupture, si aucune position actuelle n'existe, la stratégie génère un signal d'achat.
  4. Lorsque le prix de clôture tombe en dessous de l'EMA, s'il y a une position en cours, la stratégie génère un signal de vente.
  5. Le prix le plus bas au cours de la période spécifiée est calculé comme le prix stop-loss.
  6. Si le prix tombe en dessous du prix stop-loss, la stratégie ferme immédiatement la position.

Par les étapes ci-dessus, la stratégie peut tirer profit de la tendance à la hausse du marché tout en utilisant le stop-loss pour contrôler le risque à la baisse.

Les avantages de la stratégie

La stratégie crossover EMA BreakHigh présente les avantages suivants:

  1. Suivi des tendances: la stratégie utilise l'éclatement des prix et le croisement de l'EMA pour capturer les tendances du marché et peut tirer profit des tendances haussières.
  2. Contrôle du risque: la stratégie utilise un prix stop-loss pour contrôler le risque à la baisse, ce qui peut réduire efficacement le tirage maximal de la stratégie.
  3. Flexibilité des paramètres: la stratégie fournit aux utilisateurs de multiples paramètres à personnaliser, tels que la période, le ratio de risque, l'utilisation d'un stop-loss, etc., qui peuvent être ajustés en fonction des différents styles de négociation et des conditions du marché.
  4. Simple et efficace: la logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, et peut obtenir de bons rendements sur les marchés en tendance.

Risques stratégiques

Bien que la stratégie de croisement des EMA BreakHigh présente certains avantages, elle comporte également les risques suivants:

  1. Risque de volatilité du marché: en cas de forte volatilité du marché, la stratégie peut générer davantage de faux signaux, entraînant des pertes fréquentes de négociation et de capital.
  2. Risque d'inversion de tendance: lorsque la tendance du marché s'inverse, la stratégie peut retarder la vente, entraînant un retracement des bénéfices ou la transformation des bénéfices en pertes.
  3. Paramètre de définition du risque: la performance de la stratégie dépend de la définition de paramètres tels que la période, le ratio de risque, etc. Si les paramètres sont définis de manière incorrecte, cela peut entraîner une mauvaise performance de la stratégie.

Pour atténuer ces risques, les mesures suivantes peuvent être envisagées:

  1. Ajuster correctement les paramètres: en fonction des différentes conditions du marché et des différents instruments de négociation, ajuster correctement les paramètres de la stratégie, tels que l'augmentation de la période, la réduction du ratio de risque, etc., afin de réduire les faux signaux et la fréquence des transactions.
  2. Combiner avec d'autres indicateurs: Combiner avec d'autres indicateurs techniques, tels que le RSI, le MACD, etc., pour confirmer la validité des tendances et des signaux et améliorer la fiabilité de la stratégie.
  3. Fixer un prix de stop-loss raisonnable: Fixer un prix de stop-loss raisonnable, qui peut contrôler le risque à la baisse et ne pas arrêter la perte trop tôt, ce qui entraîne des opportunités de profit manquées.

Directions d'optimisation de la stratégie

Pour améliorer encore les performances de la stratégie crossover BreakHigh EMA, les orientations d'optimisation suivantes peuvent être envisagées:

  1. Ajustement dynamique des paramètres: en fonction de la volatilité du marché et de la force de la tendance, ajuster dynamiquement les paramètres de la stratégie, tels que l'augmentation de la période où la volatilité est élevée, l'augmentation du ratio de risque lorsque la tendance est forte, etc., afin de s'adapter aux différentes conditions du marché.
  2. Introduire un mécanisme long-short: sur la base du trading long initial, introduire un mécanisme de trading short pour profiter également des tendances à la baisse, améliorant ainsi l'adaptabilité et la rentabilité de la stratégie.
  3. Optimiser le stop-loss et le take-profit: Optimiser le réglage du stop-loss et du take-profit, par exemple en utilisant le trailing stop-loss, le partial take-profit, etc., pour mieux contrôler les risques et verrouiller les bénéfices.
  4. Combiner avec l'analyse fondamentale: combiner l'analyse fondamentale avec l'analyse technique, par exemple en ajustant la position et les paramètres de la stratégie avant et après des événements importants tels que les rapports sur les résultats des entreprises et les communiqués de données économiques, pour faire face aux éventuels changements du marché.

Grâce aux mesures d'optimisation susmentionnées, la stabilité, l'adaptabilité et la rentabilité de la stratégie Crossover BreakHigh EMA peuvent être améliorées, ce qui lui permet d'atteindre de bonnes performances dans un plus grand nombre d'environnements de marché.

Résumé

La stratégie BreakHigh EMA Crossover est une stratégie simple et efficace de suivi des tendances qui capture les tendances du marché en utilisant la rupture de prix et le croisement EMA tout en utilisant le stop-loss pour contrôler le risque à la baisse. La logique de la stratégie est claire, les paramètres sont flexibles et facile à comprendre et à mettre en œuvre. Bien que la stratégie comporte certains risques, tels que le risque de volatilité du marché, le risque d'inversion de tendance et le risque de paramétrage, ces risques peuvent être atténués grâce à des mesures appropriées de contrôle des risques, telles que l'ajustement des paramètres, la combinaison avec d'autres indicateurs et la définition d'un stop-loss raisonnable. En outre, la stratégie dispose d'un espace d'optimisation supplémentaire, tel que l'ajustement dynamique des paramètres, l'introduction d'un mécanisme de long-short-loss, l'optimisation du stop-loss et du take-profit, et la combinaison avec l'analyse fondamentale


/*backtest
start: 2024-02-01 00:00:00
end: 2024-02-29 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// @version = 5
strategy(title="BreakHigh Strategy", overlay=true)
Period = input.int(34, "Number of previous bars(34,52 Recommend)")
showbg = input(defval = false,title = "Show BackGround Color")
showema = input(defval = true ,title = "Show Line")
MarkBuySig = input(defval = true ,title = "Show Buy/Sell Signal")

Risk_Per_Trade = input(2.5, '% of Risk Per Trade') / 100  // Risk% Per Trade Switch
SLDAY = input(title='Lowest price of the previous number of bars', defval=9)
Buysig = input(defval=true, title='Start Strategy')
UseSl = input(defval=false, title='Use Stoploss Price')
Compound = input(defval = false ,title =  "Compound Profit")
xtf = input.timeframe(title='** Fix chart to which time frame ? **)', defval='D')


//BUY
float buyLine = na
buyLine := ta.highest(high,Period)[1] 
plot(showema ? buyLine : na, linewidth=1, style=plot.style_linebr, color=color.new(color.green, 0))

//SELL
output = ta.ema(close, Period)
show = request.security(syminfo.tickerid, xtf, output)
FastL = plot(showema ? show : na, color=color.new(color.white, 0), linewidth=2, title='Slow EMA')

//Buy-Sell Signal
Green = close > buyLine   // Buy
Red = close < show // Sell

buycond = Green and Green[1] == 0
sellcond = Red and Red[1] == 0

bullish = ta.barssince(buycond) < ta.barssince(sellcond)
bearish = ta.barssince(sellcond) < ta.barssince(buycond)

buy = bearish[1] and buycond
sell = bullish[1] and sellcond

plotshape(MarkBuySig ? buy : na, style=shape.labelup, text='Buy Next Bar', textcolor=color.new(color.black, 0), location=location.belowbar, color=color.new(color.green, 0))
plotshape(MarkBuySig ? sell : na, style=shape.labeldown, text='Sell Next Bar', textcolor=color.new(color.black, 0), location=location.abovebar, color=color.new(color.red, 0))
bgcolor(showbg ? bullish ? color.new(color.green,90) : color.new(color.red,90) : na )


// === BACKTEST RANGE === //
use_date_range = input(true)
FromYear = input.int(defval=2012, title='From Year', minval=1950)
FromMonth = input.int(defval=1, title='From Month', minval=1)
FromDay = input.int(defval=1, title='From Day', minval=1)
ToYear = input.int(defval=9999, title='To Year', minval=1950)
ToMonth = input.int(defval=1, title='To Month', minval=1)
ToDay = input.int(defval=1, title='To Day', minval=1)
in_date_range = use_date_range ? time > timestamp(FromYear, FromMonth, FromDay, 00, 00) and time < timestamp(ToYear, ToMonth, ToDay, 23, 59) : true

//****************************************************************************//

//////////////////////////////////////////////
//    define strategy entry / exit          //
//////////////////////////////////////////////

//****************************************************************************//
// LONG CONDITIONS

Select_Long_Condition_1 = close > buyLine // Buy when Have Signal
Open_Long_Condition = Select_Long_Condition_1 and strategy.opentrades == 0

//****************************************************************************//
// STOP LOSS Price

float longSL = na
longSL := Open_Long_Condition ? ta.lowest(low, SLDAY)[1] : longSL[1]  


//****************************************************************************//
// Cal StopLoss

Long_Entry_Price = close
Diff_OPEN_to_SL = math.abs(Long_Entry_Price - longSL)

// Exit CONDITIONS

Exit_Long_Condition = close < show // Sell when Have Signal

//****************************************************************************//
// POSITION SIZE CAP

strategy.initial_capital = 50000

float portSize = Compound ? strategy.netprofit + strategy.initial_capital : strategy.initial_capital
float LossAmoutUnit = portSize * Risk_Per_Trade //50
float PercentSL = ( Diff_OPEN_to_SL / Long_Entry_Price ) * 100
float PositionSize = LossAmoutUnit / Diff_OPEN_to_SL


//****************************************************************************//
// ENTRY/EXIT

if Buysig
    if Open_Long_Condition and in_date_range 
        strategy.entry('LONG', strategy.long, qty=PositionSize)


if Exit_Long_Condition and in_date_range
    strategy.close('LONG')
if close < longSL and UseSl
    strategy.close('LONG')

//****************************************************************************//
// PLOT STOP LOSS

longPlotSL = strategy.opentrades > 0 and strategy.position_size > 0 ? longSL : na
// label.new(bar_index, high, text=str.tostring(longPlotSL),color=color.white, textcolor=color.black)
plot(longPlotSL, title="", linewidth=2, style=plot.style_linebr, color=color.new(color.red, 0))



//****************************************************************************//



Plus de