DMI計算で0除算をする時がある
報告ありがとうございます。
確かにほとんど値動きのない期間に0除算してしまいます。
+DIと-DIの移動平均が両方0のときはDXを100%として計算するようにします。
直したバージョンをスナップショットpt-100117として公開しました。
試してみてください。
対応ありがとうございました。 エラーは出なくなりました。 ただ、元からそのようですが、 new(14,14,0)で初期化したチャート表示が証券会社のツールと違うようです。 なにか計算方法が違うような? また、new(14,14,0)はCutlerRSIと思っていたのですが、 認識は合ってますか?
失礼しました。 RSI_new(14, 14, 0) ではなく RSI_new(14, 0) です。
はい、RSIのデフォルトはCutlerのです。
どの指標の定義にも出来高がない日などの例外に対する言及がないので、
その扱いは実装者の判断に依ります。
たぶん証券会社のツールと違うのは、出来ない日があるとか、
何日も値動きがないとか、そういう銘柄の指標だと思います。
TIlibでは、一応それっぽい数字が出るようにしてますけど、
ほかのツールとの互換性は気にしていません。
もし、そういう銘柄でないのに表示が違うものがあったら教えてください。直します。
寝ぼけながら書いたため、途中から支離滅裂になってました。本当に申し訳ない。
RSIではなく、DMIでした。どうしてRSIになってしまったのやら・・・
チャート表示が証券会社ツールと異なるのはDMI(14,14,0)です。
例えば、5401新日鐵の直近3ヶ月のチャートで比較した場合、
SBIのHSBI、松井のネットストックと比べてPDI、MDI、ADXの全てが微妙に異なる軌道を描きます。
勿論、SBIのHSBIと松井のネットストックもそれぞれ異なる軌道となります。
ただし、松井のネットストックと野村のジョイエクスプレスでは同じとなります。
ネットストックとジョイエクスプレスは開発元が同じですので、
これはpanacoran様の言うとおり、実装者の判断の違いに因るものと考えられます。
0除算のような致命的なものではないので、このままで問題無いと思います。
ご対応、ありがとうございました。
まあ同じワイルダーの指標ですから間違えることもあるのかなと。
幸い野村ジョイの口座を持っていましたので、ジョイエクスプレスで確認してみました。
ワイルダーの定義を忠実に実装しているようです。Wilder DMI(14)つまりDMI_new(14, 14, 1)と比べてみてください。
まったく同じ軌跡を描いていることが確認できると思います。
問題ななそうなので完了にしますね。
DMI_next計算時に0除算をする時がある。
例えば、 $DMI = DMI_new(14, 14, 0) では
1805 飛島建設 09/01/08 runtime error in \TIlib.pt:582: divided by 0
となる。 該当行は以下だが dx = Abs(obj80 - obj90) / (obj80 + obj90) このとき、obj80==0、obj90==0 の値が入っている。