По всему фронту, включая системные оверхеды в тестере. Некоторые вещи ускоряем в разы.
Скоро мы представим новую модель тестера с совершенно другим интерфейсом.
Советник (только выставляет в OnInit заданное (Amount) количество позиций)
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006inputint inRange = 0; // 1 .. 5inputint inAmount = 1; // Amount of positionsinputint iTakeProfit = 10000; // TakeProfit in pipsuint iStartTime;
voidOnInit()
{
constdouble Price = SymbolInfoDouble(_Symbol, SYMBOL_ASK);
for (int i = 0; i < inAmount; i++)
OrderSend(_Symbol, OP_BUY, 0.1, Price, 100, 0, Price + iTakeProfit * _Point);
iStartTime = GetTickCount(); // Начинается замер специально в OnInit, а не снаружи
}
doubleOnTester()
{
return(GetTickCount() - iStartTime);
}
Amount = 0
2019.01.1523:34:23.184 Core 1 pass 0 returned result 10764.00in0:00:10.9512019.01.1523:34:23.184 Core 1 pass 1 started
2019.01.1523:34:27.696 Core 1 pass 1 returned result 4462.00in0:00:04.5092019.01.1523:34:27.696 Core 1 pass 2 started
2019.01.1523:34:31.823 Core 1 pass 2 returned result 4088.00in0:00:04.1192019.01.1523:34:31.823 Core 1 pass 3 started
2019.01.1523:34:37.633 Core 1 pass 3 returned result 5725.00in0:00:05.8032019.01.1523:34:37.633 Core 1 pass 4 started
2019.01.1523:34:41.550 Core 1 pass 4 returned result 3868.00in0:00:03.9162019.01.1523:34:41.550 Tester optimization finished, total passes 52019.01.1523:34:41.560 Statistics optimization done in0 minutes 30 seconds
2019.01.1523:34:41.560 Statistics shortest pass 0:00:03.916, longest pass 0:00:10.951, average pass 0:00:05.8592019.01.1523:34:41.560 Statistics local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
Amount = 1
2019.01.1523:20:59.851 Core 1 pass 0 returned result 15959.00in0:00:16.0682019.01.1523:20:59.851 Core 1 pass 1 started
2019.01.1523:21:11.453 Core 1 pass 1 returned result 11559.00in0:00:11.6062019.01.1523:21:11.453 Core 1 pass 2 started
2019.01.1523:21:22.423 Core 1 pass 2 returned result 10935.00in0:00:10.9672019.01.1523:21:22.423 Core 1 pass 3 started
2019.01.1523:21:33.993 Core 1 pass 3 returned result 11513.00in0:00:11.5602019.01.1523:21:33.993 Core 1 pass 4 started
2019.01.1523:21:45.126 Core 1 pass 4 returned result 11091.00in0:00:11.1222019.01.1523:21:45.127 Tester optimization finished, total passes 52019.01.1523:21:45.137 Statistics optimization done in1 minutes 02 seconds
2019.01.1523:21:45.137 Statistics shortest pass 0:00:10.967, longest pass 0:00:16.068, average pass 0:00:12.2642019.01.1523:21:45.137 Statistics local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
Amount = 5
2019.01.1523:22:52.868 Core 1 pass 0 returned result 38595.00in0:00:38.7662019.01.1523:22:52.868 Core 1 pass 1 started
2019.01.1523:23:34.517 Core 1 pass 1 returned result 41574.00in0:00:41.6362019.01.1523:23:34.517 Core 1 pass 2 started
2019.01.1523:24:05.763 Core 1 pass 2 returned result 31153.00in0:00:31.2312019.01.1523:24:05.763 Core 1 pass 3 started
2019.01.1523:24:34.933 Core 1 pass 3 returned result 29126.00in0:00:29.1732019.01.1523:24:34.933 Core 1 pass 4 started
2019.01.1523:25:03.608 Core 1 pass 4 returned result 28627.00in0:00:28.6732019.01.1523:25:03.609 Tester optimization finished, total passes 52019.01.1523:25:03.619 Statistics optimization done in2 minutes 50 seconds
2019.01.1523:25:03.619 Statistics shortest pass 0:00:28.673, longest pass 0:00:41.636, average pass 0:00:33.8952019.01.1523:25:03.619 Statistics local 5 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
Только один локальный Агент для замера использовался. Папка tester на виртуальном диске в ОЗУ. Режим по реальным тикам (Hedge), кастомный символ (чтобы кроссов избежать). Количество тиков
2019.01.1523:27:42.769 Core 1 EURUSD.rann_RannForex,M1: 26469758 ticks, 324894 bars generated. Environment synchronized in 0:00:00.140. Test passed in 0:00:16.770 (including ticks preprocessing 0:00:04.914).
По логам видно, что 26.5 млн тиков "пустышка" проходит почти за 4 секунды. Быстро это или нет?
11 секунд для Amount = 1. И 28 секунд для Amount = 5. Такое замедление - нормально?
Дело в том, что сравнивал с другим "Тестером" и там такого сильного замедления не происходит. Подробности здесь.
ЗЫ Не могу понять, почему в Тестере такой сильный разброс по времени выполнения проходов. Почти в 1.5 раза.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Сохранение тиков в только что созданный кастомный символ одним куском
длится больше минуты - 26 млн тиков.
Сохранение тиков в только что созданный кастомный символ одним куском
длится больше минуты - 26 млн тиков.
Дайте полный код, пожалуйста.
Ускорим.
Выпустили бету 1971 с массой улучшений производительности.
Ура, заработало!
Спасибо.
Дайте полный код, пожалуйста.
Ускорим.
Этот код не совсем тот - не дождаться конца выполнения. Попытка снятия скрипта приводит к длительному зависанию Терминала.
А если все свойства символа корректно задать и тики нормальные сделать - то это воспроизводит этот скрипт.
Немного поспешил радоваться :)
Функция ObjectFind теперь работает быстрее, но всё равно значительно медленнее, чем до 1968
Сейчас в четвёрке время выполнения 0.
и функции ObjectGetInteger и ObjectGetString стали "поджирать" время
По всему фронту, включая системные оверхеды в тестере. Некоторые вещи ускоряем в разы.
Скоро мы представим новую модель тестера с совершенно другим интерфейсом.
Советник (только выставляет в OnInit заданное (Amount) количество позиций)
Amount = 0
Amount = 1
Amount = 5
Только один локальный Агент для замера использовался. Папка tester на виртуальном диске в ОЗУ. Режим по реальным тикам (Hedge), кастомный символ (чтобы кроссов избежать). Количество тиков
По логам видно, что 26.5 млн тиков "пустышка" проходит почти за 4 секунды. Быстро это или нет?
11 секунд для Amount = 1. И 28 секунд для Amount = 5. Такое замедление - нормально?
Дело в том, что сравнивал с другим "Тестером" и там такого сильного замедления не происходит. Подробности здесь.
ЗЫ Не могу понять, почему в Тестере такой сильный разброс по времени выполнения проходов. Почти в 1.5 раза.
Ошибка компиляции при кастинге структуры, содержащей сложные объекты:
Почему копирование работает, а кастинг - нет?
Ошибка компиляции при кастинге структуры, содержащей сложные объекты:
Почему копирование работает, а кастинг - нет?
А куда вы его кастили и как понимать эту строку?
Немного поспешил радоваться :)
Функция ObjectFind теперь работает быстрее, но всё равно значительно медленнее, чем до 1968
Сейчас в четвёрке время выполнения 0.
и функции ObjectGetInteger и ObjectGetString стали "поджирать" время