После запуска тестера в режиме по реальным тикам, например для сохранения истории в файл или расчета стратегии, то при переключении в режим мат. вычислений - результаты совпадают. при этом параметры записанных параметров символа правильно записаны
Point=0.0001 Digits=4 TickSize=1.0 TickValue=-nan - прочитано с помощью GetSymbolBase() - дефолтные значения для нового символа
считано из файла:
Symbol=BTCUSDT.bbt.linear Point=0.1 Digits=1 TickSize=0.1 TickValue=0.1
и записано SetSymbolBase()
Point=0.1 Digits=1 TickSize=0.1 TickValue=1.0 - прочитано из GetSymbolBase()
Соответствует тому что записано. TickValue=1 т.к. было _TickValue / _TickSize
Но спустя какое то время, видимо из за выгрузки тестера из памяти, он запускается уже чистый (без памяти о предыдущем запуске в режиме по реальным тикам). Аналогичный результат можно получить закрытием и открытием терминала. При этом запуск в мат режиме выдает результаты отличающиеся от правильных. Печать параметров символа точно такая же.
Point=0.1 Digits=1 TickSize=0.1 TickValue=1.0
Значит где-то что-то еще потерялось... Например MT4Orders.mqh или другая функция могла использовать дефолтные
::SymbolInfoDouble(sSymb, SYMBOL_TRADE_TICK_SIZE); ::SymbolInfoDouble(sSymb, SYMBOL_TRADE_TICK_VALUE);TickValue или TickSize
Или какие-то другие параметры. Если да, то там надо использовать восстановленные из файла Point, Digits, TickSize, TickValue или возможно что-то другое.
Правильные расчеты: Неправильные после перезапуска тестера:
Отличия в числе знаков после запятой при расчете профита (скорее всего Digits=0, т.к. порядок чисел верный)
Быстрая JavaScript версия библиотеки Report от fxsaber для торговых команд в стиле MT4 реализованных через MT4Orders или Virtual. Работает до 10 раз быстрее, размер НТМL файлов меньше, может выгрузить и отобразить до 5.4 млн. строк отчета.
Просьба сделать замеры, как влияет на производительность добавление сразу этих трех макросов.
#define VIRTUAL_ALTERNATIVE // Альтернативная скорость расчетов#define VIRTUAL_SELECTORDERS_OBJECT // Работа с выбранным окружением без указателей, отключает мультивалютку.#define VIRTUAL_ORDERSELECT_WITHOUT_COPY // OrderSelect без копирования ORDER-структуры, отключает мультивалютку.
fxsaber #: Просьба сделать замеры, как влияет на производительность добавление сразу этих трех макросов.
22894 трейдов за полгода. Виртуал по реал тикам:
Core 1 pass 0 returned result -2.950378 in 0:00:13.901 Core 1 pass 1 returned result -2.950378 in 0:00:10.102 Core 1 pass 2 returned result -2.950378 in 0:00:10.097 Core 1 pass 3 returned result -2.950378 in 0:00:10.123 Core 1 pass 4 returned result -2.950378 in 0:00:10.118 Tester optimization finished, total passes 5 Statistics optimization done in 0 minutes 54 seconds Statistics shortest pass 0:00:10.097, longest pass 0:00:13.901, average pass 0:00:10.868
На первом проходе видимо подготовительные операции тестера происходят.
Он же с макросами
Core 1 pass 0 returned result -2.950378 in 0:00:13.009 Core 1 pass 1 returned result -2.950378 in 0:00:12.723 Core 1 pass 2 returned result -2.950378 in 0:00:12.725 Core 1 pass 3 returned result -2.950378 in 0:00:12.658 Core 1 pass 4 returned result -2.950378 in 0:00:12.703 Tester optimization finished, total passes 5 Statistics optimization done in 1 minutes 04 seconds Statistics shortest pass 0:00:12.658, longest pass 0:00:13.009, average pass 0:00:12.763
Мат. режим без макросов
Core 1 pass 0 returned result -2.950378 in 0:00:06.358 Core 1 pass 1 returned result -2.950378 in 0:00:06.330 Core 1 pass 2 returned result -2.950378 in 0:00:06.331 Core 1 pass 3 returned result -2.950378 in 0:00:06.328 Core 1 pass 4 returned result -2.950378 in 0:00:06.336 Tester optimization finished, total passes 5 Statistics optimization done in 0 minutes 32 seconds Statistics shortest pass 0:00:06.328, longest pass 0:00:06.358, average pass 0:00:06.336
Он же с макросами
Core 1 pass 0 returned result -2.950378 in 0:00:08.298 Core 1 pass 1 returned result -2.950378 in 0:00:08.256 Core 1 pass 2 returned result -2.950378 in 0:00:08.259 Core 1 pass 3 returned result -2.950378 in 0:00:08.459 Core 1 pass 4 returned result -2.950378 in 0:00:08.404 Tester optimization finished, total passes 5 Statistics optimization done in 0 minutes 41 seconds Statistics shortest pass 0:00:08.256, longest pass 0:00:08.459, average pass 0:00:08.335
После запуска тестера в режиме по реальным тикам, например для сохранения истории в файл или расчета стратегии, то при переключении в режим мат. вычислений - результаты совпадают.
при этом параметры записанных параметров символа правильно записаны
Но спустя какое то время, видимо из за выгрузки тестера из памяти, он запускается уже чистый (без памяти о предыдущем запуске в режиме по реальным тикам). Аналогичный результат можно получить закрытием и открытием терминала.
При этом запуск в мат режиме выдает результаты отличающиеся от правильных.
Печать параметров символа точно такая же.
Point=0.1 Digits=1 TickSize=0.1 TickValue=1.0
Значит где-то что-то еще потерялось...
Например MT4Orders.mqh или другая функция могла использовать дефолтные
::SymbolInfoDouble(sSymb, SYMBOL_TRADE_TICK_SIZE);
::SymbolInfoDouble(sSymb, SYMBOL_TRADE_TICK_VALUE);TickValue или TickSize
Или какие-то другие параметры. Если да, то там надо использовать восстановленные из файла Point, Digits, TickSize, TickValue или возможно что-то другое.


Правильные расчеты:
Неправильные после перезапуска тестера:
Отличия в числе знаков после запятой при расчете профита (скорее всего Digits=0, т.к. порядок чисел верный)
Не знаю, наблюдается ли такое в EaToMach...
Обновление - добавлен VIRTUAL::SetSymbolBase.
Отличия в числе знаков после запятой при расчете профита (скорее всего Digits=0, т.к. порядок чисел верный)
Пропишите этот макрос (описание в Order.mqh).
не помоголо
Обновите Orders.mqh.
У себя используете этой свойство.
не помоголо
Нашел проблему: в моем MT4Orders_QuickReport.mqh
использовался
(int)::AccountInfoInteger(ACCOUNT_CURRENCY_DIGITS);
для округления.
Видимо там 0 в мат режиме.Нашел проблему
После обновления Orders.mqh будет работать корректно.
Да - стало правильно. Спасибо.
Просьба сделать замеры, как влияет на производительность добавление сразу этих трех макросов.
Виртуал по реал тикам:
Core 1 pass 1 returned result -2.950378 in 0:00:10.102
Core 1 pass 2 returned result -2.950378 in 0:00:10.097
Core 1 pass 3 returned result -2.950378 in 0:00:10.123
Core 1 pass 4 returned result -2.950378 in 0:00:10.118
Tester optimization finished, total passes 5
Statistics optimization done in 0 minutes 54 seconds
Statistics shortest pass 0:00:10.097, longest pass 0:00:13.901, average pass 0:00:10.868
На первом проходе видимо подготовительные операции тестера происходят.
Он же с макросами
Core 1 pass 0 returned result -2.950378 in 0:00:13.009
Core 1 pass 1 returned result -2.950378 in 0:00:12.723
Core 1 pass 2 returned result -2.950378 in 0:00:12.725
Core 1 pass 3 returned result -2.950378 in 0:00:12.658
Core 1 pass 4 returned result -2.950378 in 0:00:12.703
Tester optimization finished, total passes 5
Statistics optimization done in 1 minutes 04 seconds
Statistics shortest pass 0:00:12.658, longest pass 0:00:13.009, average pass 0:00:12.763
Мат. режим без макросов
Core 1 pass 0 returned result -2.950378 in 0:00:06.358
Core 1 pass 1 returned result -2.950378 in 0:00:06.330
Core 1 pass 2 returned result -2.950378 in 0:00:06.331
Core 1 pass 3 returned result -2.950378 in 0:00:06.328
Core 1 pass 4 returned result -2.950378 in 0:00:06.336
Tester optimization finished, total passes 5
Statistics optimization done in 0 minutes 32 seconds
Statistics shortest pass 0:00:06.328, longest pass 0:00:06.358, average pass 0:00:06.336
Он же с макросами
Core 1 pass 0 returned result -2.950378 in 0:00:08.298
Core 1 pass 1 returned result -2.950378 in 0:00:08.256
Core 1 pass 2 returned result -2.950378 in 0:00:08.259
Core 1 pass 3 returned result -2.950378 in 0:00:08.459
Core 1 pass 4 returned result -2.950378 in 0:00:08.404
Tester optimization finished, total passes 5
Statistics optimization done in 0 minutes 41 seconds
Statistics shortest pass 0:00:08.256, longest pass 0:00:08.459, average pass 0:00:08.335