Stratégie de trading inversée basée sur 255 EMA et MACD


Date de création: 2023-09-20 15:08:14 Dernière modification: 2023-09-20 15:08:14
Copier: 0 Nombre de clics: 748
1
Suivre
1617
Abonnés

Aperçu

La stratégie utilise les EMA et les indicateurs MACD de 255 cycles pour rechercher des opportunités de reprise. Une entrée inversée est effectuée lorsque le prix est éloigné de la 255 EMA et que le MACD se fourche ou se fourche.

Principe de stratégie

  1. Utilisez l’EMA de 255 cycles pour déterminer la tendance à moyen et long terme. Le prix qui s’éloigne de l’EMA représente l’entrée dans une zone de survente.

  2. L’EMA en haut est réglé pour la montée, l’EMA en bas est réglé pour la descente, la largeur de l’orbite est dynamiquement ajustée par l’indicateur ATR.

  3. Il s’agit d’une zone de survente lorsque le prix est supérieur à la barre supérieure et d’une zone de survente lorsque le prix est inférieur à la barre inférieure. Dans ces cas, attendez le signal de reprise.

  4. L’indicateur MACD utilise les paramètres standard ((12,26,9)). Il s’agit d’un signal à plusieurs têtes lorsque le MACD est en or et d’un signal à vide lorsque le MACD est en blanc.

  5. En combinant les signaux EMA et MACD, un entrée inverse est effectuée lorsque le prix est éloigné de l’EMA et que le MACD se retourne.

Analyse des avantages

  1. L’utilisation d’EMA à 255 cycles permet de mieux juger de la direction des tendances à moyen et long terme.

  2. Les fourches de la MACD sont plus sensibles aux occasions de retournement à court terme.

  3. La mise en place d’un environnement de courbe à la hausse et à la baisse de l’EMA permet de déterminer les zones de survente et d’éviter les fluctuations de la tendance.

  4. Les stratégies de trading inversées, qui peuvent être entrées avant que le prix ne se retourne, ont une certaine planification.

  5. L’utilisation d’un arrêt ATR dynamique permet de maîtriser efficacement les risques.

Analyse des risques

  1. Les signaux du MACD peuvent être faussement inversés, entraînant des pertes inutiles.

  2. Il est plus probable qu’un renversement soit un échec en cas de forte tendance, il faut donc éviter les renversements aveugles.

  3. Un arrêt de perte trop petit peut déclencher un arrêt de perte, un arrêt trop élevé peut entraîner un contrôle insuffisant du risque.

  4. Une mauvaise configuration des paramètres peut également affecter l’efficacité de la stratégie et nécessite des tests répétés et une optimisation.

  5. Les frais de transaction peuvent également avoir une incidence sur les bénéfices finaux et doivent être pris en compte dans la stratégie.

Direction d’optimisation

  1. Il est possible de tester différents paramètres cycliques de l’EMA pour trouver des indicateurs de tendance à moyen et à long terme plus appropriés.

  2. D’autres indicateurs peuvent être essayés en combinaison avec l’EMA pour déterminer les zones de survente. Par exemple, les bandes de Brin, KD, RSI, etc.

  3. Les paramètres MACD peuvent également être optimisés pour trouver des paramètres de combinaison plus sensibles ou plus stables.

  4. Il est possible de tester d’autres méthodes de stop loss, comme le trailing stop loss pour verrouiller les bénéfices.

  5. Il est possible d’optimiser les paramètres en fonction des différentes variétés et des différentes périodes, ce qui rend la stratégie plus adaptative.

  6. Il est possible de combiner les indicateurs de force de tendance pour éviter un renversement de tendance forte.

Résumer

Cette stratégie intègre des jugements de tendance à long terme dans les EMA et des signaux de revers à court terme dans le MACD, et est une stratégie de revers de base dans les zones de survente et de survente. Cette stratégie présente certains avantages, mais il existe également des risques à prévenir. En continuant à optimiser les paramètres et la maîtrise des risques, la stratégie peut devenir une stratégie de trading quantitative efficace.

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