LoginSignup
0

posted at

updated at

【v29】マージしたチャートデータからテクニカル指標を計算する(DMI編)

はじめに

過去記事は「auカブコム証券のkabuステーションREST APIに関する記事一覧」。

もともとMACDの後にDMIを計算する予定だったが、計算式がややこしいので後回しにしていた。

前回のクラスの流用

MainCalcIndicator_r4をコピーして、MainCalcIndicator_r5にする。
とりあえず、v27とv28のクラスをimportしてそのまま使えるものはコピーしない。

DMIの計算

+DM, -DM, TRを計算し、14本の平均から+DI, -DI, DXを計算し、さらに9本の平均からADXを計算し、さらに2本の平均からADXRを計算する。
27番目の記事のHVの計算では、double[] ratioに前日比を前処理で計算したが、今回は前処理を複数回計算する必要があるため、IndicatorWork[] workに複数の計算値を保持する。

  1. +DM, -DM, TRを使ってIndicatorWorkを生成する。その他は-1で初期化。
  2. +DI, -DI, DXを計算して更新する。
  3. ADXを計算して更新する。
  4. ADXRを計算してIndicatorInfoを確定する。

したがって、ADXRまで計算できない時刻の場合は、最終的に出力されない。

検証

4本値

2022/08/10 23:59:00	28015	28015	28005	28005	2
2022/08/11 00:00:00	28015	28020	28015	28020	2
2022/08/11 00:01:00	28025	28035	28020	28035	2

計算値

2022/08/11 00:00:00,28020,2,13.64,22.73,35.69,49.06
2022/08/11 00:01:00,28035,2,25.00,20.83,31.14,50.95

chart_20220812

過去の特殊なデータ

05:28:00からhigh, lowに変化がなく、05:29:00以降の+DMと-DMが0となり、05:42:00にて14本の平均を取った+DIと-DIも0となる。
この場合、DX=0/0=0として、ADX, ADXRを計算する。

2022/07/20 05:27:00	27390	27395	27385	27390	1
2022/07/20 05:28:00	27390	27390	27385	27385	1
2022/07/20 05:29:00	27390	27390	27385	27390	1
2022/07/20 05:30:00	27390	27390	27385	27385	1
2022/07/20 05:31:00	27385	27390	27385	27390	1
2022/07/20 05:32:00	27390	27390	27385	27385	1
2022/07/20 05:33:00	27385	27390	27385	27385	1
2022/07/20 05:34:00	27390	27390	27385	27385	1
2022/07/20 05:35:00	27390	27390	27385	27385	1
2022/07/20 05:36:00	27385	27390	27385	27385	1
2022/07/20 05:37:00	27385	27390	27385	27390	1
2022/07/20 05:38:00	27385	27390	27385	27390	1
2022/07/20 05:39:00	27385	27390	27385	27385	1
2022/07/20 05:40:00	27390	27390	27385	27385	1
2022/07/20 05:41:00	27390	27390	27385	27390	1
2022/07/20 05:42:00	27390	27390	27385	27385	1

計算値

2022/07/20 05:42:00,27385,1,0.00,0.00,51.85,35.41

なお、TR=0となるには、high, low, closeがずっと変わらない状態で、実データには存在しなかったが、ソース上で0/0を計算する可能性がある部分は、初期値を0としてb=0以外の場合のみa/bを計算する。

追記:v27.MainCalcIndicator_r3.ChartInfoをv27.CalcIndicatorChartInfo_r3に変更

v28以降でもChartInfoを共通に使用したいため、クラスを独立させる。

追記:v27.MainCalcIndicator_r3.IndicatorInfoをv27.CalcIndicatorIndicatorInfo_r3に変更

v28以降でもChartInfoを共通に使用したいため、クラスを独立させる。

追記:ソースをarchiveブランチへ移動

最新版に移行し、もう使われることはないので、アーカイブする。

githubソース

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
0