255 EMA- und MACD-Umkehrhandelsstrategie

Schriftsteller:ChaoZhang, Datum: 2023-09-20 15:08:14
Tags:

Übersicht

Diese Strategie verwendet den 255-Perioden-EMA- und MACD-Indikator, um Umkehrhandelsmöglichkeiten zu identifizieren.

Strategie Logik

  1. Der 255-Perioden-EMA wird verwendet, um die mittelfristige bis langfristige Trendrichtung zu bestimmen.

  2. Die oberen und unteren Bands werden auf der Grundlage der EMA festgelegt, wobei die Bandbreite dynamisch durch den ATR-Indikator angepasst wird.

  3. Wenn der Preis über dem oberen Bereich liegt, befindet er sich im Überkaufbereich. Wenn er unter dem unteren Bereich liegt, befindet er sich im Überverkaufbereich. Dies sind Situationen, in denen Rückschläge erwartet werden können.

  4. Der MACD-Indikator verwendet Standardparameter (12, 26, 9).

  5. In Kombination mit EMA-Überkauf/Überverkauf und MACD-Signalen werden umgekehrte Positionen eingesetzt, wenn der Preis weit von der EMA entfernt ist und eine MACD-Umkehrung eintritt.

Analyse der Vorteile

  1. Die 255-Perioden-EMA kann mittelfristige und langfristige Trends recht gut bestimmen.

  2. Die MACD-Crossover können kurzfristige Umkehrchancen sensibel erfassen.

  3. Die EMA-Bänder helfen, überkaufte/überverkaufte Regionen zu identifizieren, um Trendverfolgung zu vermeiden.

  4. Reverse Trading ermöglicht frühe Eintritte vor Preisumkehrungen mit einigen planbasierten Merkmalen.

  5. Dynamische ATR-Stoppverluste können Risiken wirksam kontrollieren.

Risikoanalyse

  1. MACD-Signale können falsche Umkehrungen aufweisen, die zu unnötigen Verlusten führen.

  2. Bei starken Trendszenarien scheitern Umkehrungen wahrscheinlich, daher sollten blinde Umkehrungen vermieden werden.

  3. Ein zu eng eingestellter Stop-Loss kann zu einem vorzeitigen Stopp führen, während ein zu breiter Stop-Loss zu einer unzureichenden Risikokontrolle führen kann.

  4. Eine unsachgemäße Parameter-Ausrichtung kann sich auch auf die Strategieleistung auswirken, was eine iterative Optimierung erfordert.

  5. Die Handelskosten können sich auch auf die endgültige Rentabilität auswirken und sollten berücksichtigt werden.

Optimierungsrichtlinien

  1. Versuche verschiedene EMA-Perioden, um einen besseren mittelfristigen bis langfristigen Trendindikator zu finden.

  2. Versuchen Sie, andere Indikatoren mit der EMA zu kombinieren, um Überkauf/Überverkauf zu erkennen, z. B. Bollinger Bands, KD, RSI.

  3. Optimierung der MACD-Parameter für eine bessere Empfindlichkeit oder Stabilität.

  4. Testen Sie andere Stop-Loss-Methoden, wie zum Beispiel einen Trailing Stop, um Gewinne zu erzielen.

  5. Optimierung der Parameter für verschiedene Produkte und Zeitrahmen für die Robustheit.

  6. Ein Trendstärkenfilter wird eingesetzt, um eine Umkehrung eines starken Trends zu vermeiden.

Schlussfolgerung

Diese Strategie kombiniert EMA-Mittel- bis Langzeittrend und MACD-Kurzzeitumkehrungen, Handel umgekehrt in überkauften/überverkauften Regionen. Es ist eine grundlegende Umkehrstrategie mit Vor- und Nachteilen. Weitere Parameter-Tuning und Risikokontrolle können es zu einem effizienten Handelssystem machen. Jede Strategie benötigt jedoch adaptive Anpassungen pro Marktumfeld, nicht mechanische Signale.


/*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")





Mehr