先日の強烈な上昇トレンド+雇用統計に伴う相場の荒れはすごかったですね~
その影響もあってか、スリップページによると思われるEAの決済エラーがまた発生していました。しかもたちが悪いことに、ログを見ても何も残ってない。。
1.そもそもスリップページとは
そもそもスリップページとは何かというと、毎分毎秒と変動する相場の中で、自分たちは注文を出しているわけなのですが、この注文を出してから約定するまでに 、相場って当然動きますよね? ドル円で言うと自分が注文を出したタイミングでは、101.500円だったのに、約定レートが101.499円や101.480円になってたりしますよね。これをどの程度まで許容できますか?という数値がスリップページです。
EAで言うと初期値では3ポイント(3桁の業者だと0.3ピップ=0.001円)に設定されていると思います。
※1ピップ=0.01円
2.EAの決済が上手く動作しない原因
前回の記事では、スリップページを超える動きがあり決済が上手くいかない場合は、エラーコード138が発生するとのことでしたが、ログを見てもエラーが発生していなかったのでどうして?
と困惑しましたが、他サイトで見てみると、スリップページによる決済不具合については、エラーコードが発生しないとの記述もありました。
結局どっちなんだい!ということですが、、、調べてもよくわからず仕舞いでしたので、とりあえず、某サイトの情報を信じてスリップページを大きくするのと一応エラー回避のプログラムを入れて様子を見てみようと思っています。
荒れ相場がない限りはたぶん大体うまくいくのでしょうが。。
3.対処方法
前述した通り、結局確かな原因はわかりませんでしたので、とりあえずスリップページ(許容)を増やすのとエラー回避のプログラムを以下の通り入れました。(エラーコードが出てないので、エラー回避を入れても意味はないかもしれませんが、、、)
エラーコードを表示するコードの下に以下のコードを加えました。
Sleep(100); //100秒待機
RefreshRates(); //価格を更新
if(!OrderClose(OrderTicket(),OrderLots(),MarketInfo(Symbol(),MODE_ASK),slip,White)){
Print("OrderClose error2",GetLastError()); //再注文、通らなければエラーコードを返す