さまざまなEAのプログラム修正のリリースにつきまして

昨日、さまざまなEAのプログラム修正をリリースさせていただいた。

もともとは、ブローカーから取引のエラーが通知されたときの救済処理を入れているが

その、対策をもう少し高信頼化させたかったのである。

MT4には致命的なバグ?が存在する。

 

分かっている一例ではあるが、ポジションを建てる注文を出し、ブローカーから応答が一定時間無い

場合、通信用語で【タイムアウト】というコードがEAに返却される。

エラーコードで言うと、128というコード。

このコードが発生したあとは非常に厄介だ。

プログfラムで、このコードをエラーとみなして、リトライ、つまりもう一度ポジションを建てようとすると、

次の注文は通り、ポジションが建つが、なぜか、EAにはポジション建てが失敗というエラーが返却されるのである。

しかもこのポジションは、マジックナンバーも着かない変なポジションなので、EAがそのポジションを認識できない

という、とても厄介なオマケつきのポジションになる。

そうなると、ポジションを建てるのに、無限ループを組んでいるEAなんかは一巻の終わり。

証拠金が無くなるまでポジションを建て続けるのである。

これの解消には、一度MT4を再起動したりブローカーの様子を確認する必要がある。

この対策のために私のEAでは、エラー128が発生すると、売買を停止する機能を実装してある。

しかし、この対策以外にも未知のバグや状態が発生する可能性も否めない訳である。

 

私のEAでは注文時に最大100回リトライする仕様になっているが、これを10回に変更したのが今回の修正である。

 

ブローカーBusyや、価格が合わないなどのエラーは救済する必要があるが、これらは過去の経験上10回もリトライすれば

注文は成功する。なのでこの措置を入れておくことにしたのである。

 

未知のバグがあっても最大10ポジションまでしか取らないようにする。

 

EAの開発はこういうところが難しい。。。。。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Leave a Comment