Dreifache EMA Trailing Stop Strategie


Erstellungsdatum: 2023-10-17 15:05:41 zuletzt geändert: 2023-10-17 15:05:41
Kopie: 2 Klicks: 715
1
konzentrieren Sie sich auf
1617
Anhänger

Dreifache EMA Trailing Stop Strategie

Überblick

Die Strategie ist eine Implementierung der typischen Triple-Index-Moving-Average-Trading-Strategie. Sie erzeugt Handelssignale durch die Kreuzung von relativ schnellen 5-Tage-EMA, mittelschnellen 20-Tage-EMA und langsamen 50-Tage-EMA. Gleichzeitig kombiniert sie die falschen Signale mit bestimmten Ticks, die den aktuellen K-Linie-Schlusskurs gegenüber dem Schlusskurs des Vortages erhöhen oder senken.

Grundsätze

Wenn die 5-Tage-EMA die 20-Tage-EMA durchschreitet und die drei EMAs mehrere Tickets aufweisen ((5-Tage-EMA > 20-Tage-EMA > 50-Tage-EMA), und der aktuelle K-Linie-Abschlusspreis über einen bestimmten Tickets ansteigt, machen Sie mehr; wenn die 5-Tage-EMA die 20-Tage-EMA durchschreitet und die drei EMAs über einen bestimmten Tickets ansteigen ((5-Tage-EMA < 20-Tage-EMA < 50-Tage-EMA), und der aktuelle K-Linie-Abschlusspreis über einen bestimmten Tickets ansteigt, machen Sie nichts.

Nach dem Eintritt, wenn der Preis über bestimmte Tickets läuft, wird der Tracking-Stop-Mechanismus aktiviert, der die Stop-Line kontinuierlich an die Preisschwankungen anpasst, um die größeren Tickets zu sperren.

Vorteile

  1. Die Verwendung von dreifachen EMAs zur Bildung von Handelssignalen kann Marktlärm effektiv filtern und Trends erkennen. Schnelle EMAs reflektieren die neuesten Veränderungen, mittlere EMAs bestimmen die Richtung der Trends und langsame EMAs filtern die Erschütterungen.

  2. Durch die Erhöhung des aktuellen K-Linie-Abschlusskurses im Vergleich zum Vortags-Abschlusskurs können weitere Falschsignale gefiltert und unnötige Transaktionen reduziert werden.

  3. Mit einem Stop-Loss-Tracking-Mechanismus kann die Stop-Loss-Linie dynamisch an die Marktentwicklung angepasst werden, um den Gewinn zu maximieren.

  4. Die Parameter der Strategie sind flexibel eingestellt und können für verschiedene Sorten und Perioden optimiert werden, von der Tages- bis zur Minutenlinie.

Die Gefahr

  1. In einem wackligen Markt sind EMA-Kreuzungen häufig und können zu hohen Transaktionsgebühren und Slipp-Kosten führen.

  2. Tracking-Stopps können bei starken Erschütterungen zu früh eingestellt werden und können den gesamten Trend nicht halten.

  3. Die EMA-Verzögerung kann einen Trendwendepunkt verpassen und einen Verlust verursachen.

  4. Die Parameter wie die Länge der EMA-Zyklen, die Verfolgung von Stop-Loss-Ticks usw. müssen optimiert werden. Die Wirksamkeit unterscheidet sich stark zwischen verschiedenen Sorten und Zyklen.

Optimierungsrichtung

  1. Es kann mit anderen Indikatoren wie MACD, KD und anderen kombiniert werden, um die Filterung von Handelssignalen zu unterstützen.

  2. Die optimale Kombination von Parametern lässt sich anhand der spezifischen Sorten- und Zyklusparameter testen und optimieren.

  3. Die Parameter können dynamisch angepasst werden, z. B. durch manuelle Intervention oder maschinelles Lernen.

  4. Es kann in bestimmten Situationen in Erwägung gezogen werden, den Tracking-Stopp zu schließen und die Position vollständig zu halten.

  5. Ein automatischer Stopp kann anstelle eines einfachen Tracking-Stopps verwendet werden.

Zusammenfassen

Die Strategie integriert die drei üblichen technischen Analysemethoden EMA-Cross, Price Breakthrough und Stop Loss Tracking zu einem umfassenderen und zuverlässigeren Trend-Tracking-Handelssystem. Durch die Optimierung der Parameter kann sie an verschiedene Sorten und Perioden angepasst werden und wirkt in Märkten mit deutlichen Trends besser. Die Strategie weist jedoch auch einige typische Schwächen der technischen Analysestrategie auf, die für weitere Marktbedingungen optimiert werden müssen.

Strategiequellcode
/*backtest
start: 2023-10-01 00:00:00
end: 2023-10-02 12:00:00
period: 1m
basePeriod: 1m
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/
// © Matt Dearden - IndoPilot
// @version=4

/////////////////////////////////////////////////////// Initial Parameters /////////////////////////////////////////////////////// 
SystemName = "Triple EMA Strategy"
ShortSystemName = "TEMA"
InitPosition = 0
InitCapital = 50000
InitCommission = 0.004 //approx value to compensate for Oanda spreads
InitPyramidMax = 0
CalcOnorderFills = true

strategy(title=SystemName, shorttitle=ShortSystemName, overlay=true, pyramiding=InitPyramidMax, 
 default_qty_type=strategy.cash, default_qty_value=InitPosition, commission_type=strategy.commission.percent, 
 commission_value=InitCommission, initial_capital=InitCapital, max_lines_count=500, 
 max_labels_count=500, process_orders_on_close=false, calc_on_every_tick=false) 

///////////////////////////////////////////////////////////// Inputs /////////////////////////////////////////////////////////////

DateFilter = input(false, "═════ Data Filtering ═════") 
InitYear = input(title="Year", type=input.integer, defval=2021, minval=2000, maxval=2021)
InitMonth = input(title="Month (0=ALL)", type=input.integer, defval=0, minval=0, maxval=12)
InitStopLoss = input(title="Stop Loss (ticks)", type=input.integer, defval=100, minval=0, maxval=1000) 
TrailingStopLoss = input(title="Trailing S/L (ticks)", type=input.integer, defval=130, minval=0, maxval=1000) 
InitBuffer = input(title="Buffer (ticks)", type=input.integer, defval=15, minval=0, maxval=1000) 
InitEMA1 = input(title="EMA 1", type=input.integer, defval=5, minval=0, maxval=1000) 
InitEMA2 = input(title="EMA 2", type=input.integer, defval=20, minval=0, maxval=1000) 
InitEMA3 = input(title="EMA 3", type=input.integer, defval=50, minval=0, maxval=1000) 

//////////////////////////////////////////////////////////// Variables ///////////////////////////////////////////////////////////

var StopLoss = float(0.0)
var StartPrice = float(0.0)
//setup multipliers and catch JPY difference
Multiplier = syminfo.currency == "JPY" ? 10 : 1000
//get the daily exchange rate from yesterday
//X_rate = security(AccountCurrency+syminfo.currency, "D", close[1]) 
OrderQty = 1  
Buffer = InitBuffer / (Multiplier * 100)

/////////////////////////////////////////////////////// Triple EMA Strategy //////////////////////////////////////////////////////

EMA1 = ema(close, InitEMA1)
EMA2= ema(close, InitEMA2)
EMA3 = ema(close, InitEMA3)

//entry conditions
longCondition = crossover(EMA1, EMA2) and close > EMA3 and EMA1 > EMA3 and EMA2 > EMA3 and close > (close[1] + Buffer) 
shortCondition = crossunder(EMA1, EMA2) and close < EMA3 and EMA1 < EMA3 and EMA2 < EMA3 and close < (close[1] - Buffer) 

/////////////////////////////////////////////////////// Trailing Stoploss ////////////////////////////////////////////////////////

if (strategy.position_size > 0 and (close > (StartPrice + (TrailingStopLoss / (100 * Multiplier)))))  
    StopLoss := max(StopLoss, close - (TrailingStopLoss / (100 * Multiplier))) 
    strategy.exit("Long Stoploss", "Long") 
    
if (strategy.position_size < 0 and (close < (StartPrice - (InitStopLoss / (100 * Multiplier))))) 
    StopLoss := min(StopLoss, close + (TrailingStopLoss / (100 * Multiplier)))
    strategy.exit("Short Stoploss", "Short") 
    
///////////////////////////////////////////////////////// Setup entries /////////////////////////////////////////////////////////

if (longCondition)
    StartPrice := close
    StopLoss := StartPrice - (InitStopLoss / (100 * Multiplier)) 
    strategy.entry("Long", strategy.long, qty=OrderQty)
    strategy.exit("Long Stoploss", "Long")

if (shortCondition)
    StartPrice := close
    StopLoss := StartPrice + (InitStopLoss / (100 * Multiplier)) 
    strategy.entry("Short", strategy.short, qty=OrderQty)
    strategy.exit("Short Stoploss", "Short")
    
///////////////////////////////////////////////////////// Draw the EMAs /////////////////////////////////////////////////////////
plot(EMA1, "EMA1", color=#00FF00)
plot(EMA2, "EMA2", color=#FF0000)
plot(EMA3, "EMA3", color=#4040FF)