アプリ版:「スタンプのみでお礼する」機能のリリースについて

楽天のRSSとGMO証券のAPIを使用し、エクセルVBAにて自動売買をしているのですが、RSSのデータを受信出来ていない事が多々あり非常に困っております。

どういう事かと申しますと、3台のPCで自動売買エクセルを起動し1秒ごとに銘柄情報を監視し、条件を満たした銘柄を売買すると言うものなのですが、肝心のデータがRSSから受信出来ませんと、売買条件を満たせ無い為、売買出来ないと言う状況です。

3台起動していても、平均すると1.2台程度の稼動率かと思います。

そこで、エクセルVBAを使用し、RSSから確実にデータ受信する方法をご存知の方がいらっしゃいましたらアドバイス頂ければと思います。

個人的には、データ受信要求を投げてから、ある一定時間以上応答が無い場合、再度RSSからデータ受信要求を投げる。
もしくは、RSS.exeを再起動すると言う方法になるかと思います。

エクセルVBAにて現状の改善方法をご存知の方、宜しくお願いいたします。

A 回答 (1件)

先にダメになっているのは RSSの方なのでしょうか


もし毎秒受信して たくさんのセルを更新して たくさん計算するなら
Excel側は処理できているのでしょうか
Excelが先にギブアップして 
RSSが送っているデータを受信できない 
受信処理をExcelができない ということはありませんか

シートとコードを見せてほしいところですが
いろいろ秘密もたくさんあるかもしれないので 
もし可能なら見せてください
下記は参考です

シートの更新の方法でExcelの負荷が変わります
http://officetanaka.net/excel/vba/speed/index.htm
http://www.microsoft.com/japan/windowsserver2003 …

単純には セルを配列として取り込んで 計算は配列で行い
http://officetanaka.net/excel/vba/speed/s11.htm
極力セルにアクセスする回数を減らし負荷を下げます
ここまでくると 
シートに意味があるか シートは必要か ということになります 
シートに書くのをやめればコード上の処理だけになります 
自動運転ならシート表示は最低限でいいはずです

もし可能なら データはExcelではなく 外に置きます
シートにデータを置かないで下さい シートは複雑で多岐にわたる
属性を持っているため使うとそれだけで負担になります
MySQLなどDB またはTXT,CSVなどを置き場所にして
必要なデータは外に 処理/判断はコードで
表示は最低限 ユーザフォームやHTMLやExcel以外にします

もし可能なら Excelから離れて VBS WSH HTA を使用して
VBAの知識を使って 別のものを作成することをおすすめします
Excelの負担を回避してVBAの資産を有効利用できる良い方法だと思います
くわしい内容が分かれば詳しいサンプルを用意しますが
どの程度の処理内容が理解可能かによります
VBAはくわしいのでしょうか 

この回答への補足

>>続きです。
anotherone さんのアドバイスを元にエクセルの修正を行い、不要な処理を除くよう対策をさせて頂きたいと思います。

今までは、1秒ごとにVBAにて監視(300銘柄×11アイテム=MAX:3300セル)しており、CPUリソースの消費率は、20~30%程度でしたので、CPUネック、もしくは、エクセルがハングしてデータ受信出来ていないと言う事は想定外でしたが、アドバイス頂いたように不要な監視セルを削除したり、不要な処理を省く事で動きは以前よりかなり軽くなったように思いますので、この対策で、エクセルハングは起こり辛くなったように思います。

ちなみに、自分は、データベースエンジニアをしており、VBAやVB.netは最近勉強しはじめたばかりですので、難しい事は分かりません(Win32API使う等)が、基本的なプログラミングの部分は問題無いと思います。
また、最終的には、VB.netとデータベースと連携したものを作ろうと考えておりますが、まずは、自分の思ったようにプログラムが動く事が最低条件かと思っておりますので、この問題をまずは解決したいと思っておりますので、お手数をおかけ致しますが、ご協力よろしくお願い致します。

補足日時:2007/10/18 03:24
    • good
    • 1
この回答へのお礼

anotherone さん 丁寧なアドバイスありがとうございます。

問題点がうまく伝わっていないようでしたので、再度、記載させて頂きます。
9時にマーケットがオープンしその直後にRSS関数のセルに値が入り更新されると言うのが通常の動きですが、今の問題は9時を過ぎてもRSS関数のセルの値が一切変わらず、更新されないと言う事が問題の部分となります。

原因は、エクセルハング、もしくは、RSS.exeからデータ配信がされない(RSS.exeのハング)もしくは、RSS内部の処理でタイムアウト値が設定されておらず、データ受信待ちのまま待機し続けていると言った所かと思います。

なんとなくの予想は可能ですが、実際何が原因で今の問題が発生しているか全く分からない為、問題の切り分け、及び、対処を行いたいと思っております。
問題を切り分ける為に、VBAにて、DDEサーバ(RSS.exe)、及び、DDEクライアント(エクセル)の状態を監視し、ハングしている方を再起動などの対策をとりたいのですが、VBAでどのようにして状態監視をすれば良いのか分からない為、問題の切り分けが出来ていないのが現状です。

上記の問題切り分けの為にDDEサーバ、DDEクライアントの監視方法等ご存知であれば、教えて頂けると幸いです。

お礼日時:2007/10/18 03:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています