Просмотрите код

 

Здравствуйте. Или мне кажется, или следующий код не работает по той логике, которой мне нужно: "если есть 2 села и нет ни одного селллимита, то функция возвращает true".

bool countofsell()
{
short selllimit;
short sell;
  for(int i=0; i<OrdersTotal(); i++)
{
  if(OrderSelect(OrderGetTicket(i)))
  {
    if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_LIMIT) sellimit=sellimit+1;
    
    
  }


}

  for(int j=0; j<PositionsTotal(); j++)
{
   if(PositionSelect(PositionGetTicket(j)))
  {
     if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) sell=sell+1;
  }
  }

if(sell==2&&selllimit==0) return true;
return false;


}


 

 

Ошибка тут:

   if(count1==2&&count==0)
      return true;
   return false;


Нужно вставлять на их место sellimit и sell.

 
Igor Knyazkov:

Здравствуйте. Или мне кажется, или следующий код не работает по той логике, которой мне нужно: "если есть 2 села и нет ни одного селллимита, то функция возвращает true".

bool countofsell()
{
short sellimit;
short sell;
  for(int i=0; i<OrdersTotal(); i++)
{
  if(OrderSelect(OrderGetTicket(i)))
  {
    if(OrderGetInteger(ORDER_TYPE)==ORDER_TYPE_SELL_LIMIT) sellimit=sellimit+1;
    
    
  }


}

  for(int j=0; j<PositionsTotal(); j++)
{
   if(PositionSelect(PositionGetTicket(j)))
  {
     if(PositionGetInteger(POSITION_TYPE)==POSITION_TYPE_SELL) sell=sell+1;
  }
  }

if(count1==2&&count==0) return true;
return false;


}


 А откуда взялось вот эти counts?

if(count1==2&&count==0) return true;

Владимир быстрый, как ветер ))
 

 
Igor Knyazkov:

Здравствуйте. Или мне кажется, или следующий код не работает по той логике, которой мне нужно: "если есть 2 села и нет ни одного селллимита, то функция возвращает true".

Два момента:

1. инициализация:

short sellimit =0;
short sell =0;

2. заменить:

if(count1==2&&count==0) return true;

на (+ поставить нестрогое равенство):

if(sellimit>=2&&sell==0) return true;
 
Vladimir Karputov:

Ошибка тут:

   if(count1==2&&count==0)
      return true;
   return false;


Нужно вставлять на их место sellimit и sell.

Начал исправлять, но исправил не до конца.) Это я менял имена переменных вначале функции, а заменить их в условии забыл(именно на форуме) :) Если с именами все хорошо, то функция работает корректно?
 
Alexey Volchanskiy:
Начал исправлять, но исправил не до конца.) Это я менял имена переменных вначале функции, а заменить их в условии забыл(именно на форуме) :) Если с именами все хорошо, то функция работает корректно?
 
Andrey F. Zelinsky:

Два момента:

1. инициализация:

short sellimit =0;
short sell =0;

2. заменить:

if(count1==2&&count==0) return true;

на (+ поставить нестрогое равенство):

if(sellimit>=2&&sell==0) return true;
Начал исправлять, но исправил не до конца.) Это я менял имена переменных вначале функции, а заменить их в условии забыл(именно на форуме) :) Если с именами все хорошо, то функция работает корректно?
 
Igor Knyazkov:
Начал исправлять, но исправил не до конца.) Это я менял имена переменных вначале функции, а заменить их в условии забыл(именно на форуме) :) Если с именами все хорошо, то функция работает корректно?

После проверки на селллимит, если он есть можно сразу выход false сделать

... даже во время проверки в первом цикле.

 
Всем спасибо. Вопрос решен.