
Die Strategie kombiniert die Chande Kroll Stop-Loss-Indikator mit dem Average Trend Index (ADX), um eine relativ einfache Trend-Tracking-Strategie zu realisieren. Die Chande Kroll Stop-Loss-Indikator wird verwendet, um ein Eintrittssignal für eine lange oder kurze Position zu erzeugen. Die ADX wird verwendet, um Marktbedingungen zu filtern, in denen kein eindeutiger Trend zu beobachten ist, und um zu verhindern, dass ein orientierungsloser Schwankungen der Märkte zu wiederholten Auslösen von Stop-Loss führt.
Die Strategie berechnet zunächst die langen und kurzen Linien der Chande Kroll-Stopps stop_long und stop_short. Die lange Linie wird durch den höchsten Preis der letzten p-Zyklen berechnet, die kurze Linie durch den niedrigsten Preis der letzten p-Zyklen. Dann werden die höchsten und niedrigsten Punkte der langen und kurzen Linien der letzten q-Zyklen als die aktuellen langen und kurzen Stop-Linien verwendet.
Wenn die kurze Linie stop_short über dem Schlusskurs ist, wird ein Mehrwertsignal erzeugt. Wenn die lange Linie stop_long unter dem Schlusskurs ist, wird ein Hinterhaltsignal erzeugt.
Darüber hinaus wird die Strategie mit dem ADX-Indikator für einen starken Trend beurteilt. Das Stop-Loss-Signal wird nur ausgelöst, wenn der ADX größer ist als der Tiefstwert. Dies filtert die falschen Verlustmeldungen bei der Berücksichtigung von Schwingungen aus.
Diese Strategie kombiniert die Vorteile von Trend- und Stop-Loss-Indikatoren, um sowohl eine Trendwende rechtzeitig zu erfassen als auch eine Whip-Saw aus einem unorientierten Markt zu vermeiden. Die Optimierung der Parameter von Chande Kroll Stop-Loss kann die Schleifen ausgleichen und sicherstellen, dass nur bei einer Trendwende gestoppt wird. Der ADX-Indikator sorgt dafür, dass nur bei einer offensichtlichen Trendentwicklung eingegriffen wird, um einen Stopp-Loss-Aufsprung in einem wackligen Markt zu vermeiden.
Wenn die ADX-Parameter nicht richtig eingestellt sind, kann die Chance, den Trend zu beginnen, verpasst werden. Wenn die ADX-Thresholds zu hoch eingestellt sind, kann die Eintrittschance verpasst werden, weil der ADX-Wert zu niedrig ist.
Ein zu naher Stopp kann auch dazu führen, dass die Strategie-Positionen häufig geöffnet und geschlossen werden. Dies erhöht die Transaktionskosten und die Slip-Point-Kosten. Der Stopp muss vernünftigerweise eingestellt werden, um dem Trend einen gewissen Blickwinkel zu geben.
Es kann in Betracht gezogen werden, dass ein Stop-Loss-Signal nur dann ausgelöst wird, wenn der ADX eine bestimmte Schwelle überschreitet, um die Zuverlässigkeit der Einstiegsmomente zu verbessern. Es kann auch in Kombination mit anderen Trendindikatoren, wie der Kombination von ADX-Werten mit der EMA-Schräglage, beurteilt werden.
Eine Stop-Line kann auch in Anbetracht der dynamischen Anpassung an die ATR berücksichtigt werden, um den Stop-Space bei verstärkter Marktfluktuation zu erweitern und eine übermäßige Sensitivität zu vermeiden. Oder sie kann in Kombination mit Hilfsindikatoren wie MACD, die eine Trendstärke oder -schwäche bewerten, die Stop-Line dynamisch anpassen.
Die Strategie integriert die Vorteile von Chande Kroll Stop und ADX-Indikatoren und ermöglicht eine relativ einfache und praktische Trendverfolgungsstrategie. Durch die Optimierung der Parameter kann die Stabilität und Profitabilität der Strategie weiter verbessert werden. Es ist jedoch darauf zu achten, dass die Risiken von zu sensiblen Stop- und ADX-Filterungen zu groß sind.
/*backtest
start: 2022-10-30 00:00:00
end: 2023-06-20 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy(title = "Chande Kroll Stop", overlay=true)
p = input.int(10, minval=1)
x = input.int(1, minval=1)
q = input.int(9, minval=1)
first_high_stop = ta.highest(high, p) - x * ta.atr(p)
first_low_stop = ta.lowest(low, p) + x * ta.atr(p)
stop_short = ta.highest(first_high_stop, q)
stop_long = ta.lowest(first_low_stop, q)
plot(stop_long, color=color.blue)
plot(stop_short, color=color.orange)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
ADX_sig = input.int(20, title="minimum ADX threshold for signal")
dirmov(len) =>
up = ta.change(high)
down = -ta.change(low)
plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
truerange = ta.rma(ta.tr, len)
plus = fixnan(100 * ta.rma(plusDM, len) / truerange)
minus = fixnan(100 * ta.rma(minusDM, len) / truerange)
[plus, minus]
adx(dilen, adxlen) =>
[plus, minus] = dirmov(dilen)
sum = plus + minus
adx = 100 * ta.rma(math.abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
if ta.crossunder(close, stop_long) and sig>ADX_sig
strategy.entry("long", strategy.long)
if ta.crossover(close, stop_short) and sig>ADX_sig
strategy.entry("short", strategy.short)