自動売買

id:unibon:20070823:p7 の続き。
主要なクラスはつぎの3つ

  • パーサークラス(IParser): Web サーバーからのレスポンスを MSHTML レベルで解析し、リンクやボタンのクリックをおこなってリクエストするレイヤー。レスポンスとそれを使ったリクエストの対でひとつのパーサーインスタンスとなる。
  • コマンドクラス(ICmd): ひとつの注文の発注などを単位として、その中で必要な一連の処理をまとめて制御するクラス。内部で複数のパーサークラスを使って、複数の画面を遷移させる制御を担う。銘柄コード入力画面で submit して、つぎに遷移した価格・株数入力画面で submit して、そのつぎに遷移した暗証番号入力画面で暗証番号をセットして submit 、という流れを制御する。待つのは Web サーバーからのレスポンスタイムのみに依存する。寿命は数秒間程度である。
  • タスククラス(ITask): 自動売買の思考ロジックレベルの制御をおこなう。RSS からの株価変化のイベントを捉えて、随時最適な指値になるように注文訂正を何度かおこない、約定したかどうかを定期的に検査し、約定したらこのタスクが完了、などといった制御をおこなう。寿命が長い。株価が変動したり約定したりするまでスリープを挟み、何時間も生き続けるインスタンスである。

タスククラスの設計がめんどくさい。特に複数のタスクを並列実行できるようにしたほうが良いと思うので、そうしたい。タスクAが銘柄A担当、タスクBが銘柄B担当のような感じになる。しかし、タスクの状態管理が、コマンドクラスの制御も絡み、とっても難しい。すぐには作れそうにない。