ADX指標に基づくトレンド反転戦略


作成日: 2023-09-13 17:02:31 最終変更日: 2023-09-13 17:02:31
コピー: 3 クリック数: 915
1
フォロー
1617
フォロワー

この戦略は,ADX指数に基づくトレンド反転戦略と呼ばれています. この戦略は,ADX指数を使用してトレンドの強さを判断し,オーバーバイのオーバーセール時に反転の機会を捉えます.

ADXは平均トレンド指数であり,トレンドの強さを反映する.ADX値が高くなるほど,トレンドが強くなる.ADXが25以上になると,より明らかなトレンドが存在すると考えられる.

DMIはDI+とDI−の2行で構成されている。DI+は上向きの上昇傾向を示し,DI−は上向きの下向きを示している。

この戦略の取引論理は

  1. ADXが45を超えると,トレンドは非常に強いと考えられます.

  2. この時,DI+がDI−より低ければ,超売り状態と判断され,トレンドの逆転の機会が生じ,より多く行う.

  3. 逆に,DI-がDI+より低い場合,超買い状態と判断され,逆転の機会が発生し,空白となる.

  4. 逆転後,時間内に止まる.

この戦略の利点は,ADXを用いて強烈なトレンドの逆転点を判断することであり,高いADX値は,揺れ動いている市場の偽信号を効果的にフィルターすることができる.しかし,ADXパラメータは最適化が必要であり,止損策も重要である.

ADX指標は,強気なトレンドの逆転のタイミングを,一般的に,より良く判断する.しかし,トレーダーは,さらに多くの要因を注意する必要がある.ADXは,補助的な判断指標の1つに過ぎない.

ストラテジーソースコード
/*backtest
start: 2023-08-13 00:00:00
end: 2023-09-12 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(shorttitle='DMI swings',title='DMI swings', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1)

//Backtest dates
fromMonth = input(defval = 1,    title = "From Month",      type = input.integer, minval = 1, maxval = 12)
fromDay   = input(defval = 1,    title = "From Day",        type = input.integer, minval = 1, maxval = 31)
fromYear  = input(defval = 2021, title = "From Year",       type = input.integer, minval = 1970)
thruMonth = input(defval = 1,    title = "Thru Month",      type = input.integer, minval = 1, maxval = 12)
thruDay   = input(defval = 1,    title = "Thru Day",        type = input.integer, minval = 1, maxval = 31)
thruYear  = input(defval = 2112, title = "Thru Year",       type = input.integer, minval = 1970)

showDate  = input(defval = true, title = "Show Date Range", type = input.bool)

start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)        // backtest start window
finish    = timestamp(thruYear, thruMonth, thruDay, 23, 59)        // backtest finish window
window()  => true        // create function "within window of time"

[pos_dm, neg_dm, avg_dm] = dmi(14, 14)

//Entry 
strategy.entry(id="long", long = true, when = avg_dm > 45 and pos_dm < neg_dm and window())

//Exit
strategy.close("long", when = avg_dm > 45 and pos_dm > neg_dm and window())