Библиотеки: Virtual - страница 71

 
hini #:

Как обновить эту дату?

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

За годы использования у меня не возникала проблема с заданием даты напрямую. Потому что в EA постоянно что-то вносится.


Но чтобы начальная дата годами не была одной и той же, сделал подобное.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2020.03.18 05:43

При запуске советника часто нужно определиться со временем, с которого забирать историю цен. Чтобы каждый раз не вводить вручную, сделал так.
#define WEEK (7 * 24 * 3600)
input datetime temp = __DATE__ - WEEK;

Соответственно, беру историю за неделю до момента компиляции. Удобно.



Начать новый период, когда все виртуальные/реальные торговые системы закроют свои позиции?

Ни в коем случае! Ведь виртуальное окружение "содержит" не только позиции, но и все значения внутренних переменных EA. В этом и состоит огромное преимущество использования виртуального окружения через самовосстановление.

 
fxsaber #:

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

За годы использования у меня не возникала проблема с заданием даты напрямую. Потому что в EA постоянно что-то вносится.


Но чтобы начальная дата годами не была одной и той же, сделал подобное.



Ни в коем случае! Ведь виртуальное окружение "содержит" не только позиции, но и все значения внутренних переменных EA. В этом и состоит огромное преимущество использования виртуального окружения через самовосстановление.

Как быть с несоответствием позиций виртуальной стратегии из-за использования косвенных дат? Например, если использовать стратегию Мартингейла, разное время открытия первой позиции приведет к тому, что все последующие позиции будут различаться.

 
hini #:

Как быть с несоответствием позиций виртуальной стратегии из-за использования косвенных дат? Например, если использовать стратегию Мартингейла, разное время открытия первой позиции приведет к тому, что все последующие позиции будут различаться.

Так это уже логика ТС. Надо запускаться с момента, где все будет однозначно. Для тех же тиковых скальперов, как правило, одних суток достаточно.

Уверен, что для мартингейла года точно будет хватать. Это вопрос всего нескольких секунд расчета при запуске советника.

 
fxsaber #:

Так это уже логика ТС. Надо запускаться с момента, где все будет однозначно. Для тех же тиковых скальперов, как правило, одних суток достаточно.

Уверен, что для мартингейла года точно будет хватать. Это вопрос всего нескольких секунд расчета при запуске советника.

ok

 
fxsaber #:

Уверен, что для мартингейла года точно будет хватать. Это вопрос всего нескольких секунд расчета при запуске советника.

При первом запуске замеряю производительность расчета истории.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

fxsaber, 2024.03.05 16:01

Calculate Time (2024.02.27 00:00:00 - 2024.03.05 17:23:48, 122017 ticks) = 21 ms. (5810333 ticks/sec) X64 Regular Release, Optimization compiler = true
Calculate Time (2024.02.27 00:00:00 - 2024.03.05 17:24:26, 122043 ticks) = 46 ms. (2653108 ticks/sec) X64 Regular Release, Optimization compiler = false

Думаю, если производительность меньше миллиона тиков в секунду, необходимо искать проблему медленной работы в логике своей ТС.

 
fxsaber #:

При первом запуске замеряю производительность расчета истории.


Думаю, если производительность меньше миллиона тиков в секунду, необходимо искать проблему медленной работы в логике своей ТС.

10 миллионов тиков, я прогнал за 24 секунды, оптимизированная версия
 
hini #:
10 миллионов тиков, я прогнал за 24 секунды, оптимизированная версия

Очень медленно. Возможно, в этом дело.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: Virtual

fxsaber, 2025.02.25 08:23

значительно ускорил выполнение вашего кода и браузера.

  1. Отключил действия в реальном окружении.
  2. Избавился от string.
  3. Отчет заменил на QuickReport.
 
fxsaber #:

Очень медленно.

Я думаю, что это из-за OrdersTotal. В коде есть два места, где выполняется цикл `for (int i = OrdersTotal() - 1; i >= 0; --i)`.
 
hini #:
Я думаю, что это из-за OrdersTotal.

Профайлер посмотрите.

 
hini #:
Я думаю, что это из-за OrdersTotal. В коде есть два места, где выполняется цикл `for (int i = OrdersTotal() - 1; i >= 0; --i)`.

Я закомментировал один вызов UpdatePosi (внутри которого вызывается OrdersTotal), и время сократилось до 13 секунд.