レート収集ユーティリティ(FX)自動再起動

  • レート収集ユーティリティでレートの表示がストップし、レートが収集できなくなる場合があります。これを回復する方法です。

原因

「高速FX LIVE」が(自動的にあるいは手動でも)再起動した場合に、Excelでのレートの表示が停止するようです。

前提

  • 設定で、「接続が切れたときに自動で再起動する」にチェックが入っている。

    設定ウインドウ

「高速FX LIVE」が自動的に再起動する順序

  1. インターネットの接続が切れる。
  2. 右下隅の緑が赤に完全になって、次に「オンライン」という表示が「オフライン」になる。 オンライン1
    オンライン2
    オンライン3
    オンライン4
  3. インターネットの接続が回復する。
  4. 右下隅が緑に変わり、「オンライン」の表示に変わる。
  5. [警告]のダイアログが表示されて、「今すぐ再起動する-30」とカウントダウンがスタートする。

    警告ダイアログ

  6. カウントダウン終了後、FXトレードLIVEは再起動する。

実験の結果

  • PCとルータ間が切断 → オフラインになる前に接続が回復 → 自動再起動がされない →
    Excelでのレート表示も回復
  • PCとルータ間が切断 → オフラインなってから接続が回復 → 自動再起動 →
    • Excelでのレート表示は停止
    • また、DDEの数式のあるセルをダブルクリックし選択してEnterを押すと、表示が回復する
  • オンラインの状態で、「高速FX LIVE」を手動で閉じて再び起動した場合 → 
    • Excelでのレート表示も停止
    • ただし、DDEの数式のあるセルをダブルクリックし選択してEnterを押すと、表示が回復する

[警告]のダイアログを閉じた場合

  • [警告]のダイアログはEscキーを押すことで消すことが出来ます。インターネットの接続が一端途切れてから再接続するまでが短期間の場合で確認したところ、Escキーで閉じた時、自動再起動は行われませんが「高速FX LIVE」の接続は回復しました。また、Excelでのレート表示も回復しました。
    但し、インターネットの接続が一端途切れてから長時間たった場合は判りません。

設定で「接続が切れたときに自動で再起動する」にチェックを入れない場合

確認した範囲では、設定で「接続が切れたときに自動で再起動する」にチェックを入れない場合なら、インターネットの接続が切断→回復後、自動的に再起動しないので、Excelでのレート表示は止まりませんでした。ただし、[警告]のダイアログは表示されます。

警告ダイアログ

警告の文章では、「データの一部が完全に受信されなかった可能があります。」とあり、データ取得に支障が出る可能性もあります。

UWSCで監視

スケジュール設定

UWSCで、「高速FX LIVE」が起動するのを監視し、起動用スクリプトを実行します。

スケジュール設定

UWSCのスケジュール設定で、rate_open.uwsを指定します。

タイマー設定

タイマー設定

UWSCのタイマー設定で、

  • Titleを、STATUS
  • Classを、TFORM_STATUS
  • 「別プロセスで実行」にチェックを入れます。UWSCのHELPによると「スクリプト実行中でも起動する事」ができるそうです。

にします。

以上の設定で、「高速FX LIVE」が起動する途中でStatusのウインドウが表示されたら、rate_open.uwsが実行されます。

Status

但し、次のStatusのウインドウが続けて表示されるので、rate_open.uwsも多重起動します。既にrate_open.uwsが実行されていたら、多重起動した方のrate_open.uwsは終了するようにします。

Status

「高速FX LIVE」が起動する途中ですから、「高速FX LIVE」の再起動だけで無く、最初に起動する時もこのスクリプトが実行されます。

レート収集ユーティリティ 起動用スクリプト

rate_open.uws として保存して下さい。

メール送信を行うなら、mail.uwsを同じフォルダに配置して下さい。

// スクリプトが多重起動した時、終了する。
id = GETID("UWSC - "+GET_UWSC_NAME, "TApplication", 0.2)
IFB id > 0 THEN
	EXIT
ENDIF

// ファイル名とファイルへのパスを設定して下さい。
ファイル名 = "rate_1_4.xls"
パス = "C:\"

// ファイルが開かれていたら閉じる
id = GETID(ファイル名,"XLMAIN",0.1)
CTRLWIN(id, CLOSE2)

// 「高速FX LIVE」ウインドウが表示されるまで待機する。
id2 = GETID("Fx Client","TForm_Main",0.1)
現在時刻秒 = GETTIME(0)
WHILE (id2 < 0) AND (GETTIME(0) < 現在時刻秒 + 60)	//60秒間で中断
	id2 = GETID("Fx Client","TForm_Main",0.1)
WEND

// ファイルを開く
SLEEP(5)	//念のため5秒待機。適宜調節して下さい。
id2 = GETID("Fx Client","TForm_Main",0.1)
IFB id2<>-1 AND GETID(ファイル名) < 0 THEN
	Excel = CreateOLEObj("Excel.Application")
	Excel.Visible = True
	Excel.WorkBooks.Open(FileName:=パス + ファイル名, readOnly:=False)
ENDIF

// メール送信
CALL mail.uws
mailfrom = example@example.com""	// 送信元
mailto = "example2@example.com"		// 送信先
subject = "レート収集ユーティリティ(FX)を起動"
body = "FXトレード LIVEが起動・再起動したため、レート収集ユーティリティ(FX)を起動・再起動しました。"
sendMail(mailfrom,mailto,subject,body)
  1. // スクリプトが多重起動した時、終了する。
    Statusウインドウが続けて表示されるため、このスクリプトも続けて起動します。既に同じスクリプトが実行されていたら終了します。
  2. // ファイルが開かれていたら閉じる
    まず、rate_1_4.xlsが表示されていたら閉じます。
    Excelアプリケーションのウインドウ内最大にrate_1_4.xlsが表示されている必要があります。ウインドウタイトルを取得して判断しているためです。
  3. // 「高速FX LIVE」ウインドウが表示されるまで待機する。
    Statusのウインドウが閉じられ、「高速FX LIVE」のウインドウが表示されるまで、待機します。最大60秒待機し、表示されなかったら、Excelファイルを開きません。
  4. //ファイルを開く
    「高速FX LIVE」のウインドウが表示されたのを確認してから、念のため5秒(適宜調整して下さい)待ち、Excelアプリケーションを別プロセスで起動してファイルを開きます。

Fx Client

id2 = GETID("Fx Client","TForm_Main",0.1)

ウインドウタイトルは「高速FX LIVE」ですが、Windowsの内部処理では「Fx Client」として認識されているようです。


確認したバージョン

バージョン
で確認しました。

動作条件

Excel 2007 + Windows 7(64bit)で開発・確認しています。


使用規約

  • このソフトウェアを使用したことによる一切の損害について作者は責任を負いません。

履歴

  • 2010-02-03 「高速FX LIVE」に対応。「プロセス数が増加する現象」は無くなったようです。
  • 2009-12-21 メール送信機能を追加。
  • 2009-12-03 rate_open.uwsを修正
  • 2009-11-23 掲載