setup_monitoring2 - terukusu/auto-trading-support-tools GitHub Wiki

ポジション新規/決済、価格、スプレッド、Pingの異常検知を設定

概要

再起動やMT4/5の監視を設定 ではVMインスタンスやMetaTraderが動き続けているかという、 どちらかというとインフラ寄りの部分の監視を設定しましたが、 ここではポジション、値動き、スプレッド、PingといったMetaTraderの内側の監視を設定します。

  • ポジションの新規建て、決済の検知
  • スプレッド異常の検知
  • 急激な値動きの検知
  • MetaTrader ⇔ ブローカー間のPing値異常の検知

※ いまのところMT4とMT5のヘッジモードにしか対応していませんがが、近々MT5の非ヘッジモードにも対応したいと思います。

手順

MetaTrader内部の情報をファイルに書き出すEAを可動させる

  1. VMインスタンスへSSHログインしたターミナルから以下を実行
$ ~/auto-trading-support-tools-master/setup_monitoring_ea.sh
  1. MetaTrader の左上の「気配値表示」から通貨ペアを右クリック→「チャートを表示」を選んで、もう一つチャートを表示する。 売買用のチャートと同じ通貨ペア同じ時間枠にしておくのがオススメ。

  2. MetaTrader の左中段の「ナビゲーター」→ 「エキスパートアドバイザー」を右クリック →「更新」を選ぶ

  3. 「エキスパートアドバイザー」から「TerminalMonitoring」を右クリック→「チャートに表示」を選ぶ。 設定ダイアログが表示されるが、今は何も設定しなくてOK。

  4. これで「2.」で表示したチャートに TerminalMonitoring が設定され、データファイルにモニタリングデータを書き出している状態。

  1. モニタリングデータが書き出されていることを確認すために、VMインスタンスへSSHログインしたターミナルから以下を実行
$ ~/auto-trading-support-tools-master/mtctl.sh monitor land-fx
  1. ↓ そうするとこのように表示されるので、しばらく眺めて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     ← スプレッド異常

次のステップ


Topへ戻る