sigebo
excelの更新のたびにVBAを呼び出す仕組み
岡三RSSを使いだそうとしています。
サンプルシートで先物板情報を表示し、更新されることを確認できました。
やりたいことは、
寄り前と引け前の1分程度の間の先物のリアルタイム板情報をできるだけ高頻度にファイルに記録することです。
とりあえず想定される手続きは、
excelでFBOARD関数などで、データを取得。
excelの更新頻度(これに同期してFBORD関数が発行される?)ごとに、VBAの関数を呼ぶ(VBAからexcel関数を呼ぶのでなく)
呼ばれたvbaの関数では、前回受信値より更新されていれば、時刻と板情報をファイルに追加書き込みする。終了後直ちに戻れる。
というような処理を考えましたが、可能な処理でしょうか。
特にexcelからVBAを呼び出す仕組みはどんなことになるでしょうか。
もっと高速に取得記録できる方法があるでしょうか。
2023年04月07日
sigebo
過去の掲示板で、vbaのみでFBOARD関数を実行(可能かどうか不明ですが)していて、excelに戻らないと、実際にデータの受信が実行されないとの情報を見たのですが、excelでは表示をしなくてもよいという条件でも、そうでしょうか。
2023年04月07日
大野 了
sigeboさん、こんにちは!!
板情報を高頻度にファイルに記録されたいとのことですが、
こちらはどれくらいの『精度』が必要でしょうかー?
FBOARD関数の場合、更新頻度もですが『データの精度』も問題になりそうです。
処理速度と、精度を分けてご説明させていただければ思います!!
〇処理速度
VBAを利用されるということですので、考えられる最速な方法としては・・・
・ExcelにFBOARD関数を記述し、ワークシートの『Calculate』イベントでファイルへの書き込みの記述をする
岡三RSSがセルを更新したら、Excelの更新頻度に関係なくイベントが動作しますのでセルが更新された瞬間に
ファイルに落とすことができます。
・VBAでループ処理を行い、その中でDoEventsを使用しVBAと岡三RSSを同時に動作させながらVBA内でFBOARD関数を使用し
データを取得し、ファイルへの書き込みを記述する。
ワークシート関数としてFBORARDを記述しているとVBAの中でFBOARD関数が呼べるようになりますので、
そこでデータを取得しファイルに落とすことができます。
〇精度
FBOARD関数の場合、板の気配値と出来高の情報を複数のFBOARD関数を使用して取得を行います。
このため、複数の関数の実行タイミングを完全に同時にすることができず、
気配値、出来高など、その瞬間の板の情報というものが取得できない感じです。
他の関数にはCSV項目として、その瞬間の情報を1つの関数でまとめて取得する機能があるのですが、
FBOARD関数にはないため、POSITION関数等であれば動きが緩やかなため、対策はあるのですが
板情報は動きが速いため、正確な情報の取得は厳しいかもしれません。
とは言え、誤差があるとして若干と思われるので、使い方次第では問題はないレベルとは思います!!
>過去の掲示板で、vbaのみでFBOARD関数を実行(可能かどうか不明ですが)していて、excelに戻らないと、
>実際にデータの受信が実行されないとの情報を見たのですが、excelでは表示をしなくてもよいという条件でも、そうでしょうか。
FBOARD関数は、その関数をワークシート関数として記述しているのであれば、
VBAから実行して値を取得することは可能です!!
2023年04月08日
sigebo
大場様 ご丁寧なご返事ありがとうございます。
精度の問題の存在わかりました。実際板情報をどのように具体的に利用(計算)するか、定かではないのですが、
目的は寄り付きの値段を予測するためで、どのように板情報を使うかということです(質問ではありません)。
ご提案頂いた内容を100%理解してはいないで別な質問をするのは申し訳なく思いますが、
その後気が付いたことなのですが、次のような方法は、ご提案と比較して好悪はどうなりますか。
必ずしもVBAで逐次監視するのでなく、ワークシートに板が更新される度に、シートの最下行に追加し、
寄り付いた後に、おもむろに、全行のデータをファイルに書く。
板番号は列方向に配置する。全量は1分程度(30秒でも可)で十分なので、十分シートに展開され得ると予想します。実際観測していると、1秒にせいぜい数回程度のようなので。
同じことを大引けでも行うのですが、まだ調べていないのですが、
板寄せ時間中に更新される板情報も、同様に取得できるのでしょうか。
2023年04月08日
大野 了
sigeboさん、こんにちは!!
なるほど!!
寄り付きの価格を予測されたいだけなんですねー
>必ずしもVBAで逐次監視するのでなく、ワークシートに板が更新される度に、シートの最下行に追加し、
>寄り付いた後に、おもむろに、全行のデータをファイルに書く。
>板番号は列方向に配置する。全量は1分程度(30秒でも可)で十分なので、十分シートに展開され得ると予想します。実際観測していると、1秒にせいぜい数回程度のようなので。
そうですねー
このやり方でも、データ量共に自分も大丈夫と思います!!
>同じことを大引けでも行うのですが、まだ調べていないのですが、
>板寄せ時間中に更新される板情報も、同様に取得できるのでしょうか。
はい、プレオープニング、プレクロージング共にいた情報はリアルタイムで更新されます!!
2023年04月10日
sigebo
ご返事がおそくなりすみません。
現在シートの下方に転記する方法で検討しています。
2023年05月25日