Библиотеки: MT4Orders - страница 62

 
На самом деле это не ошибка, это ошибочный дизайн. Проблема в том, что маржа рассчитывается на уровне свойств аккаунта, тогда как она должна быть на уровне свойств символа.
 
fxsaber:

Знаковое обновление библиотеки! Единственная библиотека в мире, умеющая нивелировать постоянно возникающие в MT5 рассинхронизации торгового окружения. Нескромно, но факт.

После данного обновления было сделано несколько тысяч сделок на реальных счетах у разных брокеров. Анализ показал идеальную работу механизма синхронизации.

Рекомендую его задействовать. Сделайте свои продукты еще более надежными.

 

ошибка компиляции :

cannot convert 0 to enum 'ENUM_TRADE_REQUEST_ACTIONS'   MT4Orders.mqh   2448    55

на всякий случай из КБ скачал последнюю версию, видимо это: https://www.mql5.com/ru/forum/170952/page203#comment_22563132

 
Igor Makanu:

ошибка компиляции :

на всякий случай из КБ скачал последнюю версию, видимо это: https://www.mql5.com/ru/forum/170952/page203#comment_22563132

Как решу задачу, обновлю.

 
// Список изменений:
// 01.06.2021
//   Fix: Совместимость с компилятором b2449+.
//   Fix: Улучшена синхронизация. ByPass.mqh должен быть последней версии.
//   Add: OrderLots(true) - синхронизированный размер выбранной позиции с учетом всех закрывающих ее ордеров.
// Решение задачи https://www.mql5.com/ru/forum/368178/page27#comment_22565676

#define MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в мкс.) на ожидание синхронизации торгового окружения
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define Ask SymbolInfoDouble(_Symbol, SYMBOL_ASK)

void OnStart()
{
  const TICKET_TYPE Ticket = OrderSend(_Symbol, OP_BUY, 1, Ask, 0, 0, 0);
  
  MT4ORDERS::OrderSend_MaxPause = 0;
    
  // А теперь просто закрываем 0.1 лота в случае, если объем позиции равен 1.
  // Цикл - для эмуляции запуска скрипта в любой момент.
  while (!IsStopped() && OrderSelect(Ticket, SELECT_BY_TICKET) && (OrderLots(true) == 1))
    OrderClose(OrderTicket(), 0.1, OrderClosePrice(), 0);
}
 

По моей просьбе MetaQutoes полностью локализовала последнее обновление библиотеки на английский язык. Последняя сборка библиотеки теперь доступна на англоязычной странице с комментариями в исходном коде, переведенными на английский язык.


Это отличается от предыдущей версии, которая была доступна на англоязычной странице.

// Список изменений:
// 02.11.2018
// Исправление: теперь цена открытия позиции в MT4 не может быть нулевой до ее срабатывания.
// Исправление: учтены некоторые редкие аспекты исполнения некоторых торговых серверов.
// 26.11.2018
// Исправление: Магия и комментарий закрытой позиции MT4: Приоритет соответствующих полей для открывающихся сделок выше, чем для закрывающихся.
// Исправление: Редкие изменения в MT5-OrdersTotal и MT5-PositionsTotal учитываются при расчете MT4-OrdersTotal и MT4-OrderSelect.
// Исправление: Библиотека не учитывает ордера, которые открыли позицию, но еще не были удалены из MT5.
// 17.01.2019
// Исправление: Исправлена досадная ошибка при выборе отложенных ордеров.
// 08.02.2019
// Добавить: Комментарий позиции сохраняется при частичном закрытии через OrderClose.
// Если вам нужно изменить комментарий к открытой позиции при частичном закрытии, вы можете указать его в OrderClose.
// 20.02.2019
// Исправление: В случае отсутствия ордера MT5, библиотека будет ожидать синхронизации истории от существующей транзакции MT5. В случае неудачи она сообщит об этом.
// 13.03.2019
// Добавить: Добавлена функция OrderTicketID() - идентификатор позиции сделки MT5 или позиции MT5, а также тикета отложенного ордера MT4.
// Добавить: SELECT_BY_TICKET работает для всех тикетов MT5 (и MT5-PositionID).
// 02.11.2019
// Исправление: Исправлены лот, комиссия и цена закрытия для позиций CloseBy.
// 12.01.2020
// Исправление: OrderTicketID() для сделок с балансом теперь возвращает корректное значение.
// Исправление: Исправлен SELECT_BY_TICKET - выбор по OrderTicketID() (MT5-PositionID).
// Исправление: Изменено название метода внутренней библиотеки для большей совместимости с макросами.
// 10.04.2020
// Исправление: Частично исполненный живой отложенный ордер не попадал в OrdersTotal().
// 09.06.2020
// Добавить: StopLoss/TakeProfit/ClosePriceRequest для закрытых позиций теперь лучше определены.
// 10.06.2020
// Добавить: Добавлены миллисекунды, удалено округление цены и ордера в OrderPrint().
// 13.08.2020
// Добавить: Добавлена возможность проверки работоспособности частей библиотеки с помощью макроса MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Фикс: Учет выявленных особенностей выполнения частичных заказов.
// 29.08.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 24.09.2020
// Добавить: Если вам нужно повысить приоритет ордера MT5 над позицией MT5 при выборе живого ордера MT4 по SELECT_BY_TICKET (те же самые билеты),
// это можно сделать, изменив размер билета на отрицательный: OrderSelect(-Ticket, SELECT_BY_TICKET).
// Добавить: Если вам нужно указать выбор только MT5-ордера при модификации живого MT4-ордера (те же тикеты),
// это можно сделать, изменив размер билета на отрицательный: OrderModify(-Ticket, ...).
// Добавить: OrderSelect(INT_MAX, SELECT_BY_POS) - переключение на позицию MT5 без проверки существования и обновления.
// OrderSelect(INT_MIN, SELECT_BY_POS) - переключение на живой ордер MT5 без проверки существования и обновления.
// Исправление: Реализована более быстрая работа с историей сделок.
// 30.09.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 08.10.2020
// Исправление: ОрдерОтправка рыночного ордера могла выполняться дольше из-за недостатка в свежем поиске сделок в MT5.
// 21.10.2020
// Добавить: Для обеспечения совместимости с MT4 добавлена функция OrderTicketID() - возвращает OrderTicket().
// 11.11.2020
// Исправление: OrderTicketID() и OrderTicketOpen() возвращают тип значения, указанный в TICKET_TYPE.
// 06.12.2020
// Исправление: Теперь учитываются случаи некорректных записей об исполнении SL/TP в истории торговли MT5.
// Добавить: Рынок MT4ORDERS_TESTER_SELECT_BY_TICKET заставляет SELECT_BY_TICKET работать в тестере только через OrderTicketID().
// 04.05.2021
// Исправление: Ордера MT5, которые открывают позиции и не исчезают, больше не добавляются в список ордеров MT4.
// Исправление: Ордера CloseBy MT5 больше не отображаются в списке ордеров MT4.
// 12.05.2021
// Добавить: Макрос MT4ORDERS_BYPASS_MAXTIME изменяет постоянно возникающие случаи рассинхронизации торговых сред в MT5.
// 13.05.2021
// Исправление: Исправлена ошибка в функции OrderOpenReason().
// 14.05.2021
// Исправление: механизм BYPASS больше не влияет на OrderSelect(INT_MAX, SELECT_BY_POS) и OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Исправление: Совместимость с компилятором сборки 2449 и выше.
// Исправление: Улучшена синхронизация. ByPass.mqh должен быть последней версии.
// Add: OrderLots(true) - синхронизированный размер выбранной позиции, учитывающий все ордера, которые закрывают эту позицию.


Я рекомендую использовать последнюю версию вместе с механизмом синхронизации. Тогда все проблемы, которые не может решить ни одна торговая библиотека, будут незаметны.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в микросекундах) ожидания синхронизации торговой среды
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

Для того чтобы этот механизм заработал, необходимо скачать эту библиотеку. Все сложные и эффективные проверки корректности работы торговой среды будут выполняться автоматически, не отвлекая пользователя при написании торговой логики.

TradesID
TradesID
  • www.mql5.com
Быстрая работа с POSITION_ID
 

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2021.06.02 10:09

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


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

// Список изменений.
// 02.11.2018
// Исправление: теперь цена открытия позиции в MT4 не может быть нулевой до ее срабатывания.
// Исправление: учтены некоторые редкие аспекты исполнения некоторых торговых серверов.
// 26.11.2018
// Исправление: Магия и комментарий закрытой позиции MT4: Приоритет соответствующих полей открывающих сделок выше, чем закрывающих. Приоритет соответствующих полей открываемых сделок выше, чем закрываемых.
// Исправление: Редкие изменения в MT5-OrdersTotal и MT5-PositionsTotal учитываются при расчете MT4-OrdersTotal и MT4-OrdersTotal. OrderSelect.
// Исправление: Библиотека не учитывала ордера, которые открыли позицию, но еще не были удалены из MT5.
// 17.01.2019
// Исправление: Исправлена досадная ошибка при выборе отложенных ордеров.
// 08.02.2019
// Добавление: Комментарий позиции сохраняется при частичном закрытии через OrderClose.
// Если вам нужно изменить комментарий к открытой позиции при частичном закрытии, вы можете указать его в OrderClose.
// 20.02.2019
// Исправление: В случае отсутствия ордера MT5, библиотека будет ожидать синхронизации истории от существующей транзакции MT5. В случае неудачи, она сообщит об этом.
// 13.03.2019
// Добавление: Добавлена функция OrderTicketID() - идентификатор позиции сделки MT5 или позиции MT5, а также тикет отложенного ордера MT4.
// Добавьте: SELECT_BY_TICKET работает для всех тикетов MT5 (и MT5-PositionID).
// 02.11.2019
// Исправление: исправлены лот, комиссия и цена закрытия для позиций CloseBy.
// 12.01.2020
// Исправление: OrderTicketID() для балансовых сделок теперь возвращает корректное значение.
// Исправление: Исправлен SELECT_BY_TICKET - выбор по OrderTicketID() (MT5-PositionID).
// Исправление: изменено название метода внутренней библиотеки для большей совместимости с макросами.
// 10.04.2020
// Исправление: частично исполненный живой отложенный ордер не попадал в OrdersTotal().
// 09.06.2020
// Добавление: StopLoss/TakeProfit/ClosePriceRequest для закрытых позиций теперь лучше определены.
// 10.06.2020
// Добавление: Добавлены миллисекунды, удалено округление цены и ордера в OrderPrint().
// 13.08.2020
// Добавление: Добавлена возможность проверки работоспособности частей библиотеки с помощью макроса MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Фикс: Учет выявленных особенностей выполнения частичных заказов.
// 29.08.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 24.09.2020
// Добавление: Если вам нужно повысить приоритет ордера МТ5 над позицией МТ5 при выборе живого ордера МТ4 с помощью SELECT_BY_TICKET (те же самые билеты), то
// это можно сделать, изменив размер билета на отрицательный: OrderSelect(-Ticket, SELECT_BY_ TICKET).
// Добавить: Если вам нужно указать выбор только MT5-ордера при модификации живого MT4-ордера (те же тикеты), то вы можете добавить MT5-ордер к MT5-ордеру.
// это можно сделать, изменив размер билета на отрицательный: OrderModify(-Ticket, ...) .
// Добавляем: OrderSelect(INT_MAX, SELECT_BY_POS) - переключение на позицию MT5 без проверки существования и обновления.
// OrderSelect(INT_MIN, SELECT_BY_POS) - переключение на живой ордер MT5 без проверки существования и обновления. существование и обновление.
// Исправление: Реализована более быстрая работа с историей сделок.
// 30.09.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 08.10.2020
// Исправление: OrderSend рыночного ордера мог выполняться дольше из-за недостатка в свежем поиске сделок в MT5.
// 21.10.2020
// Добавление: Для обеспечения совместимости с MT4 добавлена функция OrderTicketID() - возвращает OrderTicket().
// 11.11.2020
// Исправление: OrderTicketID() и OrderTicketOpen() возвращают тип значения, указанный в TICKET_TYPE.
// 06.12.2020
// Исправление: Теперь учитываются случаи некорректных записей об исполнении SL/TP в истории торговли MT5.
// Добавление: Рынок MT4ORDERS_TESTER_SELECT_BY_TICKET заставляет SELECT_BY_TICKET работать в тестере только через OrderTicketID().
// 04.05.2021
// Исправление: Ордера MT5, которые открывают позиции и не исчезают, больше не добавляются в список ордеров MT4.
// Исправление: ордера CloseBy MT5 больше не отображались в списке ордеров MT4.
// 12.05.2021
// Добавить: Макрос MT4ORDERS_BYPASS_MAXTIME изменяет постоянно возникающие случаи рассинхронизации торговой среды в MT5.
// 13.05.2021
// Исправление: Исправлена ошибка в функции OrderOpenReason().
// 14.05.2021
// Исправление: механизм BYPASS больше не влияет на OrderSelect(INT_MAX, SELECT_BY_POS) и OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Исправление: Совместимость с компилятором сборки 2449 и выше.
// Исправление: Улучшена синхронизация. ByPass.mqh должен быть последней версии.
// Добавляем: OrderLots(true) - синхронизированный размер выбранной позиции, учитывающий все ордера, которые закрывают эту позицию.


Я рекомендую использовать последнюю версию вместе с механизмом синхронизации. Тогда все проблемы, которые не может решить ни одна другая торговая библиотека, будут Тогда все проблемы, которые не может решить ни одна другая торговая библиотека, будут незаметны.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в микросекундах) ожидания синхронизации торговой среды
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Чтобы этот механизм работал, необходимо скачать эту библиотеку. Все сложные и эффективные проверки корректности работы торговой среды будут выполняться автоматически, не отвлекая пользователя, когда торговая среда не работает. Все сложные и эффективные проверки корректности работы торговой среды будут выполняться автоматически, не отвлекая пользователя при написании торговой логики.


 

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2021.06.02 10:09

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


Это отличается от предыдущей версии, которая была доступна на англоязычной странице.

// Список изменений:
// 02.11.2018
// Исправление: теперь цена открытия позиции в MT4 не может быть нулевой до ее срабатывания.
// Исправление: учтены некоторые редкие аспекты исполнения некоторых торговых серверов.
// 26.11.2018
// Исправление: Магия и комментарий закрытой позиции MT4: приоритет соответствующих полей для открывающих сделок выше, чем для закрывающих.
// Исправление: редкие изменения в MT5-OrdersTotal и MT5-PositionsTotal учитываются при расчете MT4-OrdersTotal и MT4-OrderSelect.
// Исправление: Библиотека не учитывала ордера, которые открыли позицию, но еще не были удалены из MT5.
// 17.01.2019
// Исправление: Исправлена досадная ошибка при выборе отложенных ордеров.
// 08.02.2019
// Добавление: Комментарий позиции сохраняется при частичном закрытии через OrderClose.
// Если вам нужно изменить комментарий к открытой позиции при частичном закрытии, вы можете указать его в OrderClose.
// 20.02.2019
// Исправление: В случае отсутствия ордера MT5, библиотека будет ожидать синхронизации истории от существующей транзакции MT5. В случае неудачи она сообщит об этом.
// 13.03.2019
// Добавление: Добавлена функция OrderTicketID() - идентификатор позиции сделки MT5 или позиции MT5, а также тикет отложенного ордера MT4.
// Добавьте: SELECT_BY_TICKET работает для всех тикетов MT5 (и MT5-PositionID).
// 02.11.2019
// Исправление: исправлены лот, комиссия и цена закрытия для позиций CloseBy.
// 12.01.2020
// Исправление: OrderTicketID() для балансовых сделок теперь возвращает корректное значение.
// Исправление: Исправлен SELECT_BY_TICKET - выбор по OrderTicketID() (MT5-PositionID).
// Исправление: изменено название метода внутренней библиотеки для большей совместимости с макросами.
// 10.04.2020
// Исправление: частично исполненный живой отложенный ордер не попадал в OrdersTotal().
// 09.06.2020
// Добавление: StopLoss/TakeProfit/ClosePriceRequest для закрытых позиций теперь лучше определены.
// 10.06.2020
// Добавление: Добавлены миллисекунды, удалено округление цены и ордера в OrderPrint().
// 13.08.2020
// Добавление: Добавлена возможность проверки работоспособности частей библиотеки с помощью макроса MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Фикс: Учет выявленных особенностей выполнения частичных заказов.
// 29.08.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 24.09.2020
// Добавить: Если вам нужно увеличить приоритет ордера MT5 над позицией MT5 при выборе ордера MT4 по SELECT_BY_TICKET (те же самые билеты),
// это можно сделать, изменив размер билета на отрицательный: OrderSelect(-Ticket, SELECT_BY_TICKET).
// Добавить: Если вам нужно указать выбор только MT5-ордера при модификации живого MT4-ордера (те же тикеты),
// это можно сделать, изменив размер билета на отрицательный: OrderModify(-Ticket, ...).
// Добавляем: OrderSelect(INT_MAX, SELECT_BY_POS) - переключение на позицию MT5 без проверки существования и обновления.
// OrderSelect(INT_MIN, SELECT_BY_POS) - переключение на живой ордер MT5 без проверки существования и обновления.
// Исправление: Реализована более быстрая работа с историей сделок.
// 30.09.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 08.10.2020
// Исправление: OrderSend рыночного ордера мог выполняться дольше из-за недостатка в свежем поиске сделок в MT5.
// 21.10.2020
// Добавление: Для обеспечения совместимости с MT4 добавлена функция OrderTicketID() - возвращает OrderTicket().
// 11.11.2020
// Исправление: OrderTicketID() и OrderTicketOpen() возвращают тип значения, указанный в TICKET_TYPE.
// 06.12.2020
// Исправление: Теперь учитываются случаи некорректных записей об исполнении SL/TP в истории торговли MT5.
// Добавление: Рынок MT4ORDERS_TESTER_SELECT_BY_TICKET заставляет SELECT_BY_TICKET работать в тестере только через OrderTicketID().
// 04.05.2021
// Исправление: Ордера MT5, которые открывают позиции и не исчезают, больше не добавляются в список ордеров MT4.
// Исправление: ордера CloseBy MT5 больше не отображались в списке ордеров MT4.
// 12.05.2021
// Добавить: Макрос MT4ORDERS_BYPASS_MAXTIME изменяет постоянно возникающие случаи рассинхронизации торговой среды в MT5.
// 13.05.2021
// Исправление: Исправлена ошибка в функции OrderOpenReason().
// 14.05.2021
// Исправление: механизм BYPASS больше не влияет на OrderSelect(INT_MAX, SELECT_BY_POS) и OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Исправление: Совместимость с компилятором сборки 2449 и выше.
// Исправление: Улучшена синхронизация. ByPass.mqh должен быть последней версии.
// Добавляем: OrderLots(true) - синхронизированный размер выбранной позиции, учитывающий все ордера, которые закрывают эту позицию.


Я рекомендую использовать последнюю версию вместе с механизмом синхронизации. Тогда все проблемы, которые не может решить ни одна торговая библиотека, будут незаметны.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в микросекундах) ожидания синхронизации торговой среды
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Для того чтобы этот механизм заработал, необходимо скачать эту библиотеку. Все сложные и эффективные проверки корректности работы торговой среды будут выполняться автоматически, не отвлекая пользователя при написании торговой логики.


 

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2021.06.02 10:09

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


Это отличается от предыдущей версии, которая была доступна на англоязычной странице.

// Список изменений:
// 02.11.2018
// Исправление: теперь цена открытия позиции в MT4 не может быть нулевой до ее срабатывания.
// Исправление: учтены некоторые редкие аспекты исполнения некоторых торговых серверов.
// 26.11.2018
// Исправление: Магия и комментарий закрытой позиции MT4: приоритет соответствующих полей для открывающих сделок выше, чем для закрывающих.
// Исправление: редкие изменения в MT5-OrdersTotal и MT5-PositionsTotal учитываются при расчете MT4-OrdersTotal и MT4-OrderSelect.
// Исправление: Библиотека не учитывала ордера, которые открыли позицию, но еще не были удалены из MT5.
// 17.01.2019
// Исправление: Исправлена досадная ошибка при выборе отложенных ордеров.
// 08.02.2019
// Добавление: Комментарий позиции сохраняется при частичном закрытии через OrderClose.
// Если вам нужно изменить комментарий к открытой позиции при частичном закрытии, вы можете указать его в OrderClose.
// 20.02.2019
// Исправление: В случае отсутствия ордера MT5, библиотека будет ожидать синхронизации истории от существующей транзакции MT5. В случае неудачи она сообщит об этом.
// 13.03.2019
// Добавление: Добавлена функция OrderTicketID() - идентификатор позиции сделки MT5 или позиции MT5, а также тикет отложенного ордера MT4.
// Добавьте: SELECT_BY_TICKET работает для всех тикетов MT5 (и MT5-PositionID).
// 02.11.2019
// Исправление: исправлены лот, комиссия и цена закрытия для позиций CloseBy.
// 12.01.2020
// Исправление: OrderTicketID() для сделок с балансом теперь возвращает корректное значение.
// Исправление: Исправлен SELECT_BY_TICKET - выбор по OrderTicketID() (MT5-PositionID).
// Исправление: изменено название метода внутренней библиотеки для большей совместимости с макросами.
// 10.04.2020
// Исправление: частично исполненный живой отложенный ордер не попадал в OrdersTotal().
// 09.06.2020
// Добавление: StopLoss/TakeProfit/ClosePriceRequest для закрытых позиций теперь лучше определены.
// 10.06.2020
// Добавление: Добавлены миллисекунды, удалено округление цены и ордера в OrderPrint().
// 13.08.2020
// Добавление: Добавлена возможность проверки работоспособности частей библиотеки с помощью макроса MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Фикс: Учет выявленных особенностей выполнения частичных заказов.
// 29.08.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 24.09.2020
// Добавить: Если вам нужно увеличить приоритет ордера MT5 над позицией MT5 при выборе ордера MT4 по SELECT_BY_TICKET (те же самые билеты),
// это можно сделать, изменив размер билета на отрицательный: OrderSelect(-Ticket, SELECT_BY_TICKET).
// Добавить: Если вам нужно указать выбор только MT5-ордера при модификации живого MT4-ордера (те же тикеты),
// это можно сделать, изменив размер билета на отрицательный: OrderModify(-Ticket, ...).
// Добавляем: OrderSelect(INT_MAX, SELECT_BY_POS) - переключение на позицию MT5 без проверки существования и обновления.
// OrderSelect(INT_MIN, SELECT_BY_POS) - переключение на живой ордер MT5 без проверки существования и обновления.
// Исправление: Реализована более быстрая работа с историей сделок.
// 30.09.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 08.10.2020
// Исправление: OrderSend рыночного ордера мог выполняться дольше из-за недостатка в свежем поиске сделок в MT5.
// 21.10.2020
// Добавление: Для обеспечения совместимости с MT4 добавлена функция OrderTicketID() - возвращает OrderTicket().
// 11.11.2020
// Исправление: OrderTicketID() и OrderTicketOpen() возвращают тип значения, указанный в TICKET_TYPE.
// 06.12.2020
// Исправление: Теперь учитываются случаи некорректных записей об исполнении SL/TP в истории торговли MT5.
// Добавление: Рынок MT4ORDERS_TESTER_SELECT_BY_TICKET заставляет SELECT_BY_TICKET работать в тестере только через OrderTicketID().
// 04.05.2021
// Исправление: Ордера MT5, которые открывают позиции и не исчезают, больше не добавляются в список ордеров MT4.
// Исправление: ордера CloseBy MT5 больше не отображались в списке ордеров MT4.
// 12.05.2021
// Добавить: Макрос MT4ORDERS_BYPASS_MAXTIME изменяет постоянно возникающие случаи рассинхронизации торговых сред в MT5.
// 13.05.2021
// Исправление: Исправлена ошибка в функции OrderOpenReason().
// 14.05.2021
// Исправление: механизм BYPASS больше не влияет на OrderSelect(INT_MAX, SELECT_BY_POS) и OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Исправление: Совместимость с компилятором сборки 2449 и выше.
// Исправление: улучшена синхронизация. ByPass.mqh должен быть последней версии.
// Добавляем: OrderLots(true) - синхронизированный размер выбранной позиции, учитывающий все ордера, которые закрывают эту позицию.


Я рекомендую использовать последнюю версию вместе с механизмом синхронизации. Тогда все проблемы, которые не может решить ни одна торговая библиотека, будут незаметны.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в микросекундах) ожидания синхронизации торговой среды
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Чтобы механизм заработал, необходимо скачать эту библиотеку. Все сложные и эффективные проверки корректности работы торговой среды будут выполняться автоматически, не отвлекая пользователя при написании торговой логики.


 

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Библиотеки: MT4Orders

fxsaber, 2021.06.02 10:09

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


Отличие от предыдущей версии, которая была доступна на англоязычной странице.

// Список изменений:.
// 02.11.2018
// Исправление: теперь цена открытия позиции в MT4 не может быть нулевой до ее срабатывания.
// Исправление: учтены некоторые редкие аспекты исполнения некоторых торговых серверов.
// 26.11.2018
// Fix: Magic and comment of a closed MT4 position: Priority of relevant fields of opening transactions is higher than that of closing ones. Fix: Magic and comment of a closed MT4 position: Priority of the relevant fields of opening transactions is higher than that of closing
// Исправление: Редкие изменения в MT5-OrdersTotal и MT5-PositionsTotal учитываются при расчете MT4-OrdersTotal и MT4- OrderSelect.
// Исправление: Библиотека не учитывала ордера, которые открыли позицию, но еще не были удалены из MT5.
// 17.01.2019
// Исправление: Исправлена досадная ошибка при выборе отложенных ордеров.
// 08.02.2019
// Добавление: Комментарий позиции сохраняется при частичном закрытии через OrderClose.
// Если вам нужно изменить комментарий к открытой позиции при частичном закрытии, вы можете указать его в OrderClose.
// 20.02.2019
// Исправление: в случае отсутствия ордера MT5, библиотека будет ожидать синхронизации истории от существующей сделки MT5. Исправление: в случае отсутствия ордера MT5 библиотека будет ожидать синхронизации истории от существующей сделки MT5.
// 13.03.2019
// Добавление: Добавлена функция OrderTicketID() - идентификатор позиции сделки MT5 или позиции MT5, а также тикет отложенного ордера MT4.
// Добавьте: SELECT_BY_TICKET работает для всех тикетов MT5 (и MT5-PositionID).
// 02.11.2019
// Исправление: исправлены лот, комиссия и цена закрытия для позиций CloseBy.
// 12.01.2020
// Исправление: OrderTicketID() для балансовых сделок теперь возвращает корректное значение.
// Исправление: Исправлен SELECT_BY_TICKET - выбор по OrderTicketID() (MT5-PositionID).
// Исправление: изменено название метода внутренней библиотеки для большей совместимости с макросами.
// 10.04.2020
// Исправление: частично исполненный живой отложенный ордер не попадал в OrdersTotal().
// 09.06.2020
// Добавление: StopLoss/TakeProfit/ClosePriceRequest для закрытых позиций теперь лучше определен.
// 10.06.2020
// Добавление: Добавлены миллисекунды, удалено округление цены и ордера в OrderPrint().
// 13.08.2020
// Добавление: Добавлена возможность проверки работоспособности частей библиотеки с помощью макроса MT4ORDERS_BENCHMARK_MINTIME.
// 20.08.2020
// Фикс: Учет выявленных особенностей выполнения частичных заказов.
// 29.08.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 24.09.2020
// Добавить: Если необходимо увеличить приоритет ордера МТ5 над позицией МТ5 при выборе ордера МТ4 по SELECT_BY_TICKET (те же самые билеты), // Добавить: Если необходимо увеличить приоритет ордера МТ5 над
// это можно сделать, изменив размер билета на отрицательный: OrderSelect(-Ticket, SELECT_BY_ TICKET).
// Добавить: Если вам нужно указать выбор только MT5-ордера при модификации живого MT4-ордера (те же тикеты), вы можете использовать следующие опции.
// это можно сделать, изменив размер билета на отрицательный: OrderModify(-Ticket, ...) .
// Добавляем: OrderSelect(INT_MAX, SELECT_BY_POS) - переключение на позицию MT5 без проверки существования и обновления.
// OrderSelect(INT_MIN, SELECT_BY_POS) - переключение на живой ордер MT5 без проверки существования и обновления.
// Исправление: Реализована более быстрая работа с историей сделок.
// 30.09.2020
// Исправление: Реализована более быстрая работа с историей сделок.
// 08.10.2020
// Исправление: OrderSend рыночного ордера мог выполняться дольше из-за недостатка в свежем поиске сделок в MT5.
// 21.10.2020
// Добавление: Для обеспечения совместимости с MT4 добавлена функция OrderTicketID() - возвращает OrderTicket().
// 11.11.2020
// Исправление: OrderTicketID() и OrderTicketOpen() возвращают тип значения, указанный в TICKET_TYPE.
// 06.12.2020
// Исправление: Теперь учитываются случаи некорректных записей об исполнении SL/TP в истории торговли MT5.
// Добавление: Рынок MT4ORDERS_TESTER_SELECT_BY_TICKET заставляет SELECT_BY_TICKET работать в тестере только через OrderTicketID().
// 04.05.2021
// Исправление: Ордера MT5, которые открывают позиции и не исчезают, больше не добавляются в список ордеров MT4.
// Исправление: ордера CloseBy MT5 больше не отображались в списке ордеров MT4.
// 12.05.2021
// Добавить: Макрос MT4ORDERS_BYPASS_MAXTIME изменяет постоянно возникающие случаи рассинхронизации торговых сред в MT5.
// 13.05.2021
// Исправление: Исправлена ошибка в функции OrderOpenReason().
// 14.05.2021
// Исправление: механизм BYPASS больше не влияет на OrderSelect(INT_MAX, SELECT_BY_POS) и OrderSelect(INT_MIN, SELECT_BY_POS).
// 01.06.2021
// Исправление: совместимость с компилятором сборки 2449 и выше.
// Исправление: Улучшена синхронизация. ByPass.mqh должен быть последней версии.
// Добавляем: OrderLots(true) - синхронизированный размер выбранной позиции, учитывающий все ордера, которые закрывают эту позицию.


Таким образом, все проблемы, которые не может решить ни одна другая торговая библиотека, будут решены. Я рекомендую использовать последнюю версию вместе с механизмом синхронизации.

#define  MT4ORDERS_BYPASS_MAXTIME 1000000 // Максимальное время (в микросекундах) ожидания синхронизации торговой среды
#include <MT4Orders.mqh> // https://www.mql5.com/en/code/16006

Для работы этого механизма необходимо скачать эту библиотеку. Все комплексные и эффективные проверки корректности работы торговой среды будут выполнены Все сложные и эффективные проверки корректности торгового окружения будут выполняться автоматически, не отвлекая пользователя при написании торговой логики.