いよいよ、IEを操作して注文の自動化を行えるようにします。プログラムからIEのような別のソフトウェアを操作するとき、キーボード入力やマウス移動・クリックをプログラムでシミュレートして、操作する方法があります。しかし、こういったことを一度でも行ったことがある方はご存知でしょうが、動作が非常に不安定になります。
というのも、キー入力を行った結果、正しく入力できたのか、あるいは、マウスをクリックして画面がきちんと切り替わったのか、などがプログラム側から検知できないためです。もちろん、sleepメソッド呼び出しや2度押し(クリック)、画面名の取得などを駆使してある程度は回避できますが、問題の本質的な解決策にはなりません。本ブログでは、このような不安定な手法は採用しません。本ブログでは、全く異なるアプローチをとります。
というのも、キー入力を行った結果、正しく入力できたのか、あるいは、マウスをクリックして画面がきちんと切り替わったのか、などがプログラム側から検知できないためです。もちろん、sleepメソッド呼び出しや2度押し(クリック)、画面名の取得などを駆使してある程度は回避できますが、問題の本質的な解決策にはなりません。本ブログでは、このような不安定な手法は採用しません。本ブログでは、全く異なるアプローチをとります。
本ブログで紹介する方法は、SHDocVw、MSHTMLというIEコンポーネントを直接、プログラムで操作するものです。この方法であれば、IEの状態がプログラム側から検知でき、エラーが起きても把握することができます。
さて、IEを操作して、注文を行えるようにするために、具体的な説明は、次の3つのステップに分けて行います。なお、以降の説明で、都合上、いくつかのクラスが説明なしに出てくる部分がありますが、後で説明するものですので、読み飛ばして構いません。
検索ワード:Internet Explorer、html、SHDocVw、MSHTML
さて、IEを操作して、注文を行えるようにするために、具体的な説明は、次の3つのステップに分けて行います。
- IEの基本的な操作方法を説明します。これは、どの証券会社を使っていても共通になる部分です。ここで紹介する操作方法で注文に必要なほぼすべてのIE操作を網羅しています。
- 証券会社のログイン画面や注文画面といった画面ごとに、クラス分割を行います。ここでは、楽天証券での例をとりあげますが、処理ごとに「なぜそうするのか」という考える手順や理由をhtmlソースとともに説明していきます。そうすることでできるだけ、他の証券会社をお使いの方にも応用できるようにします。また、楽天証券をお使いの方でも、Web画面の仕様が変わったとしても対応できるになるでしょう。
- 画面ごとに作ったクラスを連携させて、注文の一連の処理を行えるようにします。最終的なソースコードで表すと、以下のようなイメージで、画面遷移にそって流れるように実装できるようにします。
web.GoOrderSearch().GoOrder(trade).Execute()
検索ワード:Internet Explorer、html、SHDocVw、MSHTML
スポンサーリンク