読者です 読者をやめる 読者になる 読者になる

MQL4のiCustom関数は重すぎる

 カスタムインディケーターを自作してみて初めて知ったのですが、iCustomで別のインディケーターから結果を取得する処理が重すぎます。
 MetaEditorには簡単なプロファイラがついているのでそれで計測してみると、なんと処理負荷の98%をiCustomが使用されている部分が占めています。
 まぁでも、今時のことだしなんか解決方法有るだろ・・・などと甘く考えて調べてみましたが、なんと解決策は今のところありません。呼び出される側のex4と呼び出す側のex4を同じフォルダ内に配置すれば改善するなどという情報もありましたが、機能しません。
 私の作成しているカスタムインディケーターでは、1ティックごとに6回iCustomを使用するのですが、ティックが来るたびにカクカクします。秒単位でフリーズしています。
 まぁ分析できればいいだけなら我慢できるのですが、iCustomにスレッドが専有されている間、オーダー処理が出来ないというのは非常に問題が有ります。なので、どうしてもこのやり方でこのインディケーターを使う場合は、別のターミナルでこのインディケーターを動かし、オーダー用のターミナルは別で用意しないと不安で仕様がないという事態になります。
 MT4は良く出来たプログラムですが、この辺りがお世辞にもうまいとは言えません。

追記
 iCustomを呼び出す回数が少なければさほど処理速度に影響は出ないようですが、実用上は何千回も呼び出したりすることがあるので、やはり問題になります。
 このあたりを回避するように工夫しなければ、トレードに支障が出るインディケーターやEAになるでしょう。