Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 является объектно-ориентированным языком?
Camnoce6e
42
Camnoce6e 2011.06.19 05:06 


OrderSelect(OrdersTotal()-1, SELECT_BY_POS, MODE_TRADES);
OrdTotMag=dan_ord_mag(OrdTotMag);
if(OrderType()==OP_SELL && OrderMagicNumber()==22 && OrdTotMag>=3)
{
while(!IsTradeAllowed()) Sleep(100);
OrderSend (Symbol(),OP_BUYSTOP,Lot,buy,0,buysl,buytp,"22",22,0,CLR_NONE);
}

OrdTotMag - функция подсчитывающая количество ордеров с магиком "22".

Открыто 4 ордера, последний SELL, по идее как только открывается SELL должен выставиться BUYSTOP, но этого не происходит. Расстояние между SELL и BUYSTOP достаточное. При выводе в коментах значения OrderType() выдает "0" хотя должен "1".

Не могу понять в чем тут ошибка.

Rustamzhan Salidzhanov
7681
Rustamzhan Salidzhanov 2011.06.19 05:17  

А с чего вы решили что OrdersTotal()-1 будет последним ордером ?

Вам нужно правильно пересчитать ордера, выявить ордер с самым большим временем установки (на данный момент) проверить его на тип, магик, и уж потом принимать решение.

Camnoce6e
42
Camnoce6e 2011.06.19 05:45  

по алгоритму работы советника в данном конкретном случае последним ордером будет именно SELL и соответственно у него будет самый большой номер, который будет равняться OrdersTotal()-1

Ставил в цикл, открывал два ордера BUY и два ордера SELL и все равно выдавало "0" по всем 4 позициям

Rustamzhan Salidzhanov
7681
Rustamzhan Salidzhanov 2011.06.19 05:53  

Мой дорогой друг, вы очень сильно заблуждаетесь, сие случается не всегда, так что последуйте совету, или не спрашивайте совсем.

Ну а если вам лень написать лишнюю пару строк кода, то в программировании вам делать нечего.

... и еще - обратите ваше драгоценное внимание на нижеследующую ссылку с кладезями ценнейшей информации : https://www.mql5.com/ru/forum/131853

/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий