ADXとMACD指標に基づく取引戦略


作成日: 2023-12-13 15:45:24 最終変更日: 2023-12-13 15:45:24
コピー: 3 クリック数: 1244
1
フォロー
1621
フォロワー

ADXとMACD指標に基づく取引戦略

概要

この策略は,ADXとMACDの指標に基づくトレンドフォロー策略と呼ばれる.これは,平均トレンド指標 ((ADX) を使ってトレンドの方向と強さを判断し,移動平均集散指標 ((MACD) の多空信号と組み合わせてトレンドフォロー取引を実現する.この策略は,ADXが強い傾向があることを示し,MACDが取引信号を発信するときに,多頭または空頭ポジションを確立する.

戦略原則

この戦略はADXと+DI・DI曲線を計算して,市場トレンドの方向と強さを判断する.+DI曲線上を通過するときは多頭市場であり,+DI曲線下を通過するときは空頭市場である.それだけでは不十分であり,ADX値が20より大きいときは,トレンドが十分に強いことを示す.このとき,MACD指標の差値 ((macdline) とシグナル値 ((signalline) の金叉死叉信号を組み合わせて,その品種を買入・出荷し,トレンドフォロー取引を実現する.

この戦略の取引シグナルの論理は,

マルチヘッド信号:+DI> -DIとMACDの差値線が信号線を下から上へと渡るとき 空頭シグナル: -DI>+DIとMACDの差値線が信号線を上から下へと渡るとき

この論理に従って,この戦略は,強いトレンドの中で優位な入場時間を捕まえることができる.

戦略的優位性

この戦略の最大の利点は,トレンド判断と入場タイミングの選択の両方を考慮していることであり,市場が強い方向性があるときにトレーダーがより良い入場ポイントを見つけることを可能にすることで,システムの安定性と収益性を大幅に向上させるということです.

また,ストップロズロジックが導入されている. ポジションの損失がユーザが定義したストップ価格を超えると,ストップロスは積極的に実行され,個々の取引の損失を効果的に制御する. これは,ストップロズロジックの大きな特徴である.

戦略リスク

この戦略にはいくつかの利点がありますが,注意すべきリスクもあります.

  1. ADXとMACDが構成する取引信号は,特定の市場状況下で無効になり,または誤った信号を生じ,不必要な損失を招く可能性があります.

  2. 顧客が定義したストップ・ロスの価格が破られ,予想以上の損失が生じることがあります.

  3. 逆転市場では,戦略により,多くの無効取引が起こり,取引コストが増加する可能性があります.

これらのリスクを軽減するために,ADXとMACDのパラメータ設定を最適化し,厳しい資金管理戦略を実施し,異なる市場状況に合わせてストップ・ロジックを調整することを推奨しています.

戦略最適化の方向性

この戦略には,いくつかの改善の余地があります.

  1. より多くの指標を導入し,例えば波動率指標と組み合わせることで,より強力な取引シグナルを作り出すことができる.

  2. ADXとMACDのパラメータを機械学習方法によって自動的に最適化できます.

  3. 市場変動に合わせて,自律的なストップ・ペーシングの仕組みを確立する.

この戦略の安定性や収益性をさらに高めることを期待しています.

要約する

ADXとMACDの指標に基づいたトレンド追跡戦略は,トレンドの方向性を判断し,最適な入場時間を発見し,ストップロズロジックを設定するなどの利点を持つ価値のある取引システムです.パラメータの最適化とリスクの制御がある場合,この戦略は投資の良いリターンを得ることができます.しかし,トレーダーは,潜在的リスクに警戒し,市場環境の変化に注意する必要があります.

ストラテジーソースコード
/*backtest
start: 2022-12-06 00:00:00
end: 2023-12-12 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("TUE ADX/MACD Confluence V1.0", overlay=true)

showsignals = input(true, title="Show BUY/SELL Signals")
showcandlecolors = input(true, title="Show Candle Colors")
length = input(14, title="ADX Length")
smoothing = input(10, title="ADX Smoothing")
macdsource = input(close, title="MACD Source")
macdfast = input(12, title="MACD Fast Length")
macdslow = input(26, title="MACD Slow Length")
macdsignal = input(9, title="MACD Signal Length")
colorup = input(color.green, title="Up Candle Color")
colordown = input(color.red, title="Down Candle Color")

/////////////////////////////////////////////////////////////////////////////////////////////// ADX AND MACD CALC
[diplus, diminus, adx] = ta.dmi(length, smoothing)

[macdline, signalline, histline] = ta.macd(macdsource, macdfast, macdslow, macdsignal)

//////////////////////////////////////////////////////////////////////////////////////////////TRADE CALC

longcheck = diplus > diminus and macdline > signalline
shortcheck = diminus > diplus and signalline > macdline

int trade = 0

//Open from nothing

if trade == 0 and longcheck
    trade := 1

else if trade == 0 and shortcheck
    trade := -1
    
//Reversal

else if trade == 1 and shortcheck
    trade := -1
    
else if trade == -1 and longcheck
    trade := 1
    
//Keep status quo until crossover

else
    trade := trade[1]

//////////////////////////////////////////////////////////////////////////////////////////////PLOT 

colors = longcheck ? colorup : shortcheck ? colordown : color.white

plotcandle(open, high, low, close, color = showcandlecolors ? colors : na)

plotshape(trade[1] != 1 and trade == 1 and showsignals, style=shape.labelup, text='BUY', textcolor=color.white, color=color.green, size=size.small, location=location.belowbar)
plotshape(trade[1] != -1 and trade == -1 and showsignals, style=shape.labeldown, text='SELL', textcolor=color.white, color=color.red, size=size.small, location=location.abovebar)

///////////////////////////////////////////////////////////////////////////////////////////// ALERTS

// Add Stop Loss
stopLossPrice = input(100, title="Stop Loss Price")

if trade == 1
    strategy.entry("Long", strategy.long)

if trade == -1
    strategy.entry("Short", strategy.short)

if trade == 1 and close < close[1] - stopLossPrice
    strategy.close("LongExit")

if trade == -1 and close > close[1] + stopLossPrice
    strategy.close("ShortExit")