for (int i = 0; i < OrdersHistoryTotal(); i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
// ...
Это ведет к вызову OrdersHistoryTotal() на каждом проходе цикла. Функция оптимизирована и выполняется быстро, но все равно будет осуществляться каждый раз проверка на изменение Истории. Что явно лишнее и забирает драгоценное время. Поэтому правильно писать так
constint Total = OrdersHistoryTotal();
for (int i = 0; i < Total; i++)
if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY))
// ...
// Список изменений:// 26.08.2017:// Add: Добавлены OrderOpenTimeMsc() и OrderCloseTimeMsc() - соответствующее время в миллисекундах.// Fix: Раньше все торговые тикеты имели тип int, как в MT4. Из-за появления случаев выхода за пределы int-типа в MT5, тип тикетов изменен на long.// Соответственно, OrderTicket и OrderSend возвращают long-значения. Режим возврата того же типа, что и в MT4 (int), включается через// прописывание следующей строки перед #include <MT4Orders.mqh>// #define MT4_TICKET_TYPE // Обязываем OrderSend и OrderTicket возвращать значение такого же типа, как в MT4 - int.
// Список изменений:// 03.09.2017:// Add: Добавлены OrderTicketOpen() - тикет MT5-сделки открытия позиции// OrderOpenReason() - причина проведения MT5-сделки открытия (причина открытия позиции)// OrderCloseReason() - причина проведения MT5-сделки закрытия (причина закрытия позиции)
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Где взять последнюю библиотеку?
Последняя версия всегда доступна на странице библиотеки.
А то с той, что у меня есть советник замедлился.
С библиотекой
2017.08.23 12:03:00.097 Core 3 Si Splice,M1: 992989 ticks, 248280 bars generated. Environment synchronized in 0:00:00.078. Test passed in 0:01:24.069 (including ticks preprocessing 0:00:00.421).
Без библиотеки
2017.08.23 12:06:38.022 Core 3 Si Splice,M1: 992989 ticks, 248280 bars generated. Environment synchronized in 0:00:00.079. Test passed in 0:01:09.186 (including ticks preprocessing 0:00:00.421).
Разница лишь в классе, который отрабатывает при деинициализации, пробегаясь по закрытым ордерам - он был написан на MT4.
Подобный класс должен отрабатывать за считанные миллисекунды.
Последняя версия всегда доступна на странице библиотеки.
Подобный класс должен отрабатывать за считанные миллисекунды.
Обновил библиотеку, значительно лучше результат
2017.08.23 14:02:22.204 Core 3 Si Splice,M1: 992989 ticks, 248280 bars generated. Environment synchronized in 0:00:00.062. Test passed in 0:01:10.341 (including ticks preprocessing 0:00:00.437).
Обновил библиотеку, значительно лучше результат
Учитывайте такой нюанс. Многие пишут так
Это ведет к вызову OrdersHistoryTotal() на каждом проходе цикла. Функция оптимизирована и выполняется быстро, но все равно будет осуществляться каждый раз проверка на изменение Истории. Что явно лишнее и забирает драгоценное время. Поэтому правильно писать так
Так будет быстрее.
// if (MT4ORDERS::OrderSendBug)
// {
// Alert("BUG!!!!!!");
//
// //MT4ORDERS_BENCHMARK;
// }
что это за алерт в коде? он выдает "баг" если история не синхронизировалась за опр. время?
Нашел ранее в каментах, вопрос отпал. Стало быть ничего критичного, тоже иногда выскакивало.
// if (MT4ORDERS::OrderSendBug)
// {
// Alert("BUG!!!!!!");
//
// //MT4ORDERS_BENCHMARK;
// }
что это за алерт в коде? он выдает "баг" если история не синхронизировалась за опр. время?
Нашел ранее в каментах, вопрос отпал. Стало быть ничего критичного, тоже иногда выскакивало.
Да, все верно. Редкий баг разработчиков. Только в библиотеке больше месяца вот так это выглядит
Настоятельно рекомендую обновиться.
Да, все верно. Редкий баг разработчиков. Только в библиотеке больше месяца вот так это выглядит
Настоятельно рекомендую обновиться.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Библиотеки: TesterBenchmark
fxsaber, 2017.09.05 09:36
Отставание MT4Orders от максимально оптимизированного чистого MQL5 менее процента.