255 Stratégie de négociation de renversement de l' EMA et du MACD

Auteur:ChaoZhang est là., Date: 2023-09-20 15h08 et 14h
Les étiquettes:

Résumé

Cette stratégie utilise l'indicateur EMA et MACD de 255 périodes pour identifier les opportunités de trading d'inversion.

La logique de la stratégie

  1. L'EMA à 255 périodes est utilisé pour déterminer la direction de la tendance à moyen et long terme.

  2. Les bandes supérieures et inférieures sont fixées en fonction de l'EMA, la largeur de bande étant réglée dynamiquement par l'indicateur ATR.

  3. Lorsque le prix est au-dessus de la bande supérieure, il est dans la région de surachat. Lorsque le prix est en dessous de la bande inférieure, il est dans la région de survente.

  4. L'indicateur MACD utilise des paramètres standard (12, 26, 9).

  5. Combinés avec les signaux EMA suracheté/survendu et MACD, les positions inversées sont prises lorsque le prix est loin de l'EMA et que l'inversion MACD se produit.

Analyse des avantages

  1. L'EMA à 255 périodes peut déterminer assez bien les tendances à moyen et long terme.

  2. Les croisements MACD peuvent capter de manière sensible les opportunités d'inversion à court terme.

  3. Les bandes EMA aident à identifier les régions surachetées/survendues afin d'éviter la poursuite de tendances.

  4. Le reverse trading permet des entrées précoces avant les renversements de prix, avec certains traits basés sur le plan.

  5. L'ATR dynamique permettra de contrôler efficacement les risques.

Analyse des risques

  1. Les signaux MACD peuvent avoir de faux retours, entraînant des pertes inutiles.

  2. Il est probable que des renversements échouent dans des scénarios de forte tendance, il convient donc d'éviter les renversements aveugles.

  3. Le paramètre de stop loss trop serré peut entraîner un arrêt prématuré, tandis qu'un paramètre trop large peut entraîner un contrôle insuffisant du risque.

  4. Un réglage incorrect des paramètres peut également avoir un impact sur les performances de la stratégie, nécessitant une optimisation itérative.

  5. Les coûts de négociation peuvent également avoir une incidence sur la rentabilité finale et doivent être pris en considération.

Directions d'optimisation

  1. Testez différentes périodes EMA pour trouver un meilleur indicateur de tendance à moyen et à long terme.

  2. Essayez de combiner d'autres indicateurs avec l'EMA pour identifier le surachat/survente, par exemple les bandes de Bollinger, KD, RSI.

  3. Optimiser les paramètres MACD pour une meilleure sensibilité ou stabilité.

  4. Testez d'autres méthodes de stop-loss, comme le trailing stop pour verrouiller les profits.

  5. Optimiser les paramètres pour différents produits et délais de robustesse.

  6. Incorporer un filtre de force de tendance pour éviter les renversements dans les tendances fortes.

Conclusion

Cette stratégie combine la tendance moyenne à longue et les inversions à court terme de l'EMA et du MACD, en négociant à l'inverse dans les régions surachetées / survendues. C'est une stratégie de renversement de base avec des avantages et des inconvénients. Un ajustement supplémentaire des paramètres et un contrôle des risques peuvent en faire un système de trading efficace. Mais toute stratégie nécessite des ajustements adaptatifs par environnement de marché, pas des signaux mécaniques.


/*backtest
start: 2023-09-12 00:00:00
end: 2023-09-19 00:00:00
period: 15m
basePeriod: 5m
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/
// © bufirolas

//--- From 15 Trading Examples by Trader Alyx ---
// Seems like this strategy works better if we reverse the EMA filter logic.

// "Description: This basic scalping strategy allows you to enter the market based upon sentiment
// provided by the EMA, set at 255 periods. When price is trading below the 255 EMA, you would
// look to enter a LONG BUY positions, and when price is trading above the 255 EMA, you would
// look to enter a SELL SHORT position. The MACD lagging indicator will show you clear signals for
// when to do this. When the MACD lines cross in a bullish manner and price is below the 255
// EMA, buy. When the MACD lines cross in a bearish manner and price is above the 255 EMA,
// sell.
// NOTE: Make sure that price is trading away from the 255EMA before entering a LONG or SHORT
// position. As you can see in the chart below, the clearest signs for trade entry were presented
// when price was trading AWAY from the 255EMA"

//@version=4
// strategy("255 EMA Strategy", overlay=true, pyramiding=1, default_qty_type=strategy.cash, default_qty_value=100, commission_value = 0.04, initial_capital=100)

//Inputs
i_reverse=input(false, title="Trade Reverse")
i_EMAreverse=input(true, title="EMA Reverse Entry")
i_EMAlength=input(defval=255, title="EMA Length")
i_EMAexpander=input(defval=5, title="EMA Expander")
i_MACDmult=input(defval=1, minval=1, title="MACD Mult")

//SL & TP Calculations
i_SL=input(true, title="Use Swing Lo/Hi Stop Loss & Take Profit")
i_SwingLookback=input(20, title="Swing Lo/Hi Lookback")
i_SLExpander=input(defval=0, step=.2, title="SL Expander")*.01
i_TPExpander=input(defval=0, step=.2, title="TP Expander")*.01


//Strategy Variables
EMA=ema(close,i_EMAlength)
[macdLine, signalLine, histLine]=macd(close, 12*i_MACDmult, 26*i_MACDmult, 9*i_MACDmult)
EMAupper=EMA+((atr(100))*i_EMAexpander)
EMAlower=EMA-((atr(100))*i_EMAexpander)

//SL & TP Variables
SwingLow=lowest(i_SwingLookback)
SwingHigh=highest(i_SwingLookback)

//Calculations
EMAbuy=i_EMAreverse ? close > EMAupper : close < EMAlower
EMAsell=i_EMAreverse ? close < EMAlower : close > EMAupper
MACDbuy=crossover(macdLine, signalLine)
MACDsell=crossunder(macdLine, signalLine)

//SL & TP Calculations
bought=strategy.position_size != strategy.position_size[1]
lSL=valuewhen(bought, SwingLow, 0)*(1-i_SLExpander)
sSL=valuewhen(bought, SwingHigh, 0)*(1+i_SLExpander)
lTP=strategy.position_avg_price + (strategy.position_avg_price-(valuewhen(bought, SwingLow, 0))*(1-i_TPExpander))
sTP=strategy.position_avg_price - (valuewhen(bought, SwingHigh, 0) - strategy.position_avg_price)*(1+i_TPExpander*100)
islong=strategy.position_size > 0
isshort=strategy.position_size < 0
SL= islong ? lSL : isshort ? sSL : na
TP= islong ? lTP : isshort ? sTP : na


//Entries
strategy.entry("long", long=not i_reverse?true:false, when=EMAbuy and MACDbuy)
strategy.entry("short", long=not i_reverse?false:true, when=EMAsell and MACDsell)

//Exits
if i_SL
    strategy.exit("longexit", "long", stop=SL, limit=TP)
    strategy.exit("shortexit", "short", stop=SL, limit=TP)

//Plots
plot(EMA, "EMA", color=color.white, linewidth=2)
plot(EMAupper, "EMA Upper Band")
plot(EMAlower, "EMA Lower Band")
plot(i_SL ? SL : na, color=color.red, style=plot.style_cross, title="SL")
plot(i_SL ? TP : na, color=color.green, style=plot.style_cross, title="TP")





Plus de