RSSは昼休み中に停止したり、ザラ場中にも停止することがあるため、株てくてくではRSSが停止しているかどうかを判断して自動的に再起動しています。
(1)RSSの起動・再起動方法
1.RSS.EXEをShell関数で起動する。このときProcessIdが求まる。
2.API関数(OpenProcess 関数,フラグ:PROCESS_TERMINATE)で1で求めたProcessIdを指定し、Handleを取得する。
-------------------------
RSS動作中の状態
-------------------------
3.API関数(TerminateProcess 関数)で2で求めたHandleを指定し、プロセスを強制的に終了(RSS.EXEを停止)する。
4.API関数(CloseHandle 関数)でHandleを解放する。
RSSを再起動する場合、3以降後に1、2を行う。
'-------------
'<< API宣言 >>:
'-------------
' OpenProcess 関数
Private Declare Function OpenProcess Lib "KERNEL32.DLL" ( _
ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long _
) As Long
' TerminateProcess 関数
Private Declare Function TerminateProcess Lib "KERNEL32.DLL" ( _
ByVal hProcess As Long, _
ByVal uExitCode As Long _
) As Long
'CloseHandle
Private Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) As Long
(2)RSSの再起動タイミング
1.市場が開く前の処理(9:00前、昼休み、イブニングセッション前)
・8:50、12:20、16:20に気配値が更新(すべての銘柄のうち1つでも更新されていればOK)されているかをチェックし停止中ならなら再起動処理を行う。
・開始5分前に停止中(株てくてく(リアルタイム株価取得:RSS接続状態(未接続))なら再起動処理を行う。
2.市場が開いてからの処理
・個別銘柄のチェック
5分間更新がない場合(出来高、終値の更新時刻)、RSSの再起動は行わずその銘柄だけのddedisconnect後、ddeconnectのみを行う。
・全体のチェック
日経225先物、日経225先物ミニ、日経225をチェックし、3つとも2分間更新がない場合、再起動処理を行う。
注)再起動を行った場合、全銘柄のddeconnectを行う。