- 締切済み
楽天RSSからエクセルVBAを使用し確実にデータ受信する方法に関して質問です。
楽天のRSSとGMO証券のAPIを使用し、エクセルVBAにて自動売買をしているのですが、RSSのデータを受信出来ていない事が多々あり非常に困っております。 どういう事かと申しますと、3台のPCで自動売買エクセルを起動し1秒ごとに銘柄情報を監視し、条件を満たした銘柄を売買すると言うものなのですが、肝心のデータがRSSから受信出来ませんと、売買条件を満たせ無い為、売買出来ないと言う状況です。 3台起動していても、平均すると1.2台程度の稼動率かと思います。 そこで、エクセルVBAを使用し、RSSから確実にデータ受信する方法をご存知の方がいらっしゃいましたらアドバイス頂ければと思います。 個人的には、データ受信要求を投げてから、ある一定時間以上応答が無い場合、再度RSSからデータ受信要求を投げる。 もしくは、RSS.exeを再起動すると言う方法になるかと思います。 エクセルVBAにて現状の改善方法をご存知の方、宜しくお願いいたします。
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- anotherone
- ベストアンサー率54% (35/64)
回答No.1
お礼
anotherone さん 丁寧なアドバイスありがとうございます。 問題点がうまく伝わっていないようでしたので、再度、記載させて頂きます。 9時にマーケットがオープンしその直後にRSS関数のセルに値が入り更新されると言うのが通常の動きですが、今の問題は9時を過ぎてもRSS関数のセルの値が一切変わらず、更新されないと言う事が問題の部分となります。 原因は、エクセルハング、もしくは、RSS.exeからデータ配信がされない(RSS.exeのハング)もしくは、RSS内部の処理でタイムアウト値が設定されておらず、データ受信待ちのまま待機し続けていると言った所かと思います。 なんとなくの予想は可能ですが、実際何が原因で今の問題が発生しているか全く分からない為、問題の切り分け、及び、対処を行いたいと思っております。 問題を切り分ける為に、VBAにて、DDEサーバ(RSS.exe)、及び、DDEクライアント(エクセル)の状態を監視し、ハングしている方を再起動などの対策をとりたいのですが、VBAでどのようにして状態監視をすれば良いのか分からない為、問題の切り分けが出来ていないのが現状です。 上記の問題切り分けの為にDDEサーバ、DDEクライアントの監視方法等ご存知であれば、教えて頂けると幸いです。
補足
>>続きです。 anotherone さんのアドバイスを元にエクセルの修正を行い、不要な処理を除くよう対策をさせて頂きたいと思います。 今までは、1秒ごとにVBAにて監視(300銘柄×11アイテム=MAX:3300セル)しており、CPUリソースの消費率は、20~30%程度でしたので、CPUネック、もしくは、エクセルがハングしてデータ受信出来ていないと言う事は想定外でしたが、アドバイス頂いたように不要な監視セルを削除したり、不要な処理を省く事で動きは以前よりかなり軽くなったように思いますので、この対策で、エクセルハングは起こり辛くなったように思います。 ちなみに、自分は、データベースエンジニアをしており、VBAやVB.netは最近勉強しはじめたばかりですので、難しい事は分かりません(Win32API使う等)が、基本的なプログラミングの部分は問題無いと思います。 また、最終的には、VB.netとデータベースと連携したものを作ろうと考えておりますが、まずは、自分の思ったようにプログラムが動く事が最低条件かと思っておりますので、この問題をまずは解決したいと思っておりますので、お手数をおかけ致しますが、ご協力よろしくお願い致します。