DMI指標の計算と適用

作者: リン・ハーン優しさ, 作成日:2019-08-03 14:24:10, 更新日:2023-11-08 20:43:17

img

DMI指標の紹介

DMIインディケーターは,モメントインディケーターまたはトレンドインディケーターとも呼ばれ,完全な名称は"方向動向指数 (DMI) "である.これはアメリカの技術分析のグルーウェルズ・ワイルダーによって作成され,中長期市場技術分析方法である.

DMI指標は,価格上昇と下落の過程で買い手と売り手の平衡点の変化である.つまり,ロングとショートの両方の強さの変化は価格変動の影響を受け,平衡から不均衡への周期的なプロセスが起こります.したがって,傾向を判断するための技術指標を提供します.

指標の計算

最近,数値取引のビジネスで多くの友人が,FMZ Quant数値取引プラットフォームでDMIインジケーターを使用する方法について私に相談しました.非常に簡単な問題だと思いましたが,このインジケーター関数を見つけるためにAPIドキュメントを開きました.このインジケーターは,タリブ・インジケーターライブラリに利用できないことがわかりました.少しグーグルした後,私はいくつかの情報を見つけました.

この指標は4つの指標から構成されていることが判明しました. アルゴリズムは非常に複雑ではありません. アルゴリズムに従うだけで大丈夫です.

アルゴリズムアドレス:https://www.fmz.com/strategy/154050

  • ソースコード

// indicator function
function AdX(MDI, PDI, adx_period) {
    if(typeof(MDI) == "undefined" || typeof(PDI) == "undefined"){
        Return false
    }

    if(MDI.length < 10 || PDI.length < 10){
        Return false
    }

    /*
    dX = abs(DIPlus-DIMinus) / (DIPlus+DIMinus)*100
    AdX = sma(dX, len)
    */

    var dx = []
    for(var i = 0; i < MDI.length; i++){
        if(!MDI[i] || !PDI[i]){
            continue
        }
        var dxValue = Math.abs((PDI[i] - MDI[i])) / (PDI[i] + MDI[i]) * 100
        var obj = {
            close : dxValue,
        }
        dx.push(obj)
    }

    if(dx.length < adx_period){
        Return false
    }

    var adx = talib.SMA(dx, adx_period)

    Return adx
}

function DMI(records, pdi_period, mdi_period, adxr_period, adx_period) {
    var recordsHLC = []
    for(var i = 0; i < records.length ; i++){
        var bar = {
            High : records[i].High,
            Low : records[i].Low,
            close : records[i].close,
        }
        recordsHLC.push(bar)
    }
    
    var m_di = talib.MINUS_DI(recordsHLC, mdi_period)
    var p_di = talib.PLUS_DI(recordsHLC, pdi_period)

    var adx = AdX(m_di, p_di, adx_period)
    
    // adXR=(AdX of the day before the AdX+ AX)÷2
    var n = 0
    var adxr = []
    for (var j = 0 ; j < adx.length; j++) {
        if (typeof(adx[j]) == "number") {
            n++
        }
        
        if (n >= adxr_period) {
            var curradxr = (adx[j] + adx[j - adxr_period]) / 2
            adxr.push(curradxr)
        } else {
            adxr.push(NaN)
        }
    }
    
    Return [m_di, p_di, adx, adxr]
}
  • 比較する

FMZ Quant のデータライブラリを使用して,チャートを作成し,他のチャートとDMIを比較することは簡単です.

img img

複数のk線バーの指標値を比較すると,基本的には同じ値 (わずかに丸められた偏差) です.

  • 使用

直接 DMI 関数 (例のメイン 関数で呼び出す方法など) を使用し,K 線データを入力し,通常 14 の指標パラメータを設定します.

函数で返されるデータは4行を表す二次元配列です

DI-: m_di DI+: p_di アドX: アドX adXR: adxr

DMIのこの4つの行のうち,DI-とDI+は,ロングとショートインジケーターであり,ロングとショートの両方の強さを反映しています.

AdX と adXR は,市場における現在の傾向と方向性を反映するトレンドインジケーターとして,一緒に使用される指標線のペアです.

DI+の指標値が高くなるほど 現在の牛市が強くなっていきますが そうでなければ牛市が弱くなるのです DIは,上記の反対です. DI+,DI- はしばしば交互に絡み合っており,その間の値が近づくほど,市場は行き詰まりになります.逆に,傾向は強化されます.

シグナル

  • 価格底線信号

長期的な価格下落の後,以下の条件が短期的に満たされれば,短期的な価格底に達し,反転または反転が起こり得ることを示します.

ロング・バイディング・フォースを表すDI+線は10以下で,線はoversoldのポジションで上向きに回され,DI線は高値です.

トレンドを表す AdX 線は 65 のより高い位置にあり,ダウン回転して adXR 線とダウンクロスを形成します.

  • 価格上位信号

長期上昇後,以下の条件が短期的に満たされれば,短期的な高値に達し,短期的な調整や逆転が起こる可能性があります.

ショートセール強さを表すDI線は10以下で,線は低い位置で上向きで,DI+線は高い位置です.

トレンドを表す AdX 線は 65 のより高い位置にあり,ダウン回転して adXR 線とダウンクロスを形成します.

  • 増加傾向

価格変動の期間を経て,DMIの4つの指標線が低価格で交互に絡み合わされ,その後突然,価格を5%以上増加させる大きなボリュームを持つ長い正のk線が出現する.DI+線は2日以内にDI-線,AdX線,adXR線を連続的に横切る.これは新しい上昇傾向が形成されることを示唆する.DI+ラインが最後の指標線を横切るとポジションを開くことができます.


もっと