デイトレ|エクセルVBAとRSS関数で株価データの時系列を自動で取得する方法!

シェアする

楽天RSSを使えば、株価をリアルタイムでエクセルに取り込むことができます。

ここでは、エクセルに取り込んだ、リアルタイム株価を時系列で

エクセルの表に記録する方法をご紹介します。

なんと、しかも、VBAを使えば、タイマーで自動で出来ちゃいます!

★この記事を読むと以下の3つのことがマスターできます。

  1. 楽天RSSを使い、エクセルシート上に、複数銘柄のリアルタイム株価を取得する。
    (ここでは10銘柄での演習をしますが、マーケットスピードⅠでは300銘柄まで同時取得可能です)
  2. 取得した複数銘柄のリアルタイム株価を、エクセルVBAを使用し、5秒毎に時系列に記録する。
  3. 上記の動作を、開始時刻と終了時刻をエクセルVBAを用いて設定し、タイマーで自動で行う。

これが、何の役に立つのか?

エクセルの表に株価の時系列データを記録できるので、様々な分析が可能となります。

そしてなんと!エクセルの関数を使えば、移動平均、標準偏差、ボリンジャーバンド、その他さまざまな分析がリアルタイムで可能となります。

ちなみに、私はこれを発展させて、非常に自由度の高い、自動売買のツールを作成し、デイトレードで利用しています。

今回は、楽天証券のRSS(リアルタイムスプレッドシート)により株価をリアルタイムで取得し、エクセルのプログラム(VBA)により、その株価データを時系列で記録するところまでをやっていきます。

やる気のある人は追いてきてください!

それでは、早速やっていきましょう!

≪初めに≫ リアルタイム株価の取得には楽天RSSを使用します。
楽天RSSの使用には、楽天証券の口座を開設している必要があり、楽天証券のトレーディングツールである、マーケットスピード(もしくはマーケットスピードⅡ)をインストールし、楽天RSSのアドイン登録をする必要があります。
今回は、楽天RSSのアドイン登録済みであることを前提とし、エクセル2016を使用し説明を進めていきます

RSS関数により株価データを取得し、エクセルシートに記録する。

それでは、まず初めにエクセルを立ち上げ、株価を記録するためのシートを作成しましょう。

サンプルとして下記のシートを作成しました。(銘柄は任意に10銘柄を選択しました!)

D列にリアルタイム株価を取得し、E列~G列に5秒毎に記録していく予定です。

クリックで拡大します。


各銘柄のリアルタイム株価を取得するために、RSS関数を入力していきます。

はじめにD4のセルに≪1963日揮≫の株価を取得してみましょう。

① D4のセルを選択します。

クリックで拡大します。

② メニューから ≪ アドイン ≫ を選択します。

クリックで拡大します。


③  RSS:数式登録エディタ のアイコンをクリック。
④  銘柄コードを入力。
⑤  情報項目のプルダウンから、≪ 現在値 ≫ を選択。

クリックで拡大します。


⑥ 日揮の株価の現在値を取得しました。
数式ウィンドウにはRSS関数が表示されています。
※このRSS関数は手動でも入力可です。

クリックで拡大します。


⑦ 同様の手順で他の銘柄のRSS関数も入力し、株価の現在値を取得します。

クリックで拡大します。

ここまでで、10銘柄の株価の現在値をRSS関数で取得することができました。

準備)開発タブの設置とマクロ有効ブックの保存。

ここからエクセルVBAを使用していきますが、その前に、エクセルの準備を整えましょう。

⑧ メニューの≪ファイル≫を選択。

クリックで拡大します。


⑨ ≪ オプション ≫ をクリック。

クリックで拡大します。


⑩ ≪ リボンのユーザー設定 ≫ をクリック。

クリックで拡大します。


⑪ ≪開発 ≫ のチェックボックスに ✓ を入れる。

クリックで拡大します。


⑫ 開発 タブが設置されました。

クリックで拡大します。


⑬ マクロを使うファイルは、マクロ有効ブックで保存する必要があります。
メニューの≪ファイル≫ー≪名前を付けて保存≫をクリックします。

クリックで拡大します。


⑭ファイルの種類をExcelマクロ有効ブック(*.xlsm)を選択して保存。
※今回はデスクトップに保存しました。

クリックで拡大します。
クリックで拡大します。


準備)VBE(Visual Basic Editor/VBエディタ)の起動

VBAのプログラムコードは、VBEを起動しコーディング(記入)していきます。初めにエクセルのVBEを起動します。

⑮ メニューの≪開発≫をクリックします。
⑯ Visual Basic のアイコンをクリックします。

クリックで拡大します。


Visual Basic Editor が起動します。

クリックで拡大します。


⑰ VBA Project のあたりを右クリックし、≪挿入≫ー≪標準モジュール≫を選択。

クリックで拡大します。


⑱ Module1(モジュール1)が挿入され、VBAコードを記入するウィンドウが表示されます。

クリックで拡大します。

ここまでで、VBAを使用する準備ができました。


株価を記録するVBAコードを記述する。

初めに株価を記録するためのVBAコードを記述します。

書きたいVBAの動作は下記のイメージです。

クリックで拡大します。


⑲ 下記のVBAコードをVBエディタの、モジュール1に記述します。
※エクセルのシート名は『株価データ』としてください。

Sub 株価を記録()
Worksheets(“株価データ”).Range(“E4:Q13”).Value = Worksheets(“株価データ”).Range(“D4:P13”).Value
End Sub


クリックで拡大します。

ここで、マクロ起動ボタンを設置します。

(マクロ起動ボタンは無くてもVBAは起動できますが、ボタンがあると後々、利便性が高いため設置しておきます)

⑳ メニューの≪開発≫-≪挿入≫ー≪ボタン(フォームコントロール)≫をクリックします。

クリックで拡大します。


㉑ 今回、作成したいボタンで起動するマクロの名称は『株価を記録』なので≪株価を記録≫をクリック・選択します。

補足)VBAコードに記述した、 Sub 株価を記録() の『株価を記録』がこのマクロの名称です。

クリックで拡大します。


㉒ OKをクリックします。

クリックで拡大します。


㉓ ボタンが設置されますので、ボタンの名称を変更します。※今回は『株価を記録』としました。

クリックで拡大します。


㉔ VBAの動作確認
≪株価を記録≫ボタンをクリックします。
※D列の株価データが、E列に1列ずれて記録されれば成功です。

クリックで拡大します。

ここまでで、株価を記録VBAコードの記述は完了です。

指定した時間で繰り返し株価を記録するマクロを、指定した時刻に自動で開始・終了させるVBAコードを記述する。

今回は、下記条件のVBAコードを記述します。

前場の株価の記録を終了後、一旦停止し、後場開始と共に株価の記録を開始します。

インターバル(株価の繰り返し記録間隔) 5秒毎

【前場】 開始時刻 9:00、終了時刻 11:30

【後場】 開始時刻 12:30、終了時刻 15:00

㉕ VBエディタを起動し、手順⑰と同様の方法で、モジュール2を挿入します。

クリックで拡大します。

㉖ 下記、VBAコードをモジュール2に記述します。

Option Explicit
Dim 開始時刻1, 終了時刻1, 開始時刻2, 終了時刻2, インターバル, 反復時刻
’‘’‘’‘’‘’‘’‘’‘’’‘’‘’‘’’‘’‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Sub 株価記録を決められた時刻にスタート前場()
開始時刻1 = TimeValue(“09:00:00”)
終了時刻1 = TimeValue(“11:00:00”)
‘ タイマー制御
Application.OnTime 開始時刻1, “株価を5秒毎に記録前場”, TimeValue(“00:00:10”)
End Sub
’‘’‘’‘’‘’‘’‘’‘’’‘’‘’‘’’‘’‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Sub 株価記録を決められた時刻にスタート後場()
開始時刻2 = TimeValue(“12:30:00”)
終了時刻2 = TimeValue(“15:00:00”)
   
‘ タイマー制御
Application.OnTime 開始時刻2, “株価を5秒毎に記録後場”, TimeValue(“00:00:10”)
End Sub
’‘’‘’‘’‘’‘’‘’‘’’‘’‘’‘’’‘’‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Sub 株価を5秒毎に記録前場()
‘画面の再描画を停止
Application.ScreenUpdating = False
‘もし終了時刻になったら
If TimeValue(Now) >= 終了時刻1 Then
‘後場データ取得のマクロを呼び出し
Call 株価記録を決められた時刻にスタート後場
‘このプロシージャを終了
Exit Sub
‘Ifの動作を終了
End If
Call 株価を記録
インターバル = TimeValue(“00:00:05”)
反復時刻 = TimeValue(Now) + インターバル
Application.OnTime 反復時刻, “株価を5秒毎に記録前場”, TimeValue(“00:00:10”)
‘画面の再描画を再開
Application.ScreenUpdating = True
End Sub
’‘’‘’‘’‘’‘’‘’‘’’‘’‘’‘’’‘’‘’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’’
Sub 株価を5秒毎に記録後場()
‘画面の再描画を停止
Application.ScreenUpdating = False
‘もし終了時刻になったら
If TimeValue(Now) >= 終了時刻2 Then
‘このプロシージャを終了
Exit Sub
‘Ifの動作を終了
End If
Call 株価を記録
インターバル = TimeValue(“00:00:05”)
反復時刻 = TimeValue(Now) + インターバル
Application.OnTime 反復時刻, “株価を5秒毎に記録後場”, TimeValue(“00:00:10”)
‘画面の再描画を再開
Application.ScreenUpdating = True
End Sub
クリックで拡大します。


㉗ マクロ起動用のボタンを設定します。(手順㉓と同様の方法です)

※ボタンのマクロ登録は、『株価記録を決められた時刻にスタート前場』の
 マクロを登録してください。

クリックで拡大します。


㉗ マクロ起動用ボタンを押し動作確認をします。
※手順㉖で記述したVBAコードの開始時刻、終了時刻を任意の時間に書き換えてテストしてください。

クリックで拡大します。


【補足】マクロの動作中にマクロを停止したいときは、ESCキーを長押ししてください。下記の画面で≪終了≫をクリックすると、マクロが強制終了します。

クリックで拡大します。

お疲れ様です。ここまでで、≪エクセルVBAとRSS関数で株価データの時系列を自動で取得する方法!≫は完了です。

応用編として、今回取得した株価データの時系列を利用して、エントリーのシグナルを取得する方法もあります。そちらは下記記事 ↓ ↓ をご参照ください!

👉デイトレ|エントリーに最適なタイミングとは?VBAとRSS関数で自動取得する方法

最後まで読んでいただき、ありがとうございます。
このように、株価データを時系列でリアルタイムに取得し自動で記録ができることにより、様々なメリットがあります。
エクセルデータベースですので、データ分析方法は容易にカスタマイズでき、非常に自由度の高いツールを作成することができます

今回はほんの一部をご紹介しましたが、さらにプログラムを組み込むことにより、自動売買ツールを自作することも可能ですので、お役立ていただければと思います。

  • 以上、≪エクセルVBAとRSS関数で株価データの時系列を自動で取得する方法!≫ でした。

Follow me!

コメント

  1. KeMuRi より:

    初めまして。
    楽天RSSの知識を参考に拝見させていただきました。

    私もデイトレードしており
    一番エントリーしたいタイミングが
    ボリンジャーバンド3σ付近での逆張りです。

    2σ超えたらアラートを出すような仕組みを
    作りたいのですがなかなか難しいです。

    仕事で関数は使っていましたが
    VBAは無知なため捗りません。

    バンド幅の計算などは関数でできるのですが
    RSSの移動平均線を25表示に設定しても
    はみ出して25以上にセルの下方に積み重なっていってしまうので
    セルの指定範囲からもはみ出し正しい数値になりません。

    なんか愚痴っぽいコメントになってしまいすみませんm(__)m
    差し出がましいですが何かアドバイスや参考になる資料、サイト
    ございましたらご教授お願いいたします。

    更新大変かもしれませんが
    楽しみにしています!

PAGE TOP