На этот раз для исследования возьмем советник второго по продаваемости (в этом месяце) автора в Маркете.
В режиме по реальным тикам он выглядит так.
TesterReport показывает сильное влияние отрицательных проскальзываний.

Синяя - результат, красная - если бы не было скольжений.
XAUUSD,M1: 62078689 ticks, 424072 bars generated. Environment synchronized in 0:00:00.133. Test passed in 0:00:25.369 (including ticks preprocessing 0:00:05.516). XAUUSD,M1: total time from login to stop testing 0:00:25.502 (including 0:00:00.133 for history data synchronization) 1402 Mb memory used including 46 Mb of history data, 1280 Mb of tick data
62 миллиона тиков прошел за 25 секунд, что косвенно говорит о простой вычислительной логике.
В прошлый раз были показаны различные методики исследования, поэтому не будем повторяться, а попробуем продвинуться дальше.
Аналог.
Покрутив в Визуализаторе в различных режимах моделирования, был создан советник Primitive2.mq4, исходник (прикреплен) которого занимает меньше 5 Кб.
Это столь мало, что в MT4 он компилируется быстрее, чем за 100 мс. И исполняемый EX4-файл занимает 11 Кб.
0 errors, 5 warnings, 92 msec elapsed
Чтоб скомпилировать в MT5 нужно исходник дополнить парой строк.
#define MT4ORDERS_LIBRARY // library-режим работы библиотеки: #import "MT4Orders.ex5". #include <MT4Orders.mqh> // https://www.mql5.com/ru/forum/93352/page87#comment_56270059 #include "Primitive2.mq4" // https://www.mql5.com/ru/blogs/post/768196
0 errors, 0 warnings, 541 msec elapsed, cpu='AVX'
Компиляция уже требует полсекунды и исполняемый EX5-файл занимает 13 Кб.
Результат запуска.
XAUUSD,M1: 62078689 ticks, 424072 bars generated. Environment synchronized in 0:00:00.023. Test passed in 0:00:24.872 (including ticks preprocessing 0:00:05.531). XAUUSD,M1: total time from login to stop testing 0:00:24.895 (including 0:00:00.023 for history data synchronization) 1412 Mb memory used including 46 Mb of history data, 1280 Mb of tick data
Совпадение идеальное. Поэтому дальше будет анализироваться только исходник.
Анализ.
В рынке не более одной открытой позиции, которая открывается заранее выставленной стоповой отложкой. Закрытие почти всегда происходит тоже по стоповому правилу. Поэтому фактор отрицательных скольжений довольно серьезный. Отсюда необходимость для бэктестов ипользовать только реальную тиковую историю, как в бэктестах выше.
Это может быть очень затратно по времени и требованиям к конфигурации CPU/RAM.
Однако, сам советник не содержит индикаторов (кроме баров), поэтому подходит под методику ускорения расчетов даже на старых машинах.
Но сначала хочется обратить внимание на такие строки в коде.
// Dependence on the opening price: https://www.mql5.com/ru/blogs/post/767831 Rates.high = MathMax(OrderOpenPrice() + inTrailSLAccepted * _Point, Rates.high); if (SymbolInfoTick(_Symbol, Tick) && (Tick.bid > Rates.high)) OrderModify(OrderTicket(), OrderOpenPrice(), (Rates.high = Tick.bid) - TrailSL, OrderTakeProfit(), 0);
В алгоритме торговых сигналов содержится зависимость не только от истории котировок, что ни есть хорошо. Однако, если реализовать механизм Virtual+Copy, то такой зависимости можно будет избежать. Читатель может попробовать удалить верхнюю строку и посмотреть, как это скажется на результате...
Ускорение.
В отличие от популярного советника-оригинала из Маркета, наш аналог содержит входные параметры, которые можно оптимизировать для лучшего результата. Да и найдутся желающие этот базовый исходник снабдить еще входными параметрами в исследовательских целях.
Поэтому нужна скорость и точность. Делаем такой советник Primitive.mq5 (прикреплен вместе с исполняемым EX5-файлом).
#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006 #define EATOMATH_RATES _RATES(RatesD1, 2, PERIOD_D1) // Добавление баров. #define RATES_CLOSE_OFF #define RATES_TICKVOLUME_OFF #define RATES_SPREAD_OFF #include <fxsaber\EAToMath\EAToMath.mqh> // https://www.mql5.com/ru/code/61283 #include "Primitive2.mq4" // https://www.mql5.com/ru/blogs/post/768196 double OnTester() { return(AccountInfoDouble(ACCOUNT_BALANCE)); }
И ровно по методике добиваемся такого результата.
EAToMath.mqh version 2026.03.16 CPU: Intel Core i7-2700K @ 3.50GHz, AVX OS: Windows 10 build 19042 Compiler: 5686 AVX Release AgentBuild: 5686 [2026.03.16 15:37:26.183] EAToMath.mqh 1382: XAUUSD: 2025.01.01 - 2026.03.15, 1 Year 2 Months 14 Days, 62 078 689 ticks. [2026.03.16 15:37:26.183] EAToMath.mqh 1387: TotalTime = 00:00:02.930, Performance = 21.19 Ticks (millions)/sec. [2026.03.16 15:37:26.183] EAToMath.mqh 1547: Virtuals: VIRTUAL::Total() = 1 VIRTUAL::GetHandle() = 1 VIRTUAL::GetID() = EAToMath.mqh OnTester result 10264.68 0 : mathematical test passed in 0:00:03.056 26 Mb memory used
Получаем вычисление того же прохода менее, чем за три секунды. С таким выходом.

Т.е. получили производительность более 20 миллионов тиков в секунду (машине почти 15 лет) без потери точности.
Также можно обратить внимание на мизерное потребление памяти. Это значит, что можно бесплатно оптимизировать на многоядерных конфигурациях историю на сотни миллионов тиков, т.к. очень скромное потребление RAM.
Все это может показаться неважным. Но для вычислительных исследований без этого только две альтернативы - почасовая аренда соответствующих вычислительных мощностей, либо использование платного MT5-облака.
Грааль?
Мы смогли повторить торговую логику советника второго автора по продаваемости в Маркете.
Данный "клон" в самом точном режиме бэктестирования показывает уверенный рост без каких-либо оптимизаций.
Открытый лаконичный исходный код и доступ ко входным параметрам.




