Zeitstrategie für ADX mit doppelten gleitenden Durchschnitten

Schriftsteller:ChaoZhang, Datum: 2023-12-06 15:48:29
Tags:

img

Übersicht

Die Dual Moving Average ADX Timing Strategie identifiziert Trends, indem sie 2/20 gleitende Durchschnitte und den ADXR-Indikator kombiniert, um Handelssignale zu Beginn der Trends zu erzeugen.

Strategie Logik

Die Kernlogik der Strategie der Dual Moving Average ADX Timing basiert auf folgenden Hauptkomponenten:

  1. 2/20 Exponentieller gleitender Durchschnitt (EMA)

    • Verwendet 2 EMA mit unterschiedlichen Parametern von 2 und 20 Tagen.
    • Ein Aufwärtskursüberschreiten über die 2-Tage-EMA gilt als bullisches Signal.
    • Ein Abwärtstrend unterhalb der 20-tägigen EMA gilt als ein Bärensignal.
  2. ADXR-Indikator

    • ADXR ist eine Variante des ADX-Indikators.
    • Es berechnet einen einfachen gleitenden Durchschnitt des ADX, um Schwankungen auszugleichen.
    • ADXR unter einem Schwellenwert bedeutet einen schwächeren Trend.
    • ADXR über einem Schwellenwert bedeutet einen stärkeren Trend.
  3. Handelssignale

    • Ein bullisches Signal wird erzeugt, wenn der 2-tägige EMA Golden Cross AND ADXR über dem Schwellenwert liegt.
    • Ein Bärensignal wird erzeugt, wenn der 20-tägige EMA-Dead Cross AND ADXR unter dem Schwellenwert liegt.
    • Die Kombination mit ADXR filtert einige falsche Brüche aus und verstärkt echte Trendsignale.

Die wichtigste Innovation dieser Strategie besteht darin, den ADXR-Indikator zu verwenden, um Trends in der Anfangsphase zu erkennen, und ihn mit traditionellen gleitenden Durchschnittssignalen zu kombinieren, um die Qualität und Stabilität zu verbessern.

Vorteile

Die wichtigsten Vorteile der Strategie der ADX-Zeitgestaltung mit doppelten gleitenden Durchschnitten:

  1. Durch die Kombination von doppelten MAs und ADXR sind die Signale genauer und zuverlässiger, wobei falsche Signale ausgefiltert werden.
  2. Identifizierung eines frühen Trends durch Verwendung von ADXR zur Erkennung des Anfangsstadiums von Trends.
  3. Flexible Abstimmung der ADXR-Parameter, um sich an sich ändernde Marktbedingungen anzupassen.
  4. Einfache und klare Logik, leicht verständlich, bequem, Parameter anzupassen.
  5. Anwendbar in verschiedenen Marktumgebungen mit einer guten historischen Leistung.

Risiken

Außerdem bestehen für diese Strategie mehrere Hauptrisiken:

  1. Eine unsachgemäße Einstellung des ADXR-Parameters kann zu fehlenden Trades führen.

    • Ausweitung des ADXR-Parameterbereichs oder Anpassung nach Produkten.
  2. Bei besonderen Marktbedingungen können mehr falsche Signale auftreten.

    • Die Kombination mit anderen Indikatoren zur weiteren Signalfilterung sollte in Betracht gezogen werden.
  3. Festgelegte EMA-Parameter können sich nicht an die Marktänderungen anpassen.

    • Test-Optimierungsversion mit anpassungsfähigen EMA-Parametern.
  4. Die Unfähigkeit, Handelsbereiche zu ermitteln, kann zu übermäßigen unbedeutenden Geschäften führen.

    • Fügen Sie zusätzliche Logik oder Indikatoren hinzu, um unterschiedliche Märkte zu erkennen.

Anweisungen zur Verbesserung

Die Strategie kann in folgenden Aspekten weiter optimiert und verbessert werden:

  1. Optimierung der EMA-Parameter zur automatischen Anpassung an die Marktbedingungen.

  2. Erweiterung des ADXR-Parameterbereichs zur Erfassung effektiverer Handelssignale.

  3. Hinzufügen zusätzlicher Trendbeurteilungsindikatoren für Kombinationssignale zur Verbesserung der Qualität.

  4. Hinzufügen von Stop-Loss-Strategien und Gewinnstandards zur Kontrolle von Handelsrisiken.

  5. Optimierung des Geldmanagements für eine dynamische Positionsgröße basierend auf dem Kontostatus.

Schlussfolgerung

Die Dual Moving Average ADX Timing Strategie kombiniert traditionelle Doppel gleitende Durchschnitte und den ADXR-Indikator, um die Signalqualität zu verbessern und die Stabilität zu erhöhen.


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

//@version=5
////////////////////////////////////////////////////////////
//  Copyright by HPotter v1.0 04/04/2022
// This is combo strategies for get a cumulative signal. 
//
// First strategy
// This indicator plots 2/20 exponential moving average. For the Mov 
// Avg X 2/20 Indicator, the EMA bar will be painted when the Alert criteria is met.
//
// Second strategy
// The Average Directional Movement Index Rating (ADXR) measures the strength 
// of the Average Directional Movement Index (ADX). It's calculated by taking 
// the average of the current ADX and the ADX from one time period before 
// (time periods can vary, but the most typical period used is 14 days).
// Like the ADX, the ADXR ranges from values of 0 to 100 and reflects strengthening 
// and weakening trends. However, because it represents an average of ADX, values 
// don't fluctuate as dramatically and some analysts believe the indicator helps 
// better display trends in volatile markets.
//
//
// WARNING:
// - For purpose educate only
// - This script to change bars colors.
////////////////////////////////////////////////////////////
EMA20(Length) =>
    pos = 0.0
    xPrice = close
    xXA = ta.ema(xPrice, Length)
    nHH = math.max(high, high[1])
    nLL = math.min(low, low[1])
    nXS = nLL > xXA or nHH < xXA ? nLL : nHH
    iff_1 = nXS < close[1] ? 1 : nz(pos[1], 0)
    pos := nXS > close[1] ? -1 : iff_1
    pos

fADX(Len) =>
    up = ta.change(high)
    down = -ta.change(low)
    trur = ta.rma(ta.tr, Len)
    plus = fixnan(100 * ta.rma(up > down and up > 0 ? up : 0, Len) / trur)
    minus = fixnan(100 * ta.rma(down > up and down > 0 ? down : 0, Len) / trur)
    sum = plus + minus 
    100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), Len)

ADXR(LengthADX,LengthADXR,Signal1,Signal2) =>
    pos = 0.0
    xADX = fADX(LengthADX)
    xADXR = (xADX + xADX[LengthADXR]) / 2
    pos := xADXR < Signal1 ? 1 : xADXR > Signal2 ? -1 : nz(pos[1], 0) 
    pos

strategy(title='Combo 2/20 EMA & ADXR', shorttitle='Combo', overlay=true)
var I1 = '●═════ 2/20 EMA ═════●'
Length = input.int(14, minval=1, group=I1)
var I2 = '●═════ ADXR  ═════●'
LengthADX = input(title="Length ADX", defval=14)
LengthADXR = input(title="Length ADXR", defval=14)
Signal1 = input.float(13, step=0.01)
Signal2 = input.float(45, step=0.01)
var misc = '●═════ MISC ═════●'
reverse = input.bool(false, title='Trade reverse', group=misc)
var timePeriodHeader = '●═════ Time Start ═════●'
d = input.int(1, title='From Day', minval=1, maxval=31, group=timePeriodHeader)
m = input.int(1, title='From Month', minval=1, maxval=12, group=timePeriodHeader)
y = input.int(2005, title='From Year', minval=0, group=timePeriodHeader)
StartTrade = time > timestamp(y, m, d, 00, 00) ? true : false
posEMA20 = EMA20(Length)
prePosADXR = ADXR(LengthADX,LengthADXR,Signal1,Signal2)
iff_1 = posEMA20 == -1 and prePosADXR == -1 and StartTrade ? -1 : 0
pos = posEMA20 == 1 and prePosADXR == 1 and StartTrade ? 1 : iff_1
iff_2 = reverse and pos == -1 ? 1 : pos
possig = reverse and pos == 1 ? -1 : iff_2
if possig == 1
    strategy.entry('Long', strategy.long)
if possig == -1
    strategy.entry('Short', strategy.short)
if possig == 0
    strategy.close_all()
barcolor(possig == -1 ? #b50404 : possig == 1 ? #079605 : #0536b3)

Mehr