Открытые ордера

 

Добрый день.

Подскажите пожалуйста по поводу ордеров. Функция OrdersTotal - возвращает общее количество открытых и отложенных ордеров. А как можно узнать по конкретной бумаге, есть ли открытые ордера или нет?

 
first_may:

Добрый день.

Подскажите пожалуйста по поводу ордеров. Функция OrdersTotal - возвращает общее количество открытых и отложенных ордеров. А как можно узнать по конкретной бумаге, есть ли открытые ордера или нет?


Перебрать все открытые позиции и выбрать только нужный инструмент. Если ничего не выбрали, то нету
 

То есть вот так:

int k=0;

total=OrdersTotal();

for (int cnt=0; cnt<total; cnt++)

{

OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);

if (OrderSymbol()==Symbol()) k++;

if (k>0) Print("ЕСТЬ ОРДЕР ПО НУЖНОЙ БУМАГЕ!!!");

}

 
first_may:

То есть вот так:



int k=0;
total=OrdersTotal();
for (int cnt=0; cnt<total; cnt++)
{
   OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
   if (OrderSymbol()==Symbol()) k++;
}
if (k>0) Print("ЕСТЬ "+k+" ОРДЕР(ОВ) ПО НУЖНОЙ БУМАГЕ!!! ");
else Print("НЕТУ ОРДЕРОВ ПО НУЖНОЙ БУМАГЕ, УКРАЛИ!!!");
Лучше так. :)
 
Спасибо! :)
 
Vinin:

Лучше так. :)


А еще лучше, так:

   if OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES);
      if (OrderSymbol()==Symbol()) k++;

:)

 
first_may:
Спасибо! :)

Если речь идет про открытые ордера (без отложенных) то надо еще тип ордера анализировать.
Причина обращения: