Dynamischer gleitender Durchschnittshandel

Schriftsteller:ChaoZhang, Datum: 2023-11-15 17:45:13
Tags:

img

Übersicht

Diese Strategie basiert auf dem Dynamic Moving Average-Indikator, kombiniert mit Bollinger Bands und RSI für die Handelssignalfilterung. Sie implementiert einen Trend nach Long Only-Strategie. Die Strategie beurteilt den Trend, indem sie die Veränderung des Schlusskurses des Heiken Ashi Dynamic Moving Average berechnet und mit Bollinger Bands vergleicht, um Handelssignale zu generieren. Mit dem RSI-Filter kann sie effektiv Trend-Explosionspunkte für die Trendverfolgung identifizieren.

Strategie Logik

Der Kern dieser Strategie besteht darin, die Veränderung des Heiken Ashi Schlusskurs Dynamischen gleitenden Durchschnitts zu berechnen.

Dann wird dieser Veränderungswert mit der Differenz zwischen dem oberen und dem unteren Band der Bollinger Bands verglichen. Wenn die MA-Veränderung größer ist als die BB-Differenz, wird sie als Trend-Explosion betrachtet. Wenn die Explosion positiv ist, d.h. die MA-Veränderung positiv ist, erzeugt sie ein langes Signal und eine grüne Leiste. Wenn die Explosion negativ ist, d.h. die MA-Veränderung negativ ist, erzeugt sie ein Schließsignal und eine rote Leiste.

Darüber hinaus verfügt diese Strategie über einen RSI-Filter, der nur lange Signale zulässt, wenn der RSI über einem Schwellenwert liegt, wodurch das Risiko einer Trendumkehr vermieden wird.

Vorteile

  • Dynamische MA zur effektiven Verfolgung von Trendveränderungen
  • BB als dynamischer Indikator in Kombination mit MA zur besseren Erkennung von Trendexplosionen
  • RSI-Filter vermeidet falsche Signale von niedrigen Rebounds
  • Lange nur für anhaltende Bullenmärkte geeignet
  • Flexible, einstellbare Parameter für verschiedene Produkte und Zeitrahmen

Risiken

  • Lang kann nur nicht von einem Abwärtstrend profitieren
  • Übermäßige Abhängigkeit von Parameteroptimierung für verschiedene Produkte und Zeitrahmen
  • Nicht in der Lage, eine Trendumkehr effektiv zu erfassen, kann zu großen Verlusten führen
  • Fehlende Einstellungen des RSI-Filters können Handelsmöglichkeiten verpassen
  • Hohe Empfindlichkeit kann zu lauten Geschäften führen

Zu den Risikokontrollmethoden gehören: eine angemessene Ausrichtung der Parameter auf die Robustheit, die Kombination anderer Indikatoren zur Beurteilung der Trendumkehrung, die Verwendung nur bei klaren langfristigen Trends usw.

Optimierungsrichtlinien

Es gibt Raum für weitere Optimierungen:

  • Versuchen Sie verschiedene Preisquellen wie Schließen, gleitende Durchschnitte usw. für eine bessere Glättung

  • Anpassung der MA- und BB-Periodenparameter für die Optimierung verschiedener Produkte

  • Versuchen Sie Verhältnis Beziehung anstelle von Empfindlichkeitskoeffizienten für intuitiver Indikatorwert

  • Hinzufügen anderer Filter wie Trendlinien, Lautstärke usw. zur Verbesserung der Signalqualität

  • Entwicklung einer kurzfristigen Strategie auf der Grundlage von Indikatormustern

  • Einbeziehung von Stop-Loss-Mechanismen für eine bessere Risikokontrolle

Schlussfolgerung

Insgesamt ist dies ein relativ stabiler Trend nach Strategie. Es verwendet dynamischen gleitenden Durchschnitt, um die Trendrichtung zu bestimmen, BB, um explosive Punkte zu identifizieren, RSI, um falsche Signale zu filtern, um ein langes nur Trendsystem zu realisieren. Aber es hat auch einige Risiken, erfordert Parameter-Tuning für verschiedene Produkte und Zeitrahmen, und Unfähigkeit, von Abwärtstrends zu profitieren. Es gibt Raum für weitere Verbesserungen wie die Verbesserung der Signalqualität, die Entwicklung von Short-Strategie, das Hinzufügen von Stop-Loss usw., um eine bessere Leistung zu erzielen.


/*backtest
start: 2022-11-08 00:00:00
end: 2023-11-14 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

///////////Original Script Courtesy of Lazy_Bear.... Absolute Legend\\\\\\\\\\\\\\\

strategy('SmoothedWaddah', overlay=false, initial_capital=1)
sensitivity = input(150, title='Sensitivity')
fastLength = input(20, title='MacD FastEMA Length')
slowLength = input(40, title='MacD SlowEMA Length')
channelLength = input(20, title='BB Channel Length')
mult = input(1.5, title='BB Stdev Multiplier')
RSI14filter = input(40, title='RSI Value trade filter')

////////////MacD Calculation of price//////////////////////////////
calc_macd(source, fastLength, slowLength) =>
    fastMA = ta.ema(source, fastLength)
    slowMA = ta.ema(source, slowLength)
    fastMA - slowMA

/////////BolingerBand Calculation of Price///////////////////////
calc_BBUpper(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis + dev

calc_BBLower(source, length, mult) =>
    basis = ta.sma(source, length)
    dev = mult * ta.stdev(source, length)
    basis - dev

//////heinkenashi chart call for closing price "smoothing mechanism"\\\\\\\\\\\\\\\\\\\\\\\\\\\
point = request.security(ticker.heikinashi(syminfo.tickerid), timeframe.period, close)

////////////////////T1 is change in MacD current  candle from previous candle Sensitivy amplifies calculation/////////////////////
t1 = (calc_macd(point, fastLength, slowLength) - calc_macd(point[1], fastLength, slowLength)) * sensitivity
//////////////////////T2 is  T1 from two candles prior\\\\\\\\\\\\\\\\\\\\\\\\\\\
t2 = (calc_macd(point[2], fastLength, slowLength) - calc_macd(point[3], fastLength, slowLength)) * sensitivity

////////////////E1 is difference in bolinger band upper and lower...E2 is E1 from one candle prior not needed//////////////
e1 = calc_BBUpper(ohlc4, channelLength, mult) - calc_BBLower(ohlc4, channelLength, mult)
//e2 = (calc_BBUpper(close[1], channelLength, mult) - calc_BBLower(close[1], channelLength, mult))

//////signal bar printing.. Up if MacD positive .. Down if MacD negative//////////
trendUp = t1 >= 0 ? t1 : 0
trendDown = t1 < 0 ? -1 * t1 : 0

///////plots difference in macD*Sensitivity, color change if increasing or decreasing. 
//////color is green/lime if explosion is up \ color is red/orange if explosion is down/////////
plot(trendUp, style=plot.style_columns, linewidth=1, color=trendUp < trendUp[1] ? color.new(color.lime,45) : color.new(color.green,45), title='UpTrend')
plot(trendDown, style=plot.style_columns, linewidth=1, color=trendDown < trendDown[1] ? color.new(color.orange,45) : color.new(color.red,45), title='DownTrend')
plot(e1, style=plot.style_line, linewidth=2, color=color.new(#A0522D, 0), title='ExplosionLine')


////////////Entry conditions and Concept/////////////////////
////////////Long Only System. T1 is measuring the distance between MACD EMA's. This is Multiplied
////////////by the sensitivity so that it can be compared to the difference between BollingerBand. 
/////////////{this could have been a ratio maybe i will work with that in a different script.} 
/////////////I found that 135-175 sensitivy allows for values to be compared on most charts.....
////////////If the (difference between the EMA)*(Sensitivity) is greater than (BB upper line- BB lower line)
////////////it is considered an explosion in either the downside or the upside.The indicator will print
///////////a bar higher than the trigger line either green or red (up or down respectively)//////////////////

longCondition = trendUp > e1 and ta.rsi(close, 14) > RSI14filter
if longCondition
    strategy.entry('up', strategy.long)

strategy.close('up', trendDown > e1)



Mehr