Stratégie de rebond de la moyenne mobile


Date de création: 2023-12-08 16:47:39 Dernière modification: 2023-12-08 16:47:39
Copier: 0 Nombre de clics: 925
1
Suivre
1621
Abonnés

Stratégie de rebond de la moyenne mobile

Aperçu de la stratégie

Une stratégie de rebond des moyennes mobiles est une stratégie qui suit la rupture des moyennes mobiles. Elle vérifie si le jeton rebondit en dessous de la moyenne mobile, si c’est le cas, c’est un signal à plusieurs têtes; si le jeton rebondit en dessous de la moyenne mobile, c’est un signal à tête nue.

Nom de la stratégie

Exponential Moving Average Bounce Strategy

Principe de stratégie

La stratégie est basée sur une moyenne mobile exponentielle. Elle calcule une ligne EMA en temps réel. Elle vérifie ensuite si le prix rebondit au-dessus ou au-dessous de la ligne EMA:

  • Si le prix tombe en dessous de la ligne EMA, puis se redresse et recule au-dessus de la ligne EMA, il s’agit d’un signal à plusieurs têtes.
  • Si le prix dépasse la ligne EMA avant de replonger et de se refermer en dessous de la ligne EMA, c’est un signal de tête vide.

Cette réaction est le signal d’entrée de la stratégie.

Analyse des forces stratégiques

Opérer en douceur pour éviter d’être piégé

La stratégie de rebond de l’EMA n’intervient qu’après la confirmation d’une reprise des cours, ce qui évite que les opérations de revers ne soient bloquées.

Les retraits sont faibles, mais les revenus historiques sont bons

Grâce à l’utilisation de moyennes mobiles indicielles, qui permettent d’aplanir efficacement les données sur les prix et de filtrer le bruit du marché, les retraits de la stratégie sont minimes et les gains historiques sont meilleurs.

Facile à comprendre et flexible avec les paramètres

La stratégie de rebond EMA dépend uniquement des moyennes mobiles et est très simple et facile à comprendre pour les débutants; les paramètres de la période EMA peuvent être ajustés de manière flexible pour s’adapter à différentes variétés.

Analyse des risques

Facile à détecter

Il y a souvent des fausses ruptures denses près des lignes EMA, ce qui peut provoquer des signaux erronés. Il faut ajuster les paramètres EMA pour filtrer ces bruits.

Le changement de direction est impossible à prévoir

Cette stratégie est essentiellement une opération de tendance. Il n’est pas possible de prédire les points de basculement des prix, il suffit de suivre la tendance. Il s’agit d’un moment d’entrée idéal qui peut être manqué pour un ajustement cyclique.

La position d’arrêt est vulnérable.

Les niveaux d’arrêt proches des moyennes mobiles sont parfois franchis, ce qui entraîne une expansion des pertes. Cela nécessite un arrêt plus souple.

Direction d’optimisation

Combinaison avec d’autres indicateurs pour filtrer le signal

Il est possible d’ajouter d’autres indicateurs comme le RSI et le MACD pour confirmer le renversement des prix et filtrer les faux signaux.

Optimisation de la réserve

Il est possible d’utiliser des méthodes plus flexibles comme l’arrêt de temps, l’arrêt de tremblement, etc. pour réduire le risque d’être renversé.

Optimisation des paramètres

L’optimisation des paramètres cycliques de l’EMA pour trouver la combinaison optimale de paramètres. Il est également possible de modifier dynamiquement les paramètres de l’EMA pour suivre les cycles du marché.

Résumer

La stratégie de rebond des moyennes mobiles est une stratégie de suivi de tendance simple et pratique. Elle fonctionne progressivement, les retraits sont petits et faciles à comprendre. Il existe également un certain risque de faux signal et de risque de rupture.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © tweakerID

// Simple strategy that checks for price bounces over an Exponential Moving Average. If the CLOSE of the candle bounces
// back from having it's LOW below the EMA, then it's a Bull Bounce. If the CLOSE of the candle bounces down from having it's
// high above the EMA, then it's a Bear Bounce. This logic can be reverted.

//@version=4
strategy("EMA Bounce", overlay=true, 
     default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, 
     initial_capital=10000, 
     commission_value=0.04, 
     calc_on_every_tick=false, 
     slippage=0)

direction = input(0, title = "Strategy Direction", type=input.integer, minval=-1, maxval=1)
strategy.risk.allow_entry_in(direction == 0 ? strategy.direction.all : (direction < 0 ? strategy.direction.short : strategy.direction.long))

/////////////////////// STRATEGY INPUTS ////////////////////////////////////////
title1=input(true, "-----------------Strategy Inputs-------------------")  

i_EMA=input(20, title="EMA Length")

/////////////////////// BACKTESTER /////////////////////////////////////////////
title2=input(true, "-----------------General Inputs-------------------")  

// Backtester General Inputs
i_SL=input(true, title="Use Swing Stop Loss and Take Profit")
i_SPL=input(defval=10, title="Swing Point Loopback")
i_PercIncrement=input(defval=.2, step=.1, title="Swing Point SL Perc Increment")*0.01
i_TPRRR = input(1.2, step=.1, title="Take Profit Risk Reward Ratio")

// Bought and Sold Boolean Signal
bought = strategy.position_size > strategy.position_size[1] 
 or strategy.position_size < strategy.position_size[1]

// Price Action Stop and Take Profit
LL=(lowest(i_SPL))*(1-i_PercIncrement)
HH=(highest(i_SPL))*(1+i_PercIncrement)
LL_price = valuewhen(bought, LL, 0)
HH_price = valuewhen(bought, HH, 0)
entry_LL_price = strategy.position_size > 0 ? LL_price : na 
entry_HH_price = strategy.position_size < 0 ? HH_price : na 
tp=strategy.position_avg_price + (strategy.position_avg_price - entry_LL_price)*i_TPRRR
stp=strategy.position_avg_price - (entry_HH_price - strategy.position_avg_price)*i_TPRRR


/////////////////////// STRATEGY LOGIC /////////////////////////////////////////

EMA=ema(close, i_EMA)
LowAboveEMA=low > EMA
LowBelowEMA=low < EMA
HighAboveEMA=high > EMA
HighBelowEMA=high < EMA
BullBounce=LowAboveEMA[1] and LowBelowEMA and close > EMA //and close > open
BearBounce=HighBelowEMA[1] and HighAboveEMA and close < EMA //and close < open
plot(EMA)

BUY=BullBounce
SELL=BearBounce

//Inputs
DPR=input(false, "Allow Direct Position Reverse")
reverse=input(false, "Reverse Trades")

// Entries
if reverse
    if not DPR
        strategy.entry("long", strategy.long, when=SELL and strategy.position_size == 0)
        strategy.entry("short", strategy.short, when=BUY and strategy.position_size == 0)
    else     
        strategy.entry("long", strategy.long, when=SELL)
        strategy.entry("short", strategy.short, when=BUY)
else
    if not DPR 
        strategy.entry("long", strategy.long, when=BUY and strategy.position_size == 0)
        strategy.entry("short", strategy.short, when=SELL and strategy.position_size == 0)
    else
        strategy.entry("long", strategy.long, when=BUY)
        strategy.entry("short", strategy.short, when=SELL)


SL=entry_LL_price
SSL=entry_HH_price
TP=tp
STP=stp

strategy.exit("TP & SL", "long", limit=TP, stop=SL, when=i_SL)
strategy.exit("TP & SL", "short", limit=STP, stop=SSL, when=i_SL)

/////////////////////// PLOTS //////////////////////////////////////////////////

plot(strategy.position_size > 0 ? SL : na , title='SL', style=plot.style_cross, color=color.red)
plot(strategy.position_size < 0 ? SSL : na , title='SSL', style=plot.style_cross, color=color.red)
plot(strategy.position_size > 0 ? TP : na, title='TP', style=plot.style_cross, color=color.green)
plot(strategy.position_size < 0 ? STP : na, title='STP', style=plot.style_cross, color=color.green)
// Draw price action setup arrows
plotshape(BUY ? 1 : na, style=shape.triangleup, location=location.belowbar, 
 color=color.green, title="Bullish Setup", transp=80, size=size.auto)
plotshape(SELL ? 1 : na, style=shape.triangledown, location=location.abovebar, 
 color=color.red, title="Bearish Setup", transp=80, size=size.auto)