Doppelte gleitende Durchschnittsdifferenz kombiniert mit dem Trend des ATR-Indikators nach Strategie

Schriftsteller:ChaoZhang, Datum: 2023-11-16 11:25:23
Tags:

img

Übersicht

Diese Strategie verwendet das goldene Kreuz und die toten Kreuzsignale, die durch doppelte gleitende EMA-Durchschnitte gebildet werden, kombiniert mit dem ATR-Indikator, um die Marktvolatilität zu beurteilen, um einen Trend zu implementieren, der einem niedrigen Kauf-hohen Verkauf folgt. Wenn die schnelle Linie über die langsame Linie überschreitet und der ATR-Indikator niedriger ist als der vorherige Tag, gilt es als ein bullisches Signal, um lang zu gehen. Wenn die schnelle Linie unter die langsame Linie überschreitet und der ATR-Indikator höher ist als der vorherige Tag, gilt es als ein bärisches Signal, um kurz zu gehen.

Strategie Logik

  1. Verwenden Sie doppelte gleitende EMA-Durchschnitte von Länge 20 und 55. Wenn die schnelle Linie über die langsame Linie geht und ein goldenes Kreuz erzeugt, gilt dies als ein bullisches Signal. Wenn die schnelle Linie unter die langsame Linie geht und ein totes Kreuz erzeugt, gilt es als ein bärisches Signal.

  2. Der ATR-Indikator spiegelt die Volatilität und das Risikoniveau des Marktes wider. Wenn der ATR niedriger als am Vortag ist, zeigt er an, dass die Marktvolatilität abnimmt und es geeignet ist, lang zu gehen. Wenn der ATR höher als am Vortag ist, zeigt er an, dass die Marktvolatilität zunimmt und es geeignet ist, kurz zu gehen.

  3. Gehen Sie nur lang, wenn die schnelle Linie Gold die langsame Linie überschreitet und die ATR niedriger ist als am Vortag. Gehen Sie nur kurz, wenn die schnelle Linie tot die langsame Linie überschreitet und die ATR höher ist als am Vortag. Dies vermeidet, dass Sie intervenieren, wenn die Marktvolatilität hoch ist.

  4. Der ATR-Indikator wird auch verwendet, um Stop-Loss- und Take-Profit-Levels festzulegen. Der Stop-Loss wird zum aktuellen Preis minus ATR multipliziert mit dem Stop-Loss-Multiplikator festgelegt. Der Take-Profit wird zum aktuellen Preis plus ATR multipliziert mit dem Take-Profit-Multiplikator festgelegt.

  5. Der Standard-Stop-Loss-Multiplikator beträgt 3xATR und der Standard-Take-Profit-Multiplikator beträgt 3xATR. Dies ermöglicht es dem Stop-Loss und Take-Profit, der Marktvolatilität dynamisch zu folgen.

Vorteile der Strategie

  1. Die Verwendung eines doppelten gleitenden Durchschnittssystems ermöglicht eine stärkere Bestätigung des Long/Short-Status und verhindert, dass man durch falsche Ausbrüche, die häufig auf dem Markt auftreten, irregeführt wird.

  2. Durch die Einführung des ATR-Indikators kann die Strategie nur dann eingesetzt werden, wenn die Volatilität gering ist.

  3. Der dynamische ATR-Stop-Loss/Take-Profit ermöglicht es, die Stops und Ziele entsprechend dem Marktvolatilitätsniveau festzulegen, um zu verhindern, dass die Stops zu nahe oder die Ziele zu flach sind.

  4. Es ist möglich, den gleitenden Durchschnitts-Crossover als zusätzlichen Ausgangmechanismus einzustellen, um die Rentabilität des Systems weiter zu optimieren.

  5. Dynamische Stop-Loss- und Take-Profit-Niveaus basierend auf ATR passen besser zur Trend-Trading-Logik.

Risiken der Strategie

  1. Die beiden gleitenden Durchschnitte weisen eine gewisse Signalverzögerung auf, was zu starken kurzfristigen Trends führen kann.

  2. Wenn die Volatilität hoch ist, steigt der ATR und kann die Eintrittsmöglichkeiten verpassen.

  3. Für lange Halteperioden kann der Stop-Loss zu nahe kommen. Er muss entsprechend der Trendstärke entspannt werden.

  4. Die gleitenden Durchschnittswerte sind in unruhigen Märkten schwach ausgeprägt.

  5. Die ATR-Parameter müssen für verschiedene Produkte und Zeitrahmen angepasst werden.

Verbesserungsbereiche

  1. Versuche verschiedene Kombinationen von gleitenden Durchschnittslängen, um Parameter zu finden, die den Trendmerkmalen des Produkts entsprechen.

  2. Einbeziehung anderer Indikatoren wie MACD, KD zur Bestätigung der gleitenden Durchschnitts-Crossover-Signale und Verbesserung der Entscheidungssicherheit.

  3. Optimierung der ATR-Parameter durch Backtesting, um die Volatilitätsmerkmale des Produkts besser abzugleichen.

  4. Der ATR-Multiplikator ist anpassbar, um den Stop-Loss-/Take-Profit-Kurs dynamisch an die Trendstärke anzupassen.

  5. Einbeziehung eines Trendstärkenindikators zur Verringerung der Stop-Loss-Anforderungen bei schwachen Trends und Erhöhung der Gewinnspanne bei starken Trends.

Zusammenfassung

Diese Strategie integriert die Trendbeurteilung von dual EMAs und die Risikokontrolle des ATR-Volatilitätsindikators, um ein relativ vollständiges Trendfolgensystem zu bilden. Der Fokus für die Optimierung liegt auf der Anpassung der gleitenden Durchschnitts- und ATR-Parameter an die Produktcharakteristiken und der Gestaltung dynamischer Stop-Loss/Take-Profit-Mechanismen, um Änderungen in der Trendstärke zu folgen.


/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
// **********************************************
// PtahX EMA/ATR Strategy Public Release
// EMA Strategy with ATR & "Fear Factor" built in 
// written by PtahX October 2019
// * modifications welcome 
// * please let me know if you improve it so I can continue to learn :) 
// * use at your own risk - I'm a new programmer and still learning
// * Best of luck on your trades!!

// Take Profit (TP) option based on ATR or MA Crossover 
//***********************************************

strategy(title="PtahX EMA/ATR Strategy", overlay=true, pyramiding=1, calc_on_every_tick=true, default_qty_value=1, initial_capital=10000, slippage=2)

//***************************** 
// Global Inputs
//***************************** 

fastMA = input(title="Fast Moving Average", defval=20, step=1)
slowMA = input(title="Slow Moving Average", defval=55, step=1)
source = input(close, title="Source")
atrLength = input(title="ATR Length", defval=14, minval=7, step=1)
slMultiplier = input(title="Stop Loss Multiple", type=input.float, defval=3, minval=1, step=0.2)
tpMultiplier = input(title= "Take Profit Multiple", type=input.float, defval=3, minval=1, step=0.2)
maPlot = input(true, title="Plot EMA?")
maCrossoverExit =  input(false, title="Exit with Slow MA Crossover?")
atrExit = input(true, title="Exit with ATR?")
//***********************************
// ATR
//***********************************
atr = atr(atrLength)


//***********************************
// Volatility Filter
//**********************************
// During uptrends the ATR indicator tends to post lower volatility. 
// During downtrends, the ATR indicator tends to post higher volatility

volatilityBullish = atr < atr[1] 
volatilityBearish = atr > atr[1]


//***********************************
// Moving Averages
//***********************************
    
// Double Line Plot Code (used for Entries & Exits not plotted by default)
fast = ema(source, fastMA)
slow = ema(source, slowMA)
maLong = crossover(fast, slow)
maShort = crossunder(fast, slow) 

// Single Line Plot Code
bullish = slow > slow[1]
bearish = slow < slow[1]
barColor = bullish ? color.green : bearish ? color.red : color.blue


//***************************** 
// Entries
//***************************** 

entryLong = maLong and volatilityBullish
entryShort = maShort and volatilityBearish

if entryLong
    sLoss = source - atr * slMultiplier
    strategy.entry("Long", strategy.long, qty=10)
    strategy.exit("Long Exit", "Long", stop=sLoss)


if entryShort
    sLoss = source + atr * slMultiplier
    tProfit = close > slowMA
    strategy.entry("Short", strategy.short, qty=10)
    strategy.exit("Short Exit", "Short", stop=sLoss)


//***************************** 
// Exits
//*****************************

exitLong = 0
exitShort = 0

if maCrossoverExit
    exitLong = maShort
    exitShort = maLong
    strategy.exit("Long Exit", "Long", when = exitLong)
    strategy.exit("Short Exit", "Short", when = exitShort)

if atrExit
    exitLong = source + atr * tpMultiplier
    exitShort = source - atr * tpMultiplier
    strategy.exit("Long Exit", "Long", limit = exitLong)
    strategy.exit("Short Exit", "Short", limit = exitShort)


//******************************
// ATR Based Exit/ Stop Plotting 
//******************************

// Stop Loss Calculations
longStopLoss = source - atr(atrLength) * slMultiplier
shortStopLoss = source + atr(atrLength) * slMultiplier

longTakeProfit = source - atr(atrLength) * slMultiplier
shortTakeProfit = source + atr(atrLength) * slMultiplier
  

//*********************************
//Chart Plotting
//*********************************

//ATR Based Stop Losses
plot(shortStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Short Stop Loss")
plot(longStopLoss, color=color.fuchsia, offset=0, transp=0, show_last=5, linewidth=2, style=plot.style_stepline, title="Long Stop Loss")


// Single Slow EMA Option
plot(slow and maPlot ? slow : na, title="EMA", color=barColor, linewidth=3)






Mehr