Adaptive Preiskanalstrategie


Erstellungsdatum: 2023-12-04 16:33:45 zuletzt geändert: 2023-12-04 16:33:45
Kopie: 0 Klicks: 634
1
konzentrieren Sie sich auf
1619
Anhänger

Adaptive Preiskanalstrategie

Überblick

Die Strategie ist eine adaptive Preiskanalstrategie, die auf dem mittleren realen Bereich (ATR) und dem mittleren Richtungsindex (ADX) basiert. Sie zielt darauf ab, die Märkte und Trends in der Preisbewegung zu identifizieren und entsprechend zu handeln.

Strategieprinzip

  1. Berechnen Sie den höchsten Wert ((HH) und den niedrigsten Wert ((LL) für die jüngste Längenradik K. Berechnen Sie gleichzeitig den ATR für die Längenradik K.

  2. +DI und -DI nach dem Preisanstieg und -DI, dann ADX.

  3. Wenn der ADX < 25 ist, wird der Markt als abgeschlossen beurteilt. Wenn der Abschlusspreis über der Obergrenze des Preiskanals liegt, wird das HH-ATR-Multipliziert*ATR), mehr zu tun; wenn der Schlusskurs unterhalb der unteren Grenze des Preiskanals liegt ((LL + ATR-Multiplex)*ATR), frei.

  4. Wenn ADX >=25 und +DI>-DI, dann ist es ein Stiermarkt. Wenn der Schlusskurs über der Obergrenze des Preiskanals liegt, dann wird mehr gemacht.

  5. Wenn ADX> = 25 und + DI<-DI, dann wird der Markt als leer beurteilt. Wenn der Schlusskurs unterhalb der unteren Grenze des Preiskanals liegt, wird der Markt leer.

  6. Wenn nach dem Eintritt in die Position die Exit-Length-Wurzel-K-Linie überschritten wird und kein Stop-Loss erfolgt, wird der Stop-Loss-Plating-Position erzwungen.

Analyse der Stärken

  1. Die Strategie kann automatisch an die Marktumgebung angepasst werden. Bei der Bilanzierung des Marktes wird eine Preiskanalstrategie angewendet, und in einem Trendmarkt wird die Richtung der Tendenz verfolgt.

  2. Die Verwendung von ATR und ADX-Indikatoren gewährleistet die Anpassungsfähigkeit der Strategie. ATR wird verwendet, um die Breite der Preiskanäle anzupassen, ADX wird verwendet, um Markttrends zu beurteilen.

  3. Die Zwangsstop-Mechanismen tragen zur Stabilität der Strategie bei.

Risikoanalyse

  1. Die ADX-Beschlüsse ergeben eine größere Wahrscheinlichkeit für Fehlsignale.

  2. Die falsche Einstellung der ATR- und ADX-Indikatoren kann zu einer schlechten Effektivität der Strategie führen.

  3. Die Gefahr, dass man sich nicht effektiv von der Veränderung abwenden kann.

Optimierungsrichtung

  1. Optimierung der ATR- und ADX-Parameter zur Verbesserung der Selbstadaptionsfähigkeit.

  2. Erhöhen Sie Ihre Stop-Line, um die Gefahr von Verlusten zu verringern.

  3. Hinzufügen von Filterbedingungen, um Fehlsignale zu filtern.

Zusammenfassen

Die Anpassung der Preiskanalstrategie besteht in der Kombination verschiedener Indikatoren und Mechanismen, wobei verschiedene Strategien in verschiedenen Umgebungen angewendet werden. Sie weisen eine gewisse Anpassungsfähigkeit und Stabilität auf. Die Strategie ist jedoch aufgrund der begrenzten Indikatoren und Parameterwahlen mit einem gewissen Risiko für Fehleinschätzungen konfrontiert. Die zukünftige Optimierungsrichtung liegt in der Optimierung der Parameter und der Risikokontrolle.

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

//@version=5
strategy("Adaptive Price Channel Strategy", overlay=true)

length = input(20, title="Length")
exit_length = input(10, title="Exit After X Periods")
atr_multiplier = input(3.2, title="ATR Multiplier")

startDate = input(defval = timestamp("2019-01-15T08:15:15+00:00"), title = "Start Date")
endDate = input(defval = timestamp("2033-04-01T08:15:00+00:00"), title = "End Date")

hh = ta.highest(high, length)
ll = ta.lowest(low, length)
atr = ta.atr(length)

// calculate +DI and -DI
upMove = high - high[1]
downMove = low[1] - low
plusDM = na(upMove[1]) ? na : (upMove > downMove and upMove > 0 ? upMove : 0)
minusDM = na(downMove[1]) ? na : (downMove > upMove and downMove > 0 ? downMove : 0)
plusDI = ta.rma(plusDM, length) / atr * 100
minusDI = ta.rma(minusDM, length) / atr * 100

// calculate ADX
dx = math.abs(plusDI - minusDI) / (plusDI + minusDI) * 100
adx = ta.rma(dx, length)

var int barSinceEntry = na

if (not na(close[length]) )
    if (adx < 25) // Sideways market
        if (close > hh - atr_multiplier * atr)
            strategy.entry("PChLE", strategy.long, comment="PChLE")
            barSinceEntry := 0
        else if (close < ll + atr_multiplier * atr)
            strategy.entry("PChSE", strategy.short, comment="PChSE")
            barSinceEntry := 0
    else if (adx >= 25 and plusDI > minusDI) // Bullish market
        if (close > hh - atr_multiplier * atr)
            strategy.entry("PChLE", strategy.long, comment="PChLE")
            barSinceEntry := 0
    else if (adx >= 25 and plusDI < minusDI) // Bearish market
        if (close < ll + atr_multiplier * atr)
            strategy.entry("PChSE", strategy.short, comment="PChSE")
            barSinceEntry := 0

if (na(barSinceEntry))
    barSinceEntry := barSinceEntry[1] + 1
else if (barSinceEntry >= exit_length)
    strategy.close("PChLE")
    strategy.close("PChSE")
    barSinceEntry := na

plot(hh, title="Highest High", color=color.green, linewidth=2)
plot(ll, title="Lowest Low", color=color.red, linewidth=2)