MT4 StrategyTesterのOrderSelect関数の不思議?


いきなりですが、MT4のStrategyTesterのバグと思われる現象がありました。
OrderSelect関数が上手く動作しない場合がありました。尚Build432でも残って
いるのでまだ解決されていない気もします。(FXCM用だけかもしれません)
#プログラムの他の部分とも絡んでいそうで、プログラム依存があるのかもしれません。
#最後にも書きましたが、これは仕様(最近の?)かもしれませんwww



以下のような関数で、strategyTesterで指定MagicNumberの買いまたは売りの全てのポジションを決済します。




void BuySellClose(bool BuyFlag, bool SellFlag){
if(BuyFlag || SellFlag){
for (int i=0; i




でこれを実行した結果の一部が以下です。



これを見るとわかりますが?、ポジションの一部が残ってしまっています。
ただ、これが発生するケースがわかっていません。



で決済だけなら、以下のように書けばこのバグは回避出来ます。




void BuySellClose(bool BuyFlag, bool SellFlag){
if(BuyFlag || SellFlag){
int i;
int BuyCount=0,SellCount=0;
while(true){                   //<−ここがポイント
BuyCount=0;SellCount=0;
for (i=0; i


ポジションが無くなるまで無限ループってやると上手くいきます。



このバグはOrderSelect関数の動作から考えると、StrategyTeserのバグ(仕様???)で
実際のサーバーの動作では問題がないのでは?と思ったりしています。



後日談・・・というかここまで書いてちょこっと確認

mql4.comを見てみると・・・・while(残数チェック)と同じような事をやっているのがあった・・・これって仕様だったの??????
でも、最初のような記述方法のもある??? 単に実時間で、ペンディングされているオーダーの時間関係が無い為の対応????