MetaTrader4 Proactiveが発表され、暫く時間がたちました。従来のMetaTrader4からMetaTrader4 Proactive対応の証券会社に変えたことで、「今までのEAが突然動かなくなった。」などのお便りが多数寄せられています。 どうしたらEAが動くのかというご質問に、今回は答えさせて頂こうと思います。
なぜ突然EAが動かなくなったのでしょうか。それはMetaTrader4 Proactiveの仕様に原因があります。 決してMetaTrader4 Proactiveの性能の問題ではなく、「ポジション取得時にリミットとストップを設定できない。」という仕様に引っかかっていたのです。
MetaTrader4 Proactiveでは、ポジションを取得すると同時にリミットとストップを設定していると、エラーが発生し、注文がキャンセルされる仕様となっています。 以前のEAでは、ポジション取得と同時にリミットとストップの設定がされているものがほとんどです。その為に今まで動いていたEAがMetaTrader4 Proactiveになった途端に突如ポジションを取得しなくなる現象が起っています。 つまりポジションを取得する時には、ストップとリミットを設定していてはいけません。
もし、設定されている場合、以下の画像のようなエラーメッセージが大量に表示されます。
この画像に表示されている、「OrderModify error 130」とは、設定することが出来ない数値のストップを設定した場合に表示されます。
このエラーはポジションを取得すると同時にリミットとストプロスを設定する以外でも、各証券会社が定めている、指値を入れることが出来る最低pips以下のリミットとストップロスを設定した場合などにも表示されます。
動かなくなったほとんどのEAはリミットとストップロスを無くせば、また動くようになるでしょう。
ストップとリミットを設定する場合は、ポジションを取得した後に設定することになります。
ソースコードの中に、ポジションを取得する時はリミットとストップロスを設定しないようにし、ポジションを取得した後に改めて設定するようにソースを追加します。
MetaTrader4 Proactiveがリリースされた後にオーダーシステムでご注文頂いたシステムには、全て上記の対処がされていますので、正常に稼動します。