Ответить
27.06.2014, 15:16
Аватар для mixey777
mixey777 mixey777 вне форума Интересующийся
Регистрация: 14.01.2014 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1

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

На одном сайте в видео уроке нашел следующую функцию:
PHP код:
void Uchet_orderov (int Magicstring Symbint &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()-1pos>=0pos--)
{
if (
OrderSelect(posSELECT_BY_POSMODE_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(MagicNumberSymbol(), orders);
Comment ("Покупки: " orders[0] + "Продажи: " orders[1]); 
В чем может быть ошибка и как ее исправить?
29.06.2014, 06:25
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
P.S. ордера с данным magic номером созданы.

В чем может быть ошибка и как ее исправить?
Я не вижу большого криминала в коде. Должен считать. Видимо, все же нет ордеров с таким магиком.
30.06.2014, 06:13
Аватар для mixey777
mixey777 mixey777 вне форума Интересующийся
Регистрация: 14.01.2014 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1
Я не вижу большого криминала в коде. Должен считать. Видимо, все же нет ордеров с таким магиком.
В том то и дело, что такие ордера есть.
Ордера создаю командой:
int tiket =OrderSend(Symbol(), OP_BUY, 0.01, Ask, 3, 1.34000, 1.39000, MagicNumber, Blue);

C каждым тиком ордера создаются, но не учитываются этой функцией.
30.06.2014, 08:32
Аватар для qqmber
qqmber qqmber вне форума Почётный гражданин
Регистрация: 20.01.2013 / Сообщений: 530
Поблагодарили 386 раз(а) / Репутация: 386
В том то и дело, что такие ордера есть.
Ордера создаю командой:
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);
Нельзя пропускать параметры посредине.
30.06.2014, 14:45
Аватар для mixey777
mixey777 mixey777 вне форума Интересующийся
Регистрация: 14.01.2014 / Сообщений: 4
Поблагодарили 0 раз(а) / Репутация: 1
Спасибо, все заработало
Ответить


Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Выкл.
Pingbacks are Выкл.
Refbacks are Выкл.



Текущее время: 14:01. Часовой пояс GMT.


Перевод: zCarot
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO