MT5用EA TC-ZoneRecovery
前回では、エントリーされない現象についていろいろ検証してみました。
今回は、リアルトレードと検証結果が違っていたのでその調査を行っていきたいと思います。
DOW リアルトレード:
ローカルにあるDOWのデータで検証した結果:
実際のティックデータを使用して検証しているのにかかわらず獲得PIPSも違いますし、最後のトレードは損切りで終了しています。
考えられる要因としては
- CPUの使用率が高い
- メモリーの使用率が高い
- ディスクの読み込み、書き込みが遅い
- ネットワーク環境が悪い
- 取引サーバーとの接続状況
- EAのバグ
- 取得データの差異
EAを動作している環境はこちらになります。
ちなみにこちらは消費電力はわずか10Wで24時間つけっぱなしにしても、1か月で200円程度になります。
電気代・電気料金の計算
EAを複数稼働するには十分な環境になります。
FX(MT4)用と公言しているVPSであれば問題と思いますが、普通のVPSではたまにフリーズするぐらいは
問題ないだろうとのスタンスなので、その際にエントリーされないことは考えられます。
FX業者が提供している無料や有料のVPSやFX用と記載してあるVPSを使用することが無難だと思われます。
関連記事:なぜVPS環境で動作が違うのか
CPUの使用率が高い
タスクマネジャーでCPUの使用率を確認しました。
使用率は低い状況でした。
メモリの使用率が高い
タスクマネジャーでメモリーの使用率を確認しました。
こちらには監視ツール用として仮想マシンが動作しているので比較的に高い状況でしたが問題ありませんでした。
プロセス単位で見てみました。以下がMT5で使用されているCPUとメモリーの使用状況でした。
ディスクの読み込み、書き込みが遅い
タスクマネジャーでディスクの状況を確認しました。こちらの環境はSSDを搭載しています。
全く問題ない状況でした。
ネットワーク環境が悪い
タスクマネジャーでネットワークの状況を確認しました。
SPEEDTEST で計測してみます。
ダウンロードおよびアップロードの速度は60Mbpsほどなので問題ありませんでした。
タスクマネジャーでの確認は一時的なパフォーマンスの確認になります。
実際のパフォーマンスを確認するにはパフォーマンスモニターを数日間回して確認したほうが確実になります。
もし環境に不安がある場合にはこちらを参照して使用しているマシンのパフォーマンスを確認してみてください。
【Windows10 高速化 重い】 遅いPCを早くする方法 (マイクロソフト認定エンジニアが教えます)
パフォーマンスを記録する
パフォーマンスモニターを使いたおす
取引サーバーとの接続状況
MT5右下のネットワーク状況から確認しました。
パケットロスは非常に低い状況でした。ピングは240msほどでした。(1000msで1秒)
これはサーバとの接続は遠方なのでこのぐらいの遅延は普通になります。
念のためProcess Monitorにて確認しましたがすべてSucessで接続には問題ありませんでした。
もしネットワークが不安な環境では以下のメッセージが繰り返し出力されます。
Network '26984122': connection to XMTrading-MT5 lost
Network '26984122': authorized on XMTrading-MT5 through Access Server JP (ping: 232.85 ms, build 3320)
EAのバグ
損切りされたトレードとそれ以外の利確されたトレードでは当然処理プロセスが異なっています。
しかし、その以外のトレードでは損切りされていない、損切りされるトレードからいきなり他の処理になることはないのでバグの可能性は低いと考えております。
取得データの差異
調査にあたりまず損切りされたトレードから細かく見ていきました。
検証時のログ
2022.12.20 20:50:00 BB MA Logic Buy entry:32953.52 ADX:28.8
2022.12.20 20:50:00 Buy() method executed successfully. Return code=10009 Request completed (done at 32956.02) Ticket:34 Spread:250
エクスパート
03:49:57.462 TC-ZoneRecoveryVer4.0 (US30Cash,M5) BB MA Logic Buy entry:32953.52 ADX:28.8
03:49:57.822 TC-ZoneRecoveryVer4.0 (US30Cash,M5) Buy() method executed successfully. Return code=10009 Request completed (done at 32960.96) Ticket:151060631 Spread:250
操作ログ
03:49:57.468 Trades '70268779': market buy 0.3 US30Cash
03:49:57.813 Trades '70268779': deal #157918077 buy 0.3 US30Cash at 32960.96 done (based on order #151060631)
03:49:57.821 Trades '70268779': order #151060631 buy 0.3 / 0.3 US30Cash at 32960.96 done in 353.778 ms
検証時のログを見るとサーバ時間20:50にBidの価格、32953.52で買い、スプレッド分プラスしたAskの価格32956.02でエントリされています。
(32956.02ー32953.52)/0.01=250
一方、リアルトレードでは、日本時間03:49:57にBidの価格、32953.52で買い注文が出され353.778 ms後に、Askの価格32960.96でエントリされています。
(32960.96ー32953.52)/0.01=744
なんと744ポイントの違いでエントリーされていました。検証との差は494ポイントになります。
このために、検証時では利確となっていましたが、リアルのトレードでは損切りの結果となってしまいました。
※本来であれば03:50:00のエントリーになります。この差はパソコンの時間ずれのためになります。
ちなみに検証の際、サーバとの遅延はサーバへの最後のpingの値を使用しています。
他のトレードではどうだったのか確認してみました。それが以下の表になります。
18回のうち、スプレッド分でエントリーされたのは5回のみ、3回はスプレッド分より少なくトレーダーには良い方向にエントリーされていますが残りの10回はトレーダーにはよくない方のエントリーとなっています。
■成り行き注文から指値に変える
■スプレットの少ないFX業者にかえる
■ボラリティーの低い銘柄にかえる
などになるかと思います。