
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.
Exponential Moving Average Bounce Strategy
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:
Cette réaction est le signal d’entrée de la stratégie.
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.
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.
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.
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.
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.
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.
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.
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é.
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é.
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.
/*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)