ADX インディケーターに基づくトレンド逆転戦略

作者: リン・ハーンチャオチャン, 日時: 2023-09-13 17:02:31
タグ:

この戦略は"ADX指標に基づくトレンド逆転戦略"と呼ばれる.ADX指標を使用してトレンド強度を測定し,過買い/過売りの場合の逆転機会を把握する.

ADXは,傾向の強さを反映する平均方向指数 (Average Directional Index) を意味する.ADX値が高くなるほど,傾向は強くなる.ADX値が25を超えると,有意な傾向があることを示唆する.

DMIにはDI+とDI-線が含まれます.DI+がDI-より上向きを示し,DI+がDI-より下向きを示します.

取引の論理は

  1. ADXが45を超えると 傾向が非常に急上昇すると考えられます

  2. DI+がDI-を下回る場合は,過剰販売状態とトレンド逆転の機会を示します.

  3. 逆にDI-がDI+を下回ると,過剰購入状態とショートに行く逆転の機会を示唆します.

  4. 逆転後も 利益を得て下さい

ADXの利点は,強烈なトレンド逆転点を決定するためにADXを使用することです.高値のADXは,変動する市場からの偽信号を効果的にフィルタリングします.しかし,ADXパラメータは最適化が必要であり,ストップロスは重要です.

ADX は 強い 傾向 の 逆転 の タイミング を 測定 する こと に 熟練 し て い ます.しかし トレーダーは ADX を 補足 的 な 指標 と し て より 多く の 要因 を 観察 し て い ます.


/*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())

もっと