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

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

yahooファイナンスから時系列株価を取得できる正規表現

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

久しぶりのプログラミングの話です。

前回、Excel VBA で正規表現を利用する方法を記載しました。
Excel VBA で正規表現を利用する

さて、問題はどんなパターンを指定すれば時系列データは取得できるのかです。

例として、トヨタの時系列株価の例のページのソースコードを見てみましょう。

ほしいのはこういう形式の部分です。

<tr><td>2013年4月16日</td><td>5,400</td><td>5,530</td><td>5,380</td><td>5,450</td><td>16,290,800</td><td>5,450</td></tr>

"tdタグ"はhtmlの表の1マスを表します。
最初のマスが日付で、それ以降、
始値,高値,安値,終値,出来高,調整後終値*と続きます。

タグは毎日同じですが、数値部分は(当然ですが)日によって異なり、
プログラムで文字列を操作するときに面倒になるところです。
それを解決してくれるのが正規表現というわけです。

僕は出来高と調整後終値はツールで利用していないため、
日付,始値,高値,安値,終値,を次の正規表現で取得しています。
(出来高もとりたい場合も考え方は同じです。)

"(\d{4}年\d{1,2}月\d{1,2}日)</td><td>([0-9|,]+)</td><td>([0-9|,]+)</td><td>([0-9|,]+)</td><td>([0-9|,]+)"

それでは解説しましょう。

まずは、
\d{4}年\d{1,2}月\d{1,2}日
の部分です。

\d という記号は、半角の数値つまり0,1,2・・・9のいずれか一文字、という意味になります。
そしてさらに、{4}は4回繰り返し、{1,2}は1回から2回までの繰り返しを意味します。
これによって、
\d{4}年\d{1,2}月\d{1,2}日
は任意の日付にマッチします。
(日付ではありえない34月98日などにもマッチします。
 実害はありませんが気になる人はもう少し工夫してください。)

次の
</td><td>
はそのままです。htmlのタグにマッチします。

そして次のポイント。
[0-9|,]+
です。
[0-9|,] は 0から9までの数値または,(カンマ)にマッチします。
そして、 + (プラス) 記号は直前のものの1回以上の繰り返しを意味します。

これによって、株価が99円でも1,234円でもマッチさせることが出来ます。

ちなみに正規表現のパターンの中の"("")" 括弧は、
サブマッチのために入れています。
これを入れておくと、取得した文字列の中から
本当に必要な始値や終値などの数値をプログラムで利用するのが簡単になります。

これでパターンの設定は完了です。

あとは.GlobalオプションをTrueに設定しておけば、
1ページ中の時系列株価を一気に抜き出すことが出来ます。

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












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

プロフィール

yutaro

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

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

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

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

Twitterアカウントはこちら。



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

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

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

ブログランキング

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