Diese Strategie verfolgt die dynamischen Veränderungen des ADX-Indikators, um die frühen Veränderungen in den Markttrends für eine zeitnahe Trendverfolgung zu erfassen. Wenn der ADX schnell von niedrigen Niveaus steigt, signalisiert er, dass sich ein Trend bildet, der eine große Gelegenheit bietet, einzutreten. Mit Hilfe von gleitenden Durchschnitten kann er falsche Signale effektiv filtern.
Der Kern dieser Strategie liegt darin, die Trendentwicklung anhand der dynamischen Veränderungen des ADX-Indikators zu beurteilen.
Insbesondere besteht das Eingangssignal aus folgenden Faktoren:
Wenn alle oben genannten Bedingungen erfüllt sind, signalisiert es, dass sich ein Aufwärtstrend bildet, um lang zu gehen. Wenn der Preis unter die gleitenden Durchschnitte fällt, werden Positionen geschlossen. Zwei gleitende Durchschnitte werden verwendet, um Trends genauer zu beurteilen.
Die Stop-Loss-Logik ist ähnlich: Geh kurz, wenn der ADX schnell fällt, und schließe Positionen, wenn der Preis über den gleitenden Durchschnitten steigt.
Der größte Vorteil hierbei ist die zeitnahe Erfassung aufstrebender Trends. Die herkömmliche Art, die absoluten ADX-Werte zu betrachten, erfordert oft eine Bestätigung über 20 oder 25 um einen Trend zu bezeichnen, wodurch der optimale Einstiegszeitpunkt verpasst wird. Diese Strategie greift die frühe Entwicklung des Trends auf, indem sie den schnellen Anstieg des ADX verfolgt.
Darüber hinaus helfen die gleitenden Durchschnitte, falsche Signale effektiv zu filtern und die Stabilität der Strategie zu erhöhen.
Das größte Risiko liegt in der Verzögerung des ADX selbst. Obwohl der schnelle Anstieg aufgenommen wurde, um die Verzögerung zu reduzieren, gibt es immer noch eine gewisse Verzögerung. Dies führt dazu, dass einige schnell rückgängige Märkte verpasst werden.
Außerdem beurteilt ADX Trends nicht perfekt und diagnostiziert sie unweigerlich von Zeit zu Zeit falsch.
Es gibt immer noch viel Raum für die Optimierung dieser Strategie, vor allem die Verbesserung der Genauigkeit von ADX
Diese dynamische steigende ADX-Trend-Folge-Strategie erfasst Trendverschiebungen schnell, indem sie scharfe ADX-Steigerungen identifiziert und so Trends rechtzeitig verfolgt. Der größte Vorteil ist seine Agilität in der Zeit, die frühe Trendentwicklung effektiv erfasst. In der Zwischenzeit bleiben bestimmte Risiken von Fehleinschätzungen bestehen, die eine kontinuierliche Optimierung und Prüfung erfordern.
/*backtest start: 2023-12-03 00:00:00 end: 2023-12-10 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © dhilipthegreat //@version=4 //Rising ADX strategy strategy(title="Rising ADX strategy", overlay=false) adxlen = input(14, title="ADX Length", minval=1) threshold = input(10, title="threshold", minval=5) hline(threshold, color=color.black, linestyle=hline.style_dashed) atype = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA") malen=input(20, title="Moving average 1 ",minval=1, maxval=50) avg = atype == 1 ? sma(close,malen) : atype == 2 ? ema(close,malen) : atype == 3 ? wma(close,malen) : atype == 4 ? hma(close,malen) : na atype2 = input(2,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA") malen2=input(20, title="Moving average 2",minval=1, maxval=200) avg2 = atype2 == 1 ? sma(close,malen2) : atype2 == 2 ? ema(close,malen2) : atype2 == 3 ? wma(close,malen2) : atype2 == 4 ? hma(close,malen2) : na //ADX&DI dilen = 14 dirmov(len,_high,_low,_tr) => up = change(_high) down = -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 = rma(_tr, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen,_high,_low,_tr) => [plus, minus] = dirmov(dilen,_high,_low,_tr) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) [plus, minus] = dirmov(dilen,high,low,tr) sig = adx(dilen, adxlen,high,low,tr) prev_sig = adx(dilen, adxlen,high[1],low[1],tr) plot(sig ? sig : na, color = rising(sig, 1) ? color.lime : falling(sig, 1) ? color.orange : color.purple, title="ADX",linewidth=2) ////// longCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close > avg and close > avg2 barcolor(longCondition ? color.yellow: na) Long_side = input(true, "Long side") if Long_side strategy.entry(id="Long", long=true, when= longCondition and strategy.position_size<1) exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close < avg and close < avg2 strategy.close(id="Long",comment="L exit", qty=strategy.position_size , when= exitCondition) //close all shortCondition= sig > threshold and rising(sig, 1) and falling(prev_sig, 1) and close < avg and close < avg2 barcolor(shortCondition ? color.gray: na) Short_side = input(true, "Short side") if Short_side strategy.entry(id="Short", long=false, when= shortCondition and strategy.position_size<1) sell_exitCondition= (rising(prev_sig, 1) and falling(sig, 1)) or close > avg and close > avg2 strategy.close(id="Short",comment="S exit", qty=strategy.position_size , when= sell_exitCondition) //close all barcolor(strategy.position_size>1 ? color.lime: na) bgcolor(strategy.position_size>1 ? color.lime: na) barcolor(strategy.position_size<0 ? color.orange: na) bgcolor(strategy.position_size<0 ? color.orange: na)