Stratégie de croisement EMA du prix le plus élevé Breakout


Date de création: 2024-03-29 14:39:27 Dernière modification: 2024-03-29 14:39:27
Copier: 0 Nombre de clics: 287
1
Suivre
1166
Abonnés

Stratégie de croisement EMA du prix le plus élevé Breakout

Aperçu

La stratégie utilise le prix le plus élevé d’une période donnée comme signal d’achat et l’EMA comme signal de vente. La stratégie génère un signal d’achat lorsque le prix de clôture dépasse le prix le plus élevé d’une période donnée. La stratégie génère un signal de vente lorsque le prix de clôture dépasse l’EMA.

Principe de stratégie

Le principe central de la stratégie de croisement EMA de rupture des prix est d’utiliser la rupture des prix et la rupture des EMA pour capturer la tendance du marché. Lorsque le prix dépasse le prix le plus élevé de la période donnée, cela indique que le marché est susceptible d’entrer dans une tendance à la hausse, donc la stratégie génère un signal d’achat.

La stratégie utilise les étapes suivantes pour réaliser une transaction:

  1. Le prix le plus élevé de la période donnée est considéré comme le prix de rupture.
  2. Le calcul de l’EMA comme signal de vente
  3. La stratégie génère un signal d’achat si aucune position n’est actuellement détenue lorsque le prix de clôture dépasse le prix d’achat.
  4. La stratégie génère un signal de vente lorsque le cours de clôture tombe au-dessus de l’EMA si la position est actuellement détenue.
  5. Le prix le plus bas de la période donnée est calculé comme prix stop loss.
  6. Si le prix est inférieur au prix d’arrêt, la stratégie est immédiatement levée.

Grâce aux étapes ci-dessus, la stratégie peut tirer profit de la tendance haussière du marché tout en utilisant le stop loss pour contrôler le risque baissier.

Avantages stratégiques

Les avantages d’une stratégie croisée de rupture des prix les plus élevés de l’EMA sont les suivants:

  1. Suivi de la tendance: cette stratégie utilise les ruptures de prix et les croisements EMA pour capturer la tendance du marché et peut profiter de la tendance à la hausse.
  2. Contrôle des risques: la stratégie utilise le prix stop-loss pour contrôler les risques de baisse, ce qui réduit efficacement le retrait maximal de la stratégie.
  3. Flexibilité des paramètres: la stratégie offre plusieurs paramètres personnalisables par l’utilisateur, tels que le cycle, le ratio de risque, l’utilisation de stop loss, etc., qui peuvent être ajustés en fonction de différents styles de négociation et de l’environnement du marché.
  4. Simple et efficace: la logique de la stratégie est simple et claire, facile à comprendre et à mettre en œuvre, tout en offrant de bons rendements sur un marché en tendance.

Risque stratégique

Bien qu’il y ait des avantages à une stratégie de croisement de l’EMA à la hausse, elle comporte les risques suivants:

  1. Risque de fluctuation du marché: dans les cas de forte volatilité du marché, la stratégie peut générer un plus grand nombre de faux signaux, entraînant des transactions fréquentes et des pertes de fonds.
  2. Risque de retournement de tendance: la stratégie peut retarder la vente en cas de retournement de tendance du marché, entraînant un retournement de bénéfices ou une perte de bénéfices.
  3. Risque de paramétrage: la performance de la stratégie dépend de paramètres tels que la périodicité, le taux de risque, etc. Si les paramètres sont mal configurés, cela peut entraîner une mauvaise performance de la stratégie.

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

  1. Adaptation des paramètres: adaptation des paramètres stratégiques, tels que l’augmentation des cycles et la réduction du ratio de risque, en fonction des différents environnements de marché et types de transactions, afin de réduire les faux signaux et les transactions fréquentes.
  2. Combinaison avec d’autres indicateurs: peut être combiné avec d’autres indicateurs techniques, tels que le RSI, le MACD, etc., pour confirmer l’efficacité des tendances et des signaux et améliorer la fiabilité de la stratégie.
  3. Fixez des arrêts raisonnables: Fixez des arrêts raisonnables qui permettent de maîtriser le risque de baisse et de ne pas s’arrêter trop tôt, ce qui entraîne une perte de profit.

Orientation de l’optimisation de la stratégie

Afin d’améliorer encore la performance de la stratégie de croisement EMA de rupture des prix les plus élevés, les orientations d’optimisation suivantes peuvent être envisagées:

  1. Paramètres d’ajustement dynamique: en fonction de la volatilité du marché et de l’intensité de la tendance, les paramètres de stratégie d’ajustement dynamique, tels que l’augmentation du cycle lorsque la volatilité est importante, l’augmentation du ratio de risque lorsque la tendance est forte, etc., pour s’adapter à différents environnements de marché.
  2. Introduction d’un mécanisme de négociation à vide: sur la base de la négociation à vide traditionnelle, l’introduction d’un mécanisme de négociation à vide permet de tirer profit de la tendance à la baisse et d’améliorer l’adaptabilité et la rentabilité de la stratégie.
  3. Optimisation des arrêts et des arrêts: Optimisation des paramètres des arrêts et des arrêts, par exemple en utilisant des méthodes telles que l’arrêt mobile, l’arrêt partiel, etc., pour mieux contrôler le risque et bloquer les bénéfices.
  4. Combinaison de l’analyse fondamentale avec l’analyse technique, afin d’ajuster les positions et les paramètres de la stratégie en fonction des éventuelles fluctuations du marché, par exemple avant et après les événements importants tels que la publication des résultats de l’entreprise ou des données économiques.

Les mesures d’optimisation ci-dessus peuvent améliorer la stabilité, l’adaptabilité et la rentabilité des stratégies croisées EMA à prix le plus élevé, leur permettant de bien performer dans un plus grand nombre de contextes de marché.

Résumer

La stratégie de rupture de crête EMA est une stratégie de suivi de tendance simple et efficace, qui capture les tendances du marché en utilisant des ruptures de prix et des ruptures d’EMA, tout en utilisant des arrêts pour contrôler le risque de baisse. La logique de la stratégie est claire, les paramètres sont flexibles et faciles à comprendre et à mettre en œuvre. Bien que la stratégie présente certains risques, tels que le risque de fluctuation du marché, le risque de renversement de tendance et le risque de paramétrage, ces risques peuvent être atténués par des mesures de contrôle du risque appropriées, telles que l’ajustement des paramètres, la combinaison d’autres indicateurs et la mise en place d’un arrêt raisonnable.

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



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