ビギナーさんでも見ていて良く分かることがあります。
スキャルピングEAでのこのような問題で目に見て解る「おい!
」ってことを題材にして意見と対応を書きましょう。
こんなことはありませんか?
ターミナルの操作履歴で、このようになっている場合があります。
05:42:45 'XXXXXXXX': order sell 0.50 USDJPY opening at 95.724 sl: 96.224 tp: 95.640 failed [Trade timeout]
05:39:27 'XXXXXXXX': request was accepted by server
05:39:26 'XXXXXXXX': instant order sell 0.50 USDJPY at 95.724 sl: 96.224 tp: 95.640
サーバーが受け入れてから、3分経って、Trade timeout(128番)エラーが返ってきてます。
この3分間、MetaTrader自身はずっとサーバーの応答を待っています。
もちろん、aririn研究員のおっしゃるように、コネクションはひとつだけなので、他のEAの注文も受け付けません。
しかし、この3分間に他の同一アカウントのMetaTraderからオーダーが入った場合はどうなるか?
そっちは通ることが多いです。
MetaTrader毎に1EAが優位であることがおわかりいただけると思います。
request was accepted by server メッセージが出て、15秒もして完了のメッセージが来なければ、
大体3分待たなければならないです。この間他のEAは注文停止状態です。
request was accepted by server メッセージが出て、何秒返事が来なかったら注文を取りやめて・・・というプログラムはEAの中だけでは出来ません。
面白い体験談もあります。
FXCM-NYに、オフクォートとタイムアウトの苦情の電話をしたことがあります。そのときにちょうど電話中にrequest was accepted by serverが出たので、「どうしたらいいでしょうか?」と尋ねたら、「MT4を再起動して下さい
」と言われました。
再起動して、「注文は入っていませんねぇ」と言いましたら、「はい。これでOKです
」ですって・・・。
そのあと『Trade timeoutエラー』も来ませんでした。
ということは、これはサーバーの問題でもあり、MetaTraderの問題でもあるということです。
aririn研究員の書き込みの中で
>FAP TURBO では明らかに未対策で、1EA単体と4EA同時並行した運用結果の差異は2、3倍ほど出ました
とありますが、おそらくこの影響も大きいと思います。
注文順番待ちにしている可能性はあっても、その場合のスリップの記述もきついのかもしれませんね。
注文が、いや通信が重複しないように対策を極限まで施そうとすると大変なことになります。
CPUとEAを一対にする。電話回線をEA分。
なんてね。
でも3分は大きいですから、EAの数分MetaTradeを立ち上げることはとても有効となります。