VPSサーバ上でMetatrader4を運用していると、WindowsUpdateや運用側のメンテナンス等でOSの再起動が発生し、思わぬことでMetatrader4が停止してしまうことがある。
EAを安定稼働させるため、Metatrader4のプロセスを定期的に監視し、プロセスが起動してなかったら自動的に起動する仕組みを考えた。
VPSサーバはWindows OSなので、まずはバッチプログラムでMetatrader4のプロセスを監視するプログラムを書いた。
簡単なプログラムだが、プロセスが起動してなかったら、自動的に起動する処理を実装した。
@echo off
rem
rem Metatrader4のプロセスをチェックし、
rem 存在していなかったらプロセスを起動
rem
rem ぶしちゃ
rem ★起動させたいMT4の実行ファイル名とパスを設定★
set APP_NAME=terminal.exe
set APP_FOLDER=C:\Program Files (x86)\FXTF MT4\
rem プロセスが起動しているかどうかを、tasklist コマンドでチェック
for /f %%i in ('tasklist /FI "IMAGENAME eq %APP_NAME%" 2^>^&1') do (
if /i %%i == %APP_NAME% (
echo Metatrader4は既に起動済みです。
goto ENDLOOP;
)
)
rem 起動してなければ起動する
echo Metatrader4を起動します。
start " " "%APP_FOLDER%%APP_NAME%"
rem 起動済みであれば何もせずに終了
:ENDLOOP
このバッチプログラムを、タスクスケジューラを使って定期的に実行してやれば、Metatrader4が停止しても、自動的に起動してくれるから安心。
<参考:タスクスケジューラの使い方>
https://qiita.com/Richard_Roe/items/44e16841f16ee40c6113
http://www.atmarkit.co.jp/ait/articles/1305/31/news049.html