[Архив!] Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 2. - страница 275

 

Всем доброй ночи!

Скажите пожалуйста, если открываю позицию вот так:

   order_id = OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,Green);
   if(ticket<1)
     {
      error=GetLastError();
      Print("send_orders, error = ",ErrorDescription(error));
      return;
     }

То как грамотней ее закрыть, при условии, что эксперт может открывать всего одну позицию?

Может вот так:

OrderClose(OrderTicket(),1,Bid,3,Red);
 

Непонятно как получить уникальный порядковый номер ордера. И как понять, что этот ордер именно тот который нужен. Поделитесь опытом, пожлуйста!

 
BBSL:

Непонятно как получить уникальный порядковый номер ордера. И как понять, что этот ордер именно тот который нужен. Поделитесь опытом, пожлуйста!


Посмотри тут https://docs.mql4.com/ru/trading/OrderSelect

Выбрав ордер остается только проверить нужный он или нет. Не нужный, переходим к следующему и снова проверяем. Пока не будет найден нужный

 

Пытаюсь освоить МТ5.

При установке одного эксперта столкнулся с небольшой проблемой – работа этого эксперта возможна только после загрузки определенной истории, т.е. установил и жди, пока не завершится загрузка. Самое же неприятное то, что по всей видимости эта история не сохраняется, т.к. на другой день все повторилось.

Объясните, пожалуйста, можно ли как-то сохранять загруженную историю? Спасибо.

 
Vinin:


Посмотри тут https://docs.mql4.com/ru/trading/OrderSelect

Выбрав ордер остается только проверить нужный он или нет. Не нужный, переходим к следующему и снова проверяем. Пока не будет найден нужный


Учебник облазил в доль и поперек...

Подразумевается, что известен номер ордера?

Поидее нужно использовать OrderTicket();, для получения номера, так?

 
BBSL:


Учебник облазил в доль и поперек...

Подразумевается, что известен номер ордера?

Поидее нужно использовать OrderTicket();, для получения номера, так?


OrderTicket() можно использовать предварительно выбрав его с помощью OrderSelect(). Да и любые операции с ордером требуют его предварительного выбора с помощью OrderSelect()
 
hedger:

Пытаюсь освоить МТ5.

При установке одного эксперта столкнулся с небольшой проблемой – работа этого эксперта возможна только после загрузки определенной истории, т.е. установил и жди, пока не завершится загрузка. Самое же неприятное то, что по всей видимости эта история не сохраняется, т.к. на другой день все повторилось.

Объясните, пожалуйста, можно ли как-то сохранять загруженную историю? Спасибо.


Если речь идет о тиках, то можно написать код сохраняющий днные файл, но в експерте нужно будет сделать загрузку из файла. Может есть смысл просто не выключать комп?
 
Vinin:

OrderTicket() можно использовать предварительно выбрав его с помощью OrderSelect(). Да и любые операции с ордером требуют его предварительного выбора с помощью OrderSelect()


Т.е. так:

if(OrderSelect(0, SELECT_BY_POS)==true){

OrderClose(OrderTicket(),1,Bid,3,Red);

}
 
BBSL:

Если речь идет о тиках, то можно написать код сохраняющий днные файл, но в експерте нужно будет сделать загрузку из файла. Может есть смысл просто не выключать комп?

Если эксперт - пипсовщик, то данные нужны "свежие" наверно, по старым будет один шум...
 
BBSL:

Всем доброй ночи!

Скажите пожалуйста, если открываю позицию вот так:

То как грамотней ее закрыть, при условии, что эксперт может открывать всего одну позицию?

Может вот так:

Странно вы как-то делаете... При открытии позиции номер тикета присваиваете одной переменной, а проверяете совсем другую...

order_id = OrderSend(Symbol(),OP_BUY,1.0,Ask,3,0,0,"expert comment",255,0,Green);
   if(ticket<1)

При этом OrderSend() в случае неудачи возвращает -1 (минус один), а вы проверяете на меньше единицы, когда нужно на меньше ноля

Это первое, что в глаза бросается. Но, думаю, у вас там много всего интересного... :)

Причина обращения: