MT4-Tester VS MT5-Tester - страница 6

 
Alain Verleyen:

But your original version with build 1596 is far slower so your original comparison with MT4 must be updated.

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


Сконвертировал Ваш код в MT4 через MT5Bridge. MT4build1072

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:07.645 (total time 0:00:08.362)


Оригинальный код

EURUSD,M1: 1865415 tick events (7292 bars, 1865515 bar states) processed in 0:00:03.744 (total time 0:00:04.493)


Результаты после конвертации идентичны! Скорость упала в два раза.

 
Yuriy Zaytsev:

логичней писать оптимальный алгоритм!

 

Каким образом?
 
-Aleks-:

 

Каким образом?
Один раз за цикл получать необходимые данные. Цикл гнать только при необходимости, а не на каждом тике.
 
-Aleks-:

 

Каким образом?
Получить историю  при старте ,один раз и запомнить. 
Затем , отслеживать только  поступающие в историю ордера.
 
Artyom Trishkin:
Один раз за цикл получать необходимые данные. Цикл гнать только при необходимости, а не на каждом тике.

 У меня советник работает только по ценам открытия. Чем больше история тем медленней работает - в разы.

 
Yuriy Zaytsev:
Получить историю  при старте ,один раз и запомнить. 
Затем , отслеживать только  поступающие в историю ордера.

 

При старте у тестера нет истории...
 
-Aleks-:

 

При старте у тестера нет истории...

Если говорить только о тестере, конечно ее нет.

В любом случае на каждом тике ,и даже на каждом баре, не стоит перебирать всю историю.

Если тест идет на тиках  - то  достаточно выбрать только один поступивший в историю ордер.

-Aleks-:

 У меня советник работает только по ценам открытия. Чем больше история тем медленней работает - в разы.


Если тест идет на барах - то в историю могло приехать несколько ордеров,  значит отследить только эти ордера.

 
-Aleks-:

 У меня советник работает только по ценам открытия. Чем больше история тем медленней работает - в разы.

В историческом списке чем больше закрытых позиций, тем дольше цикл. Ограничивайте цикл небольшой достаточной глубиной истории.
 
Artyom Trishkin:
В историческом списке чем больше закрытых позиций, тем дольше цикл. Ограничивайте цикл небольшой достаточной глубиной истории.


У меня есть подозрение, что тестер начинает тормозить не от самих ордеров, а от их модификации - этот процесс происходит на каждом баре.


Yuriy Zaytsev:

Если говорить только о тестере, конечно ее нет.

В любом случае на каждом тике ,и даже на каждом баре, не стоит перебирать всю историю.

Если тест идет на тиках  - то  достаточно выбрать только один поступивший в историю ордер.


Если тест идет на барах - то в историю могло приехать несколько ордеров,  значит отследить только эти ордера.


Я редко перебираю историю - замедление происходит из-за накоплении истории, как таковой - по моим ощущениям.

Если бы можно было получать информацию о номере ордера по его дате (первый номер в этой дате), то большого перебора можно было бы избежать - перебирать ордера по количеству попадающему в диапазон.

 
-Aleks-:


У меня есть подозрение, что тестер начинает тормозить не от самих ордеров, а от их модификации - этот процесс происходит на каждом баре.



Я редко перебираю историю - замедление происходит из-за накоплении истории, как таковой - по моим ощущениям.

Если бы можно было получать информацию о номере ордера по его дате (первый номер в этой дате), то большого перебора можно было бы избежать - перебирать ордера по количеству попадающему в диапазон.

bool  HistorySelect(datetime  from_date, // с даты 
                    datetime  to_date);  // по дату


Причина обращения: