В mql4 не работает MODE_HISTORY и MODE_TRADES при выборе флага SELECT_BY_TICKET .
Пишем простенький скрипт:
Переменной _ticket присваиваем любой ордер из ИСТОРИИ (уже закрытый!). Что при источнике данных MODE_HISTORY, что при источнике данных MODE_TRADES всегда возвращает true!
так по тикету всегда выбирается - если правильный тикет
Мне надо знать, где этот конкретный тикет - уже в истории или нет. Конечно я понимаю, как еще проверить. Но НЕЛОГИЧНО же!
if(OrderSelect(_ticket, SELECT_BY_TICKET) && OrderCloseTime() > 0) Print("Ордер закрыт");
В mql4 не работает MODE_HISTORY и MODE_TRADES при выборе флага SELECT_BY_TICKET .
Пишем простенький скрипт:
Переменной _ticket присваиваем любой ордер из ИСТОРИИ (уже закрытый!). Что при источнике данных MODE_HISTORY, что при источнике данных MODE_TRADES всегда возвращает true!
Об этом прямо написано в документации.
https://docs.mql4.com/ru/trading/orderselect
Нет.
в режиме тикета не работает, а узнать можно по времени закрытия и по цене закрытия, они у рыночного ордера равны нулю
А прежде чем писать такое проверить не судьба???
Цена закрытия рыночного ордера OrderClosePrice() НЕ равна нулю!!! В зависимости от типа ордера она равна цене Ask или Bid.
Об этом прямо написано в документации.
https://docs.mql4.com/ru/trading/orderselect
Увидела: "Параметр pool игнорируется, если ордер выбирается по номеру тикета"
Все-равно, считаю это нелогичным.
Увидела: "Параметр pool игнорируется, если ордер выбирается по номеру тикета"
Все-равно, считаю это нелогичным.
Все логично при работе с тикетом для большинства задач именно такая реализация и нужна, для работы с историей или с открытым ордерами существует поиск по индексу в списке ордеров, с соответствующими флагами MODE_HISTORY и MODE_TRADES. Вот простой примерчик для работы с событиями ордеров по тикету, если использовать флаги MODE_HISTORY и MODE_TRADES то пришлось бы писать код в два раза больше.
//+------------------------------------------------------------------+ //| test_3.mq4 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" #property strict int event_1; // событие для ордера 1 int event_2; // событие для ордера 2 int ticket1; // тикет ордера 1 int ticket2; // тикет ордера 2 //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- event_1=Event(ticket1); event_2=Event(ticket2); } //+------------------------------------------------------------------+ int Event(int tiket) { if(tiket<=0)return(0); if(OrderSelect(tiket,SELECT_BY_TICKET)) { if(StringFind(OrderComment(),"sl")>=0)return(1);// ордер закрыт по стоплоссу. if(StringFind(OrderComment(),"tp")>=0)return(2);// ордер закрыт по тейк профиту. if(OrderCloseTime()!=0)return(3);// ордер закрыт вручную или по условию } return(0); } //+------------------------------------------------------------------+

- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
В mql4 не работает MODE_HISTORY и MODE_TRADES при выборе флага SELECT_BY_TICKET .
Пишем простенький скрипт:
Переменной _ticket присваиваем любой ордер из ИСТОРИИ (уже закрытый!). Что при источнике данных MODE_HISTORY, что при источнике данных MODE_TRADES всегда возвращает true!