読み取り一貫性の問題。
この問題はなかなか厄介だ。
そして、ここに岡三RSSの限界を感じている。
下図はミニ1分足4本値データ。
左側の表が09:55直前の状態。
右側の表が09:55直後の状態で、09:55の足が新たに生成され、表の先頭行に挿入された瞬間の状態。
(なお、この状態はエラーログから推定し、後から再現したもの。)
挿入された瞬間と言っても、始値、高値、終値の列がまだ下スライドしていない。
データ更新途中の状態。
この瞬間に、この1分足データを取り込むと、
09:54足の始値、高値、終値の値として、
09:53足の始値、高値、終値の値を取り込んでしまうことになる。
つまり、更新途中の中途半端な状態を取り込んでしまうのだ。
こういうのを、読み取り一貫性の問題と言う。
通常、データベースソフトでは、不整合が発生しないようになっている。
データ更新途中であれば、更新開始前の状態を返すようになっており、この例では、09:55直前の状態が返ってくる。
しかし、岡三RSSはExcelのシステム。
岡三RSSではこの不整合が生じる。
(厳密に言うと、データベースとExcelではそもそもデータ構造が違う、取得の仕方が違うなどいろいろあるのだが、細かいことは抜きにする。)
この問題、何がマズいかと言うと、
例えば、上の事例では、
右側の表の時点で、約定時刻の最新値が09:55となっているため、09:54足が確定したということになる。
そして、09:54足の終値が20175と認識する。
(本当は、20170なのだが)
移動平均線を始め、終値ベースで計算しているインジケータは多い。
正しい値(20170)で計算した場合、売買サインが出ないが、
誤った値(20175)で計算した結果、売買サインが出た。
ということは十分あり得る。
そう、新規注文を出した後で、そのサインが間違っていたことに気づいても、後の祭りなのだ。
ただし、サインが間違いだったからと言って、負けトレードになるかと言えば、そうとは限らない。
時の運だ。
最悪なのが、新規注文を出した後で、正しいデータで09:54足が上書きされてしまえば、
なぜ、そこで注文を出したのかが分からなくなってしまうこと。
ログを残しておかない限り、問題点は謎のままとなる。
この問題、どのくらいの頻度で発生しているのだろうか。
2017年9月、本番用PCで1ヶ月間データを採取してみた。
エラー判定方法は、
上の事例で言うと、09:54足が確定した時点の4本値と、
確定後しばらく09:54足の4本値を採取し続け、突き合わせ続ける。
途中でデータが変化すれば、エラーとしログを出力するようにした。
対象とする分足は、ラージ、ミニそれぞれ1分足と5分足。
(『岡三RSS Excelファイルの内容』で紹介したが、
私がシステムに取り込んでいる分足は、ラージ、ミニそれぞれ1分足と5分足。
日足も取り込んでいるが、セッション間に確定処理を走らせているので、この問題は発生しない。)
結果は、
- ラージ1分足:21(1)件
- ミニ1分足:131(6)件
- ラージ5分足:5件
- ミニ5分足:8件
ミニ1分足が突出して多い。
ほとんどが数秒でデータ更新完了しているが、10秒以上かかるケースもあった。
()内の数字は、結果件数のうち、データ更新完了までに10秒以上かかった件数。
『ヘルシーチェック』で紹介した、データ更新に10秒以上かかるケースがここでも発生している。
今のところ、分足を自動売買に使用していないので、この問題を放置しておいても実害はない。
しかし、将来、分足を自動売買に使うかも知れないので、簡単に対策がとれるならとっておきたいところだ。
回避策を検討していたところ、岡三オンライン証券のホームページ、
『2017年8月19日開催「岡三RSSの夏期講習会」のセミナー資料等ダウンロード』
で紹介されているのを見つけた。
このページに掲載されている3つの資料のうち、
資料C:「岡三RSSユーザーの使い方大公開!―VBAを使いこなしてオリジナルの自動売買を!」(上級編)
のP32~35。
ここでは、各項目のデータ件数が等しいかどうかで判定する方法が紹介されている。
4本値データの場合、この方法が簡単で良いと思う。
読み取り一貫性の問題、ここでは4本値データでの事例を紹介した。
実は、歩値データでも同じ問題が発生している。
そして、歩値の場合、上記回避策は適用できない。
4本値データの場合は、取得期間指定ができるため、データ件数の変化を見ることができるが、歩値の場合は、表示行数指定のため、データ件数は常に同じ件数(指定した行数)となる。
歩値では、
- 前回読み込んだときから状態が変化しているかどうかチェックする方法
- キーポイントを設定し、データをマッチングさせる方法
など試してみたが、やるだけ無駄といった感じだ。
歩値飛びの問題も含め、誤差を許容しながらトレードするしかない。
厳密に比較していないが、本番用PCより開発用PCの方がこの問題が多く発生しているように感じている。
本番用PCより開発用PCの方がマシンスペックは上だが、Excelのバージョンは古い。
(マシンスペックは、こちら)
もし、Excelのバージョンが新しいほどこの問題の発生頻度が低いのであれば、
Excel2016を試してみるのも良いかも知れない。
(2021年2月9日追記)
この問題、2021年1月23日にリリースされた岡三RSSの機能拡充において、一部解消された。
こちらの記事『岡三RSSが機能拡充された。が、・・・』