かぶだいくん C# 化

注文を訂正するとその訂正値段が板に乗って、それを RSS で取得するまでに、タイムラグがある。そのタイムラグまでまじめに細かく扱おうとすると、状態遷移がとてもややこしくなる。たとえば、自分の出した訂正注文で板が変化し、その変化で計算した値段でさらに訂正注文を出してしまって、また板が変化して、...、というような感じで一種の「振動」をおこしてしまったりする。
そのため、動作をちょっと簡略化した。まずはつぎのようなロジックで作ってみて、その後で拡張していこう。

  • 訂正注文のコマンドの実行開始から、10秒間は、なにもしないようにする。ひたすら待つ。
  • 訂正注文のコマンドの実行完了から、5秒間は、なにもしないようにする。ひたすら待つ。
  • RSS のイベントや、注文照会画面の取得イベントがあったら、そのイベントのたびに板を見て、「有利」な値段を決める。この際に、板から自分の注文分は差し引いて考える。こうすれば「振動」は起きない。
  • 有利な値段が、最後に訂正した値段と違っていれば、再び訂正注文を出す。なお、イベントが起きてもすぐには訂正注文は出さない。3秒ほど待つ。たとえば、あるイベント(A)が起きてその1秒後に別のイベント(B)が起きたら、2回の注文を1回にまとめて、Aの3秒後(=Bの2秒後)に1回だけ出すことになる。A と B で値段が違っていれば、当然、新しい B のほうを優先する。
  • 有利な値段は、また別途、それ用の推論エンジンを作ってプラグインすれば良い。とりあえずは、最良気配値の1ティック高い買いや、1ティック安い売りといった、シンプルなエンジンで良いだろう。