システムトレード - リアルタイム監視!
Updated:
【はじめに】
Yahoo!ファイナンス掲載情報の自動取得(スクレイピング)は禁止されています。(参照)
以下の記事(Yahoo!ファイナンスに関する部分)を参考にすることもお勧めしません。
こんばんは。
今作成中のシステムトレードソフトでリアルタイムで株価を取得できるようになりました。
環境は
- WindowsXPSP3
- VisualBasic2008ExpressEdition
- SQLServer2008ExpressEdition
- 接続先証券会社はSBI証券
です。
過去のデータを無料で取得するには「Yahoo!ファイナンス」からXMLHTTPコントールにてHTMLを取得・解析していました。
そして、リアルタイムで株価を取得するに「Yahoo!ファイナンス」では20分遅れになってしまうので考えました。
楽天証券に口座を持っていれば、RSSで取得できるようですが、私はSBI証券に口座を持っていますので、楽天RSSはあきらめ。。。
やはりSBI証券にログインしてリアルタイムの株価を取得するしか方法がないようです。
SBI証券はメインサイトではなく、セキュリティも甘く、動作の軽いバックアップサイトです。
コツコツと毎日少しずつなので何日もかけて調べ、やっと実現できました。
まだ、不具合は潜んでいるかもしれませんが。。。
↓↓ こんな画面です ↓↓
詳細は説明できませんが、今回の開発で使用した手法(勉強になった手法)は以下のとおりです。
- スレッド機能を使用。 この中でも、「スレッドからフォームを操作はできない」ということがわかってよかった。 この場合は「Delegate」しないといけない。
- XMLHTTPの各種機能を使用。 Webbrowserコントロールを使用してHTMLを取得する方法もあるが、実際に実装してみた結果動作が重過ぎるし、裏でブラウザを操作しているだけなのであまりシステマティックでないように感じたので、XMLHTTPにした。 XMLHTTPでもHTML上のテキストボックスやセレクトボックス(コンボボックス)を指定してsubmitできることを確認。 さらに、ログイン後セッション(クッキー)を保持するワザもわかってよかった。 (セッション保持ができないとログインできても20分ディレイの株価しか取れなくなるので)
その他にも、細かなテクニックもいろいろ取り入れています。
ただ、スレッドがうまくバックグラウンドで動かない。。。 (Webに接続中(データ取得中)は画面が操作できなくなる。”Thread.IsBackground = true” も効かない) もう少し調査が必要。。。
まあ、でも一応、買いシグナル・売りシグナルはリアルタイムでチェックできるようになりました。
あとは、実際に自動で発注する機能を実装すれば完成なんですが、手法の算出方法の精査も必要だし、まだ怖い気持ちがあるので発注自体はマニュアルでしています。
ではまた。
Comments