システムトレーダーの冒険の書

自作のプログラムでシステムトレードを行っています。ポジション完全公開で、シストレやプログラミングについて書いていきます。相互リンク募集中です。

QueryTablesで時系列の四本値を取得する

ブログランキング参加中!!

過去にExcel VBAを利用して現在の株価を取得する方法を紹介しました。
しかし、システムトレードで必要な情報は現在の株価よりも
これまでの四本値だと思います。

そこで、Yahooファイナンスから四本値を取得する方法を紹介します。
方法はいくつかあるのですが、まずは一番簡単な
QueryTablesを利用する方法を紹介します。

まず、前提知識なのですが、
Excelには元々Webサイトの表を取り込む機能が備わっています。
上部メニューから
データ > 外部データ取り込み > 新しいWebクエリ
と選択し、時系列株価の取得できるURL
例:"http://stocks.finance.yahoo.co.jp/stocks/history/?code=7203.T"
を指定して表を取り込むことが出来ます。
これをVBAで自動化するわけです。

この操作を、"マクロの記録"で記録すると元になるコードを作成できます。

この時点では無駄な設定も多く入ったコードになりますので
整理したのが次のサンプルです。

Sub getHstData()
Dim TargetURL As String
Dim PasteSheet As Worksheet

'データの取得下URL
TargetURL = "http://stocks.finance.yahoo.co.jp/stocks/history/?code=7203.T"
'データを貼り付けるシート
Set PasteSheet = ThisWorkbook.Worksheets("Sheet1")

'Add関数の引数はURLと、貼り付け先の一番左上のセル
With PasteSheet.QueryTables.Add("URL;" & TargetURL, PasteSheet.Cells(1, 1))
.RefreshStyle = xlOverwriteCells
.WebSelectionType = xlSpecifiedTables
.WebFormatting = xlWebFormattingNone
.WebTables = "2" '何番目の表を取得するか
.Refresh BackgroundQuery:=False
.Delete 'データを残してQueryTableを削除
End With
End Sub


これをそのまま実行していただければ、トヨタ自動車の時系列データが取得できます。
URLを変更することでほかの銘柄や、ほかの期間のデータも取得可能です。

.WebTables = "2"
はデータ取得元のHTMLの構成が変更されたらそのたびに修正が必要です。
(僕は2回くらい変更を経験しています)

.Delete
で追加したQueryTableを削除しているのは、
そのまま残すとファイルが重たくなるからです。
Tableを消してもデータは残るため問題ありません。

このコードを元に修正を行えば比較的簡単に時系列取得マクロを作成できます。
マクロの記録で自動生成されるコードにはもっと多くのオプションがありますので、
もし気になりましたら調べてみてください。

この方法のデメリットは
実行速度が比較的遅いことです。

僕の初代シストレツールではこの方法を使い、
数時間かけてデータを取得していました。
その後、まったく別の方法に変更し、劇的に速度向上しています。
今ツールで使ってる方法については今後紹介していきます。

さて、このQueryTablesを使った方法ですが、
一番のメリットはその手軽さです。
URLと貼り付け先を指定するだけで表データを取得できます。
メインのツールでは使わなくなっても、
調査用にさっとデータ収集したいときなど、
いろいろ重宝しています。

【人気ブログをチェック】
[ 2013/02/16 16:48 ] シストレツール | TB(0) | CM(0)
コメントの投稿












管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL

プロフィール

yutaro

Author:yutaro
年齢:30代
職業:IT系(ベンダーからWeb系に転職)
住所:関東

Excelで自作したツールのシグナルにしたがってシステムトレードをやっています。

相場暦:
2005年10月からFX開始
就職前後に一旦取引を中断し、
2012年6月から株をやってます

トレードの目標は2020年1月1日を億万長者としてむかえること。

Twitterアカウントはこちら。



ご連絡を取りたいかたはブログのコメント欄、メールフォーム、Twitter、などどちらからでもOKです。システムトレード、プログラミング、数学、などのほか、飲み会のお誘いなど何でもどうぞ。

書籍・グッズの購入はこちら
メールフォーム

名前:
メール:
件名:
本文:

ブログランキング

株式投資ブログランキング
アクセスカウンタ