Как обнулить внешние переменные ?

 

Подскажите плиз. Суть следущая : Есть две внешние переменные OrderProdagha, OrderPokupka. Затем происходит покупка или продажа, соответственно OrderProdagha или OrderPokupka принимает значение 1. Далее, если ордер закрывается по стопп лосу или тейк профиту мне требуется обнулить мои внешние переменные. Но при обнулении следует проверить имеется ли открытый ордер на покупку или продажу, и если имеется то ничего не делаем, а если все ордера закрыты то мне нужно мои внешние переменные обнулить. Но ОНИ НЕ ОБНУЛЯЮТСЯ!!!! Почему? Что я не учел? Спасибо большое.

Кусок кода начало

extern int OrderProdagha = 0;
extern int OrderPokupka = 0;

int start()
{

for (int r=OrdersTotal()-1; r>=0; r--) //Здесь я перебираю ордера
{
if (OrderSelect(r,SELECT_BY_POS)) //Ордер выбран // Если есть какой либо ордер, ничего не делаем
{
}
else
{
OrderPokupka = 0; //А если ордер не найден то обнуляем внешние переменные
OrderProdagha = 0;
}
}

...

Кусок кода конец

 

Если ордеров нет - то вход в цикл не выполнится, и соответственно внутри цикла ничего не выполнится. Это вкратце.

 
rabanik:

Подскажите плиз. Суть следущая : Есть две внешние переменные OrderProdagha, OrderPokupka. Затем происходит покупка или продажа, соответственно OrderProdagha или OrderPokupka принимает значение 1. Далее, если ордер закрывается по стопп лосу или тейк профиту мне требуется обнулить мои внешние переменные. Но при обнулении следует проверить имеется ли открытый ордер на покупку или продажу, и если имеется то ничего не делаем, а если все ордера закрыты то мне нужно мои внешние переменные обнулить. Но ОНИ НЕ ОБНУЛЯЮТСЯ!!!! Почему? Что я не учел? Спасибо большое.

Кусок кода начало

extern int OrderProdagha = 0;
extern int OrderPokupka = 0;

int start()
{

for (int r=OrdersTotal()-1; r>=0; r--) //Здесь я перебираю ордера
{
if (OrderSelect(r,SELECT_BY_POS)) //Ордер выбран // Если есть какой либо ордер, ничего не делаем
{
}
else
{
OrderPokupka = 0; //А если ордер не найден то обнуляем внешние переменные
OrderProdagha = 0;
}
}

...

Кусок кода конец

Если есть открытые ордера, обязательно исполнится цикл, и также обязательно в нем исполнится условие. До else условие не доберется. Надо:
int start()
{
  ..
  if(OrdersTotal()==0) {OrderPokupka=0; OrderProdagha=0;}
  ..
}
 
спасибо.
 

Извини за вопрос, ну а что тогда может быть не так? Если открытых ордеров нет а условие не выполняется, не обнуляются внешние переменные????

 
rabanik:

Извини за вопрос, ну а что тогда может быть не так? Если открытых ордеров нет а условие не выполняется, не обнуляются внешние переменные????

Если нет открытых ордеров условие даже не проверяется!, внутри цикла ничего не обнуляется, не проверяется, не выполняется.
 
rabanik:

Извини за вопрос, ну а что тогда может быть не так? Если открытых ордеров нет а условие не выполняется, не обнуляются внешние переменные????

Если открытых ордеров нет, то for (int r=OrdersTotal()-1; r>=0; r--) не зайдет в тело цикла...
 
Блин, все понятно. Сенкс. Просто огромный! Всем!