分足株価取得ツールVer3の使い方
こんにちはRcatです。
この記事は以下の記事の続きです。
まだの方はこちらを先にご覧ください
はじめに
利用規約
情報や作品の活用時は事前に利用規約をご確認ください。
コメントについて
利用規約のガイドラインを確認の上コメントしてください。
則っていないコメントは削除します。
概要
概要
続きの記事ですので、概要は割愛させていただきます。
動作環境
Rcatの場合の実行環境です。
大抵新しい方であればバージョン違いでも動くことが多いです。
※動作環境報告コメントは歓迎
Windows11
Excel 2016
マクロを使うので純正エクセルが必要ですPython 3.11
3.11以下では一部ライブラリがインストールできずエラーになりますMarketSpeed2 4.22.0
株価をダウンロードする
本ツールは分足の株価をCSV形式で取得するためのツールです。
CSVと言いつつ、ファイルだと扱いづらいのでデータベースが現在のメインです。
MarketSpeedと接続
まずはマーケットスピード2と接続します。
詳しくは初回の記事の方で解説していますので、導入はこちらをご確認ください。
初回の設定を行う
ツールを入手したら、まずは初回の設定を行います。

取得モードを設定する
まず、最初にシステム設定のモードを変更します。
モードは2つあり、CSVかデータベースです。
データベースに書き込む場合は、事前にデータベースの用意が必要です。
インストールやセットアップなどはこちらで解説しておりますのでご確認ください。
おすすめはデータベースです。
導入が少々難しいかもしれませんが、データの補正や可視化が行えるのはデータベースモードのみです。具体的にどういうことかというのはこの後の説明を見ればわかると思いますが、ファイルとして保存すると色々と融通が効かないのです
CSVモードの場合、データをダウンロードした後の加工や可視化は何も行えません。
データベースモードの場合は、ユーザー名とパスワードとホストのところを入力します。
例えば、データベースを実行するパソコンにインストールした場合はこのような感じになります。

分足をダウンロードする
事前の準備ができたら早速取得してみましょう。

処理の開始前に確認しておくのはこちらの設定です。
まずは処理番号、こちらは中断した際に再開するためのインデックス番号です。初回は必ず1になっていることを確認します。
次に種類です。欲しいチャートの種類を設定します。
最後にコマンドです。使いたい場合は左側のチェックを入れましょう。この機能は正常に取得が終わった場合にコマンドを実行できるというものです。デフォルトでは5分後にシャットダウンするというコマンドが入力されています。要するに寝る前にやれってことですね。
銘柄を入力する
次に取得したい銘柄の証券コードを入力しましょう。なお、複数連続が前提なので1個だとエラーになります。最低でも2つ以上入力してください。
右側の除外に関しては、現在は気にしなくても大丈夫です。

準備ができたら上の実行のボタンを押します。

実行中はサブウィンドウが表示され、進捗状況が随時表示されます。都合が悪くなったら中断ボタンを押してください。

データを確認する
モードに応じて取得したデータが入る場所が違います。
CSVモードの場合はバージョン1の方で紹介していますのでそちらでご確認ください。
データベースモードの場合はデータベースに書き込まれます。
この後紹介する、銘柄一覧表示機能を使い取得した銘柄が反映されているか確認してください。
自動取得を行う
1度取得した銘柄と足の組み合わせは、データベースでリスト化されているため、次回以降エクセルの設定を行わずに取得することが可能です。

こちらの機能は自動実行のボタンを押すことで実行できます。
なお、この機能は有効にするために有効化キーが必要ですので、あらかじめ取得をしてください。

この機能を使うメリットとしては次のようなことが挙げられます。
複数銘柄の複数足を取得している場合。
通常は一巡した後、足を切り替えてもう1巡と繰り返す必要がありますが、この機能であれば全ての組み合わせを自動的に取得するため、ボタン1つで済みます。
また、最後に取得してから何日経ったかで取得の判定するため、余計な取得を行わずに済みます。
具体的にはマーケットスピードの提供日数ですね。1分足は9日ですが、5分足は1ヶ月など差がありますので、この辺りを反映しています。
仮に日経255でも1,5,10,15,30,D,W,Mの足を持っている場合、毎回やると2040回の取得が必要です。
しかし、それぞれの提供スパンに合わせて取得する日時をずらすことで、サーバーへの負荷を軽減するという狙いもあります。もちろん自分が取得するのを忘れるのを防ぐ目的でもあります。
株式分割
株式が分割されると、新規取得データは分割後の価格で取得されますが、手元のデータは分割前のままです。つまり急落したように見えます。
この問題を自動で補正するのが株式分割機能です。
分割の流れ
自動検知
株価取得時に急激な変動を検知して分割疑いメモに登録されます補正プラン作成
自動検知されたものに対してのアクションを指定します。
また、検知されていない銘柄も手動でプランを作成できます。プランをアップロード
作成したプランをDBに登録して実行準備をしますプランの編集
間違いがある場合は編集を行います補正実行
分割プランを使って株価を補正します
分割疑いを確認
データを取得した時に最後のデータと株価を比較し、30%以上の変動が認められる場合は分割疑いとしてメモが残ります。このメモが存在する場合、その真偽を確かめ株価の補正が必要です。
確認方法は簡単。取得が終わると自動的に確認が行われるので、その画面で確認します。
もちろん、自分で確認ボタンを押してもOK。

ここで表示されるものは分割の疑いがあると判断されたもので、このリストにある銘柄は解決するまでロックされ、取得を行うことが出来なくなります。複数足を持っている場合においての、データの整合性を優先してのことですのでご了承ください。

補正プランを作成
検知された銘柄の場合は、簡単に補正プランを作成できます。
右側の緑色の枠に必要事項を入力しますが、補正値以外は既に入っています。
以下の例では1つの自動検知と、ひとつの手動補正を入力しています。

補正値は次のルールに従い入力します。
補正値
誤検知の場合
0を入れて無視します分割の場合
正の数値で分割数を入力統合(併合)の場合
負の数値で統合数を入力
補正基準日(自動入力)
補正するデータの境界取得日時を入力します。
この時刻より前(つまりこの値は含まない)が補正対象です。
上記例の場合は2025/9/12 22:7:56を含むそれ以前の取得データが対象です。
1週間おきに取得している人で土日を挟んでいなければ、実際に分割が行われた日を入れても大抵問題なく動作します。
土日を挟むと定義上分割されたとされる日と、楽天証券がデータに補正を掛けてくるタイミングがずれるからです。証券ID(自動入力)
データベースの内部IDです。手動で入れる場合は、後述の銘柄一覧取得機能を使うと確認することができます。一覧にない銘柄を補正する場合
画像の例で言うと2行目が一覧にない銘柄の手動補正になります。
末尾に条件を入力することで、検知できなかった銘柄の補正も行うことができます。
補正プランをアップロード
入力が完了したら実行計画書き込みボタンを押して、補正計画をDBにアップロードします。
処理中は固まりますが正常な動作です。数によりますが数秒で終わります。

アップロードが完了すると、自動的に再読み込みが行われます。

注目するのは補正プランの列で、もともと空白だったセルが入力されていることが分かります。
ちなみに、手動補正の場合は自動検知依存のデータは表示されませんが正常です。※その都合で緑のエリアにも日時が自動入力されません。
データベース(stock_split_plan)を直接確認すると、末尾に2行増えています。idやplanがエクセルと同じになっているのが分かると思います。

分割プランを編集
間違えてしまった場合は、もう一度同じ操作を行うことでプランを上書きすることができます。

金を分割0にしてなかったことにします。
こうすると補正プランが0にアップデートされて無視リストに入ります。

ちなみに、データベースではこのような扱いとなります。flagが-1がキャンセルという扱いで、新規データが増えています。
増えるのが嫌であれば、直接このテーブルを書き換えてもOKです。

補正プランをAIで自動作成
補正プランをAIが自動で作成する機能です。
ワンクリックで分割の疑いのある銘柄の分割情報を検索して自動で補正計画を書き込みます。

この機能を使うには、まずメインの設定でGemini(AI)の設定を行います。
必要なのはモデル名とAPIキーです。
モデル名はExcelをリンクにしてありますので、そこから正式名称を取得します。
※進化の激しい分野なので半年でもズレると新しいモデルになっていることがありますので必ず確認してください。下記は今現在は使えますが、今後新しいものに置き換えられて使えなくなることが予想されます。

APIキーの入手方法はこちら
少し古いですが動画で手順も上げてます
準備が出来たら、自動計画作成のボタンを押します。
後は待つだけです!

実績としては、今回40件近く有ったもののうち、エラー1件、誤情報3件でした。
自動で作成した後、前後の株価と自動で設定された分割計画の数値を確認し、ずれていそうであればすぐわかりますのであまり問題にはなりません。
2、5、10分割等のあからさまなのは検索しなくてもいいくらいに思っておけば良いです。
エラーの場合はそもそも実行計画が作成されませんので手動で作成します。
誤情報の場合は実行計画の編集機能で上書きします。
分割補正を実行
準備が出来たら補正を実行します。
念のため再読み込み後、補正実行ボタンを押します。

黒い画面に進捗が表示されるので、終わるまで待ちます。
終わった後は、黒い画面でEnterキーを押して完了です。内容が見られるようにとじないようにしています。
実施結果がこちら。
赤い線の部分が分割されたデータの境界ですね。2分割なので2倍違います。
下半分が補正後のデータです。きちんと境界線で半分になっており、出来高が2倍になっていることが分かります。

銘柄一覧表示機能
この機能は、データベース内に格納されているすべての銘柄と、足種の組み合わせをシート上に出力します。
自分の保持しているデータを一覧で見ることができます。
また、ここから派生でダウンロードとグラフ表示機能があります。
一覧表示を行う
シートを"DB銘柄一覧"に切り替えます。
まず最初に"一覧問い合わせ"ボタンを押します。
二回目以降は表示が残っていますが、消さなくて大丈夫です。

DBの性能やデータの件数により数秒かかります。
取得に成功すると一覧が表示されます。フィルターが使えるので検索も簡単です。
一番右の上場廃止が1になっている場合、楽天証券からの提供が終了したデータです。手動で取得している場合はリストから外しましょう。

CSVファイルとしてダウンロードする
CSVファイルとして手元にダウンロードすることができます。
一覧表示した状態で、欲しい銘柄を選択(アクティブセル)します。
ここで大事なのはその行を選択している事なので、証券コードでも別にいです。
選択後、CSV取得ボタンを押すことでダウンロードできます。

ツールが置いてあるフォルダにCSVファイルが生成されます。

開くと以下のようなCSVファイルとなっています。

※この機能は上級編で紹介するコマンドでも実行できます。ポチポチするのがだるい方はコマンド推奨
チャートを描写する
本ツールでは、視覚的にわかりやすいようにグラフ描写機能も備えています。
まずは右上の表示スパンを設定します。
見たい範囲を日付で入力します。なお、終了日は含まれません。
また、指定範囲のチャート本数が1000本を超える場合、処理が重くなる可能性があるため1000本に制限されます。
PCの性能に自信があるなら無制限モードにしても良いですが、どうなっても知りません。

範囲の指定が完了したら、CSVダウンロードと同じく銘柄を選択します。
その後、プロットボタンを押すと表示されます。
PCの性能とデータの範囲に応じて数秒から数分かかります。
グラフ左下にある操作バーを使用して、グラフの拡大や移動が可能です。
細かすぎる場合などは調整してみてください。
また、画像として保存することもできます。

データ管理
DBに入っているデータのバックアップや、前回の取得から時間が経っており、そろそろ取得した方がいい銘柄を表示するなどいくつかのオプションツールがあります。
ZIPですべてのCSVをダウンロード
バックアップツールを使うことで、DB内のすべての株価データをCSVとして出力しつつ、ZIPに圧縮することができます。

取得できるCSVはこんな感じ
kindが入っているので分かると思いますが、全足のデータがまとめて入っています。
なので、あくまでもバックアップ用であり実用としてはあまり考えていません。

SQLDumpでDBをバックアップ
こちらはMySQLの機能を使って、データベースを丸ごとバックアップするという方法です。
データだけではなくテーブル構成などもバックアップされるため、SSDが壊れたときなどの復旧が容易です。
※私のツールではCSVからDBへ書き込む方法は用意していないので、DBが完全に飛んだ場合の復旧はこちらになります。

詳しい仕組みはこちら。
読み取りには適さないデータですが、データベースの完全復旧や移行時に活用することができます。

取得漏れチェック
期間チェッカーを使うことで、そろそろ取得した方がいい銘柄と足種の一覧を出力できます。

ボタンを押すとDBにすべての銘柄のすべての足において、最新のデータを問い合わせます。
そこから本日までの差分を計算して取得に行った方がいい銘柄をテキストで返します。

上記は8日なのでとりに行かないと期限切れになりますね。※厳密には土日含まずなのでまだ余裕はあるが。
上級編(一部のコマンドを手動で実行)
DBへのアクセスはPythonを使っています。
つまり、エクセルからはコマンドとして呼び出しているに過ぎません。
分かる人はコマンド実行することでいくつかの機能を効率化できるでしょう。
コマンド実行機能の探し方
DBアップロード用スクリプト(DataBase3.py)の一番下に"ここから下コマンド分岐"と書いてあるところがあります。
そこに書いてある内容に合わせてコマンドとして実行することができます。

共通構文
コマンド実行時にはすべてのモードにおいて共通の構文があります。
以降の説明では以下の引数は省略して説明しますので、必ずこれを先に指定してください。
>start_db.bat -u <ユーザー> -s <ホスト> -p <パスワード> -m <モード>データベースアクセス関連
-u
ユーザー名を指定します-p
パスワードを指定します-s
ホストを指定します(localhostやIPアドレス)
モード選択
-m
実行するモードを選択します。
モードはこれ以降で紹介します。
CSVダウンロードコマンド
Excelシートで銘柄と足を選択してDLできましたが、コマンドが使えるならいちいちポチポチしなくてもいいんです!
構文
>start_db.bat -m getcsv --code <コード> --kind <足種>モードは"getcsv"で、コードと足を指定します。
追加で-fを使い好きなファイル名にできるほか、--span1と--span2を使うことで範囲を指定してダウンロードも可能です。

--spanで範囲指定をする場合は"yyyy-mm-dd hh:mm:ss"形式です。"""を忘れたり、時分秒を忘れるとエラーになります。

グラフプロットコマンド
グラフ表示もコマンドで可能です。モードは"plot"です。
CSVダウンロードと同じ形式で表示のスパンが必要です。
構文
>start_db.bat -m plot --code <コード> --kind <足種> --span1 <日時> --span2 <日時>
まとめ
いかがでしたか?
当初はとりあえずDLできればいいやと思っていたツールですが、気づいたらデータ管理機能や可視化にまで手を出してしまっています。
主に今回のDB化によりデータ分析系に強くなったと思いますので、この辺はアイディア次第で機能追加できそうです。
リンク集
Pythonのインストール方法
Excelを別プロセスで起動する方法
DifyのインストールとGeminiAPIキーの取得
ミニPCにLinuxをインストール
MySQLのインストール&初期設定(Windows)
いいなと思ったら応援しよう!
情報が役に立ったと思えば、僅かでも投げ銭していただけるとありがたいです。