この戦略は,市場傾向の初期シフトを把握するために,ADX指標のダイナミックな変化を追跡し,適切なトレンドをフォローする.ADXが低水準から急速に上昇すると,エントリーする大きな機会を提供するトレンドが形成されていることを示します.移動平均の助けにより,誤った信号を効果的にフィルタリングすることができます.
この戦略の核心は,ADX指標の動的変化に基づいてトレンド開発を判断することにある.低 ADXはトレンドの小さな変動を意味する.ADXが低水準から急速に上昇すると,トレンドが形成されていることを示唆する.この戦略は,ADXの急激な上昇を監視することによってトレンドの出現を捉える.
具体的には,入力信号は次の要素で構成されます.
上記のすべての条件が満たされると,上向きトレンドが形成され,ロングになる.価格が移動平均値を下回ると,ポジションを閉じる. 2つの移動平均値は,傾向をより正確に判断するために使用されます.
ストップロスの論理は類似しています ADXが急落するとショートで,価格が移動平均値以上になると閉じる.
この戦略は,ADXの急速な上昇を追跡することによって,トレンドの初期展開を把握する.この戦略は,ADXの急上昇を追跡することで,ADXの初期展開を把握する.
さらに,移動平均値は誤った信号を効果的にフィルタリングし,戦略の安定性を高めます.
最大のリスクは,ADXそのものの遅滞性から生じる.遅滞を軽減するために迅速な上昇を捉えることにもかかわらず,まだ遅延がある.これは急速に逆転するいくつかの市場を逃す原因です.
また,ADX は トレンド を 完璧 に 判断 する こと が でき ませ ん で,時 と 時 に 誤り の 診断 を する こと が 避け られ ます.移動 平均 は 雑音 を フィルタリング し て い ます が,さらに 最適 化 さ れる 必要 が あり ます.
この戦略を最適化するにはまだ大きな余地があり,主にトレンドを把握するADXの精度を向上させる.機械学習のような方法を探検し,ADXの変化に基づいて確率分布を予測するためのトレーニングモデルも利用できます.パラメータチューニング,追加の指標などなどの他の側面もテストできます.
この動的な上昇するADXトレンドフォロー戦略は,急激なADX上昇を特定することによってトレンドシフトを迅速に捕捉し,したがってタイミングでトレンドをフォローする.最大の利点は,早期トレンド開発を効果的に把握する時間における敏捷性です.一方,継続的な最適化とテストを必要とする誤判のリスクは残っています.
/*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)