Помогите найти ошибку в функции учета ордеров

mixey777

Прохожий
На одном сайте в видео уроке нашел следующую функцию:
PHP:
void Uchet_orderov (int Magic, string Symb, int &mas[8])
{
ArrayInitialize(mas,0);
//mas[0] - покупки
//mas[1] - покупки 
//mas[2] - buylimit
//mas[3] - selllimit
//mas[4] - buystop
//mas[5] - sellstop
//mas[6] - cделки
//mas[7] - отложки

         
         
int tip;
for(int pos=OrdersTotal()-1; pos>=0; pos--)
{
if (OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)&&OrderMagicNumber()==Magic&&OrderSymbol()==Symb&&OrderTicket()!=tiket)
{


tip=OrderType();
switch(tip)
{
case 0:{mas[0]++;mas[6]++;break;}
case 1:{mas[1]++;mas[6]++;break;}
case 2:{mas[2]++;mas[7]++;break;}
case 3:{mas[3]++;mas[7]++;break;}
case 4:{mas[4]++;mas[7]++;break;}
case 5:{mas[5]++;mas[7]++;break;}
}
}
continue;

}
}

Попробовал применить, но по каким то причинам не выполняется учет по magic номеру т.е. если удаляю OrderMagicNumber()==Magic - учитываются все ордера, но если ее добавляю, то ордеров 0. P.S. ордера с данным magic номером созданы.
В советнике использую так:

PHP:
extern int   MagicNumber = 2014;
int orders[8];
Uchet_orderov(MagicNumber, Symbol(), orders);
Comment ("Покупки: " + orders[0] + "Продажи: " + orders[1]);

В чем может быть ошибка и как ее исправить?
 

mixey777

Прохожий
Я не вижу большого криминала в коде. Должен считать. Видимо, все же нет ордеров с таким магиком.
В том то и дело, что такие ордера есть.
Ордера создаю командой:
int tiket =OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 1.34000, 1.39000, MagicNumber, Blue);

C каждым тиком ордера создаются, но не учитываются этой функцией.
 

qqmber

Почетный гражданин
В том то и дело, что такие ордера есть.
Ордера создаю командой:
int tiket =OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 1.34000, 1.39000, MagicNumber, Blue);

C каждым тиком ордера создаются, но не учитываются этой функцией.
Надо так
Код:
int tiket=OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 1.34000, 1.39000, NULL, MagicNumber, 0, Blue);
Нельзя пропускать параметры посредине.
 
Верх