setup_monitoring2 - terukusu/auto-trading-support-tools GitHub Wiki
ポジション新規/決済、価格、スプレッド、Pingの異常検知を設定
概要
再起動やMT4/5の監視を設定 ではVMインスタンスやMetaTraderが動き続けているかという、 どちらかというとインフラ寄りの部分の監視を設定しましたが、 ここではポジション、値動き、スプレッド、PingといったMetaTraderの内側の監視を設定します。
- ポジションの新規建て、決済の検知
- スプレッド異常の検知
- 急激な値動きの検知
- MetaTrader ⇔ ブローカー間のPing値異常の検知
※ いまのところMT4とMT5のヘッジモードにしか対応していませんがが、近々MT5の非ヘッジモードにも対応したいと思います。
手順
MetaTrader内部の情報をファイルに書き出すEAを可動させる
- VMインスタンスへSSHログインしたターミナルから以下を実行
$ ~/auto-trading-support-tools-master/setup_monitoring_ea.sh
-
MetaTrader の左上の「気配値表示」から通貨ペアを右クリック→「チャートを表示」を選んで、もう一つチャートを表示する。 売買用のチャートと同じ通貨ペア同じ時間枠にしておくのがオススメ。
-
MetaTrader の左中段の「ナビゲーター」→ 「エキスパートアドバイザー」を右クリック →「更新」を選ぶ
-
「エキスパートアドバイザー」から「TerminalMonitoring」を右クリック→「チャートに表示」を選ぶ。 設定ダイアログが表示されるが、今は何も設定しなくてOK。
-
これで「2.」で表示したチャートに TerminalMonitoring が設定され、データファイルにモニタリングデータを書き出している状態。
- モニタリングデータが書き出されていることを確認すために、VMインスタンスへSSHログインしたターミナルから以下を実行
$ ~/auto-trading-support-tools-master/mtctl.sh monitor land-fx
- ↓ そうするとこのように表示されるので、しばらく眺めて15秒毎に一行ずつ増えていっていることを確認する。 確認したら Ctrl + C で終了する。
=================================
loading monitoring data from file: /home/teru/.wine/drive_c/Program Files/Land-FX MetaTrader 4 Terminal/MQL4/Files/terminal_monitoring.csv
press Ctrl+c to stop.
=================================
1555231930,1555113299,111.998,112.027,29,139193,0.0100,USDJPY
1555231945,1555113299,111.998,112.027,29,139193,0.0100,USDJPY
1555231960,1555113299,111.998,112.027,29,139193,0.0100,USDJPY
1555231975,1555113299,111.998,112.027,29,139193,0.0100,USDJPY
以降、何か異常を検知したり、ポジションの新規や決済が有れば通知されます。
↓ crontab でいうとこの辺りのスケジュールがこの監視に該当しています
* * * * * sleep 10; wrapper.sh "$TARGET" check_order.sh ← ポジションの新規・決済
* * * * * sleep 40; wrapper.sh "$TARGET" check_order.sh ← ポジションの新規・決済
* * * * * sleep_random.sh; wrapper.sh "$TARGET" check_monitoring.sh ← モニタリングデータ書き出しが継続しているか
* * * * * sleep_random.sh; wrapper.sh "$TARGET" check_ping.sh ← Ping 異常
* * * * * sleep_random.sh; wrapper.sh "$TARGET" check_price.sh ← 値動き異常
* * * * * sleep_random.sh; wrapper.sh "$TARGET" check_spread.sh ← スプレッド異常