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

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

時系列株価を取得できるVBScriptプログラム(ソース公開)

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

今日はVBScriptで作成した、
時系列株価(4本値)を一気に取得し、テキストに保存するプログラムを紹介します。

動作環境は Windows のみです。(Mac , Linuxでは動きません)
Excel や IE は利用しないため、OSだけあれば動きます。

使い方は簡単で、
"続きを読む"を押して表示されるプログラムを、
メモ帳などのテキストエディタに貼り付けて、
拡張子を .vbs で保存し、ダブルクリックで実行するだけです。

対象銘柄や出力先の設定は、
プログラムの上のほうにあります。
こちらを変更していただければ、
好きな銘柄のデータを取得することが出来ます。

初期設定は株価コード7203のトヨタ自動車の株価を 4 * 50 = 200日分取得し、
"C:\Temp" というフォルダに、タブ区切りのテキストとして保存します。
ファイル名は 7203.txt です。(コード + .txt)
同じ名前のファイルがあると消しちゃいますので注意してください。

プログラム中の上のほうに4つの設定がありますので、
書き換えてください。
(特に、SaveFolder は実在するフォルダに
変更していただかないと動きません。)

StckCode = "7203"
SaveFolder = "C:\Temp"
PageNum = 4
Sepalater = vbTab

無料公開ですが、利用するときは一日一回ブログランキングを
クリックしていただけるとうれしいです。

例によってざっと作ったプログラムのため、
ご利用は自己責任でお願いいたします。
投資判断に利用した際の損失やPCへの影響については、
作者は一切責任を持つことが出来ません。

ご意見・ご感想をお待ちしています。
(不具合ありましたらご連絡お願いします)

【人気ブログをチェック】

'#この下の行からコピーしてください。

'時系列株価を取得し、Textファイルに保存するツールです。
'拡張子は.vbsで保存してください。
'12行目までが設定変数になっています。

'株価コードを設定してください
StckCode = "7203"
'結果ファイル作成フォルダを指定してください
SaveFolder = "C:\Temp"
'何日分取得するかを指定してください(指定した値*50日分取得します)
PageNum = 4
'区切り文字を指定してください
Sepalater = vbTab

'以上が設定です。ここより下の行はメインプログラムとなります。

Set FSO = CreateObject("Scripting.FileSystemObject")

If Not FSO.FolderExists(SaveFolder) then
MsgBox "保存先フォルダが存在しません"
WScript.Quit
end if

OutFilePath = FSO.buildPath(SaveFolder , StckCode & ".txt")
Set TS = FSO.CreateTextFile(OutFilePath)

Set re = New RegExp
re.Pattern = "(\d{4}年\d{1,2}月\d{1,2}日)</td><td>([0-9|,]+)</td><td>([0-9|,]+)</td><td>([0-9|,]+)</td><td>([0-9|,]+)</td><td>([0-9|,]+)</td><td>([0-9|,]+)"
re.Global = True

For PageCnt = 1 to PageNum
html = getHTMLbyURL( getHistoryURL(StckCode , Date - 80 * PageCnt , Date , PageCnt) )
Set Mcol = re.Execute(html)
for i = 0 to Mcol.count -1
LineString = ""
LineString = Mcol.item(i).submatches(0)
LineString = LineString & Sepalater & Mcol.item(i).submatches(1)
LineString = LineString & Sepalater & Mcol.item(i).submatches(2)
LineString = LineString & Sepalater & Mcol.item(i).submatches(3)
LineString = LineString & Sepalater & Mcol.item(i).submatches(4)
LineString = LineString & Sepalater & Mcol.item(i).submatches(5)
LineString = LineString & Sepalater & Mcol.item(i).submatches(6)
TS.writeLine(LineString)
Next
Next
TS.Close
MsgBox "完了"

Function getHistoryURL(code , s_date , e_date , p_cnt)
'時系列データ取得元サイトのURL作成関数です
getHistoryURL = "http://info.finance.yahoo.co.jp/history/"
getHistoryURL = getHistoryURL & "?code=" & code & ".T"
getHistoryURL = getHistoryURL & "&sy=" & Year(s_date)
getHistoryURL = getHistoryURL & "&sm=" & Month(s_date)
getHistoryURL = getHistoryURL & "&sd=" & Day(s_date)
getHistoryURL = getHistoryURL & "&ey=" & Year(e_date)
getHistoryURL = getHistoryURL & "&em=" & Month(e_date)
getHistoryURL = getHistoryURL & "&ed=" & Day(e_date)
getHistoryURL = getHistoryURL & "&tm=d"
getHistoryURL = getHistoryURL & "&p=" & p_cnt
End Function

Function getHTMLbyURL(url)
'URLからHTMLを取得する関数です
Set objXMLHTTP = CreateObject("MSXML2.XMLHTTP")
On Error Resume Next
Call objXMLHTTP.Open("GET", url, False)
Call objXMLHTTP.send
getHTMLbyURL = objXMLHTTP.responseText
On Error GoTo 0
End Function
'#この上の行までコピーしてください。
[ 2013/05/18 23:01 ] シストレツール | TB(0) | CM(6)
面白いです
はじめまして。
システムトレードはおろか株も初心者で勉強中です。

csvファイルが欲しかったし、面白そうなので

StckCode & ".txt"の.txtを.csvに、Sepalater = vbCommaにしてみましたが思ったようにはなりませんでした。。v-12

見当違いなことをして時間を無駄にしています。ブログも読み始めたばかりなので勉強させていただきます。

[ 2014/10/25 19:53 ] [ 編集 ]
Re: 面白いです
>>武蔵大杉さん

コメントありがとうございます。
CSVでの出力ですね。
ちょっと最近時間が取れないのですが、
出来るだけ近いうちに参考になるスクリプト作って紹介させていただきます。
[ 2014/10/25 22:25 ] [ 編集 ]
私のサイトで紹介させていただきました
貴重なノウハウを公開いただき、有難うございます。
私のサイトでExcelマクロに移植したものを紹介させていただいています。
http://makoto-watanabe.main.jp/vba_DailyTrade.html#gathering2
ご了解をお願いいたします。
[ 2015/07/10 09:43 ] [ 編集 ]
Re:私のサイトで紹介させていただきました
>>渡辺真さん

ご紹介ありがとうございました。
実は記事の元ネタの僕のツール自体はExcelマクロ版で、
それをExcel無しでも使えるよう、
VBSへ焼きなおしたのがこの記事でした。

紹介記事拝見しましたので、何点かコメントを。

URLの作成は、VBAならVBSに無いformat関数が使えるので、
使ったほうが短く綺麗にかけます。
あと、RegExp だけでなく、
MSXML2.XMLHTTPや、Scripting.FileSystemObject
も参照設定して使ったほうが
補完機能が使えてコーディングが楽ですよ。

他の記事もこれから読ませていただきますね。

[ 2015/07/10 23:20 ] [ 編集 ]
日々公表銘柄の株価推移
コメントを頂き、有難うございました。

公開していただいているソースを使って、「日々公表銘柄」を取得して、その株価推移とともに、機関の空売り残高情報を付加するようにしてみました。

インターネットから株価を取得2 (MSXML2.XMLHTTP を使う ShiftJIS)
http://makoto-watanabe.main.jp/vba_DailyTrade.html#gathering22
のDailyPublicationStocksVBA05.xlsです。

企業コードのシートの右端部分に「空売り者」の情報を表示しています。
これを見て分かったのですが(知る人ぞ知る)、モルガン・スタンレーMUFG、Deutsche Bank London、OXAM といったところが深く関与しているのですね。
[ 2015/09/15 11:30 ] [ 編集 ]
Re: 日々公表銘柄の株価推移
>>渡辺さん
コメントありがとうございます。
なかなか面白い機能を作られましたね。

エクセルは表計算ソフトということで無意識に
テーブル形式の数値データばかり扱う方向で使っていましたが、
思えば数値以外の情報もどんどん取れるんですよね。
[ 2015/09/15 22:47 ] [ 編集 ]
コメントの投稿












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

プロフィール

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

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

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

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

Twitterアカウントはこちら。



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

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

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

ブログランキング

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