岡三RSSの「注文照会」の「注文状態」と「約定株数」は一致しない瞬間がある

岡三RSSを使って売買を自動化していると、どうもたまに売買ポジションの管理がおかしくなり、売りすぎてしまったり買いすぎてしまったりすることがある。もう何週間もこれに悩んでいたのだが、どうやら注文が約定したことはちゃんと分かるのだが、約定株数を0株だと判断してしまい、実際に約定した株数とかい離してしまうためのようだ。
なぜ約定株数を0株だと判断してしまうかというと、岡三RSSの「注文照会」には約定を判断できるものとして、「注文状態」と「約定株数」があるが、両者がかならずしも連動しないからだ。岡三RSSの ORDQUERY 関数を貼った Worksheet の Calculate イベント(Worksheet_Calculate)で「注文状態」と「約定株数」を一度に取得すると、たとえば「注文状態」 = "完了" であるのに 「約定株数」 = 0 のような矛盾した状態になることが瞬間的に起こるようだ。すなわち ACID の Isolation が破れているような状況になっている。
http://ja.wikipedia.org/wiki/ACID_%28%E3%82%B3%E3%83%B3%E3%83%94%E3%83%A5%E3%83%BC%E3%82%BF%E7%A7%91%E5%AD%A6%29


なお、その後は速やかに Calculate イベントが再び起きるので、その時点では正しく連動した状態に直る。したがって、約定したかどうかをアプリケーション側で判断するには、つぎのいずれかをやればよい。

  1. 「注文状態」 = "完了" を確認し、「約定株数」は見ずに「注文株数」を見てそれを約定した株数だとして扱う。
  2. 「注文状態」はあてにせず、「約定株数」と「注文株数」の両方を見て、「約定株数」 = 「注文株数」ならば全約定、「約定株数」 < 「注文株数」ならば一部約定、「約定株数」 = 0 ならば未約定として扱う。