я надеюсь ничего нужного не удалил а то компилятор ругался на слово else:
if (OrdersTotal()>0){// не нужная строчка - если ордеров нет, то счётчик цикла будет на нуле и цикл не выполнится for(int i=OrdersTotal()-1;i>=0;i--){// проходим по всем ордерам if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// если ордер не выбран, то... if(OrderMagicNumber()!=MagicNumber) continue; //если магик не наш, то переходим к другому ордеру if(OrderOpenTime()>=Time[0]) Torg=false; } // А если ордер выбрать из списка всё же удалось? } }
P.S.
зря убрали строку, сигнализирующую о номере ошибки при выборе ордера - иногда бывает, что она выстреливает. Вообще, обработку ошибок лучше применять везде, где только возможно её возникновение.
drknn: if (OrdersTotal()>0){// не нужная строчка - если ордеров нет, то счётчик цикла будет на нуле и цикл не выполнится for(int i=OrdersTotal()-1;i>=0;i--){// проходим по всем ордерам if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// если ордер не выбран, то... if(OrderMagicNumber()!=MagicNumber) continue; //если магик не наш, то переходим к другому ордеру if(OrderOpenTime()>=Time[0]) Torg=false; } // А если ордер выбрать из списка всё же удалось? } }
а если так?
bool Torg; if (OrdersTotal()==0) Torg=true; if (OrdersTotal()>0){ for(int i=OrdersTotal()-1;i>=0;i--){ if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){ if(OrderMagicNumber()!=MagicNumber) continue; if(OrderOpenTime()>=Time[0]) Torg=false; if (OrderOpenTime()<Time[0]) Torg=true; } } }
А если попробовать проверить этот цикл в скрипте самостоятельно? Ну просто отпринтовав результат - в какое положение станет переменная Torg в разных случаях. Думаете сделать самостоятельно не получится?
drknn: А если попробовать проверить этот цикл в скрипте самостоятельно? Ну просто отпринтовав результат - в какое положение станет переменная Torg в разных случаях. Думаете сделать самостоятельно не получится?
получилось так что на новом баре открывается неограниченное количество ордеров. раньше было что все они сразу открывались а теперь один открылся ожидается новый бар и все остальные открываются.
Нет. Не нужно внутри цикла на каждой его итерации объявлять переменную.
я надеюсь ничего нужного не удалил а то компилятор ругался на слово else:
bool Torg=true;
if (OrdersTotal()>0){for(int i=OrdersTotal()-1;i>=0;i--){
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
}
}
}
я надеюсь ничего нужного не удалил а то компилятор ругался на слово else:
if (OrdersTotal()>0){// не нужная строчка - если ордеров нет, то счётчик цикла будет на нуле и цикл не выполнится
for(int i=OrdersTotal()-1;i>=0;i--){// проходим по всем ордерам
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// если ордер не выбран, то...
if(OrderMagicNumber()!=MagicNumber) continue; //если магик не наш, то переходим к другому ордеру
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// А если ордер выбрать из списка всё же удалось?
}
}
P.S.
зря убрали строку, сигнализирующую о номере ошибки при выборе ордера - иногда бывает, что она выстреливает. Вообще, обработку ошибок лучше применять везде, где только возможно её возникновение.
if (OrdersTotal()>0){// не нужная строчка - если ордеров нет, то счётчик цикла будет на нуле и цикл не выполнится
for(int i=OrdersTotal()-1;i>=0;i--){// проходим по всем ордерам
if (!OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){// если ордер не выбран, то...
if(OrderMagicNumber()!=MagicNumber) continue; //если магик не наш, то переходим к другому ордеру
if(OrderOpenTime()>=Time[0]) Torg=false;
}
// А если ордер выбрать из списка всё же удалось?
}
}
bool Torg;
if (OrdersTotal()==0) Torg=true;
if (OrdersTotal()>0){
for(int i=OrdersTotal()-1;i>=0;i--){
if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)){
if(OrderMagicNumber()!=MagicNumber) continue;
if(OrderOpenTime()>=Time[0]) Torg=false;
if (OrderOpenTime()<Time[0]) Torg=true;
}
}
}
а если так?
А если попробовать проверить этот цикл в скрипте самостоятельно? Ну просто отпринтовав результат - в какое положение станет переменная Torg в разных случаях. Думаете сделать самостоятельно не получится?
думаю нет
Скачайте - поможет - http://depositfiles.com/files/eg4fmn3bp