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

 

Здравствуйте.

Очень слаб в ООП. Есть предположение, что данная библиотека способна решить мою задачу.

Задача у меня такая - на бирже Moex торговать на одном инструменте пакет разных советников.

Мне нужно выставлять, модернизировать отложенные ордера, получать информацию о финансовом результате конкретного советника.

Как идентифицируются разные стратегии, через маджик?

 
Aleksey Vyazmikin:

Как идентифицируются разные стратегии, через маджик?

Два варианта.

  1. Все также, как в MT4. Много мэджиков.
  2. Как будто открыто несколько MT4-счетов и на каждом запущена одна ТС. Тогда мэджики можно игнорить.
Сам использую второй вариант.
 
fxsaber:

Два варианта.

  1. Все также, как в MT4. Много мэджиков.
  2. Как будто открыто несколько MT4-счетов и на каждом запущена одна ТС. Тогда мэджики можно игнорить.

Без MT4 значит никак? Мне бы был интересен вариант просто отправки виртуальных ордеров в общую базу. В базе мониторинг исполнения и сообщение о результатах по запросу.

 

Пытаюсь ускорить тестирование.

Переделал вызов OrderSend с СЛ и ТП в виртуальную торговлю (с помощью "максимума пользовательского критерия"), время получилось +- одинаковое.

Перенес виртуальную торговлю в OnTester() c добавлением цикла по массиву истории, опять врямя одинаковое.

Сделал одновременно OrderSend из OnTick и виртуальную торговлю из OnTester, время то же самое, не удвоилось.

Вынес виртуальную торговлю в скрипт с добавлением дополнительных циклов по нужному диапазону переменных (по сути свой тестер сделал), получил ускорение в 12 раз.

Вы ничем таким не занимались? Это у меня ошибка или особенность тестера. Если просто в скрипте такое ускорение, то на видеокарте можно получить еще больше. В МТ есть OpenCL, DirectX, можно свой тестер сделать на GPU и с визуализацией не хуже штатного.

 
Rorschach:

Здесь уже описывал, как применяю библу. Было много примеров. Встроенный Тестер в Virtual работает почти с самого начала публикации библиотеки.

Визуализатор с эксклюзивными фишками на базе Virtual лежит в КБ.

 
fxsaber:

Здесь уже описывал, как применяю библу. Было много примеров. Встроенный Тестер в Virtual работает почти с самого начала публикации библиотеки.

Визуализатор с эксклюзивными фишками на базе Virtual лежит в КБ.

Я пробовал вашу библиотеку, ускорение не получил. Есть подозрение, что тестер много временени тратит на эмуляцию торгового окружения. Так много, что задвоенная логика эксперта не оказывает влияние на время.

ПС Запустил пустой советник, без OnTick, без OnTrade. Показывает рассчетное время 14 минут по тикам за этот год.

upd Для демонстрации советник и скрипт. Еще замечу, что скрипт работает на 1 ядре.

Настройки тестера:

upd2

fxsaber:

Здесь уже описывал, как применяю библу. Было много примеров. Встроенный Тестер в Virtual работает почти с самого начала публикации библиотеки.

Визуализатор с эксклюзивными фишками на базе Virtual лежит в КБ.

Понял о чем речь. Добавил скрипт.

Вчерашний вывод о быстродействии в режимах OnTick и OnTester не совсем правильный.

Для настроек тестера как на скрине (4 ядра):

Основной код в OnTick:

mt5 style 1.06 мин (1 ядро: 2.54)

mt4 style 1.06 мин

#define VIRTUAL_TESTER 1.07 мин

моя "виртуальная" система 1.07 мин

Основной код в OnTester:

моя "виртуальная" система 3.09 мин

Результаты для тестера на основе скрипта (1 ядро):

моя "виртуальная" система 10,8 сек

VIRTUAL::NewTick 18,2 сек

Выводы: OnTester почему то работает медленнее. Virtual при всей мощи уступает только на 80% самому простому коду, а в тестере на равне. Закрыл для себя эту тему.

Файлы:
EA.mq5  7 kb
Script.mq5  5 kb
 
Еще одно простое практическое применение.

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

Новая версия платформы MetaTrader 5 build 2650: Фоновая загрузка графиков и улучшения в профилировщике MQL5-кода

fxsaber, 2020.10.23 09:25

Огромная практическая нужда в этом: надо всегда иметь возможность сравнить текущее реальное состояние позиций/ордеров и истории с тем, что было бы в Тестере. Это очень сильно помогает ответить на вопрос: возникшая ситуация - результат работы брокера или советника?

Очень давно практикую такую вещь через Виртуал. Т.е. в любое время могу сравнивать состояние Тестера и Реала. И это сильно помогает многое осознать. Например, на форуме сообщал о багах, обнаружение которых возникло благодаря именно такой возможности.


Ждать следующих суток нельзя. Висит какая-то позиция с минусом. Вроде, не должна. Быстро посмотрел Тестер - и там висит. Значит, что-то не учел в логике самого советника или ошибся в оценке текущей ситуации. Брокера беспокоишь гораздо меньше глупыми вопросами. В общем, одни плюсы.


ЗЫ Десятки советников, сотни сделок в сутки. Быстро посмотреть текущую ситуацию с Тестера - важная необходимость.


 

Правильно ли я понимаю, что виртуал заточен считать прибыть в основном в пипсах?

  double GetProfit( void ) const
  {
    return((this.Type == ORDER_TYPE_BUY) ? this.Lots * (this.ClosePrice - this.OpenPrice) / _Point
                                         : ((this.Type == ORDER_TYPE_SELL) ? this.Lots * (this.OpenPrice - this.ClosePrice) / _Point : 0));
  }

Т.е. не учитывать валюту счёта и реальный профит в этой валюте?

 
traveller00:

Правильно ли я понимаю, что виртуал заточен считать прибыть в основном в пипсах?

Т.е. не учитывать валюту счёта и реальный профит в этой валюте?

Правильно. И это было сделано намеренно. Но так, что если понадобится добавить мультивалютку и все плюшки - это не вызовет затруднений.

На данный момент мне ни разу не понадобились подобные плюшки в отношении Virtual.


99% действий с MT5-Тестером также произвожу в режиме "по пипсам", который хронологически появился в результате постов на форуме уже после публикаций Virtual и Symbol.

 
В основном тоже работаю по пипсам. Хотел отчёт виртуала сделать идентичным отчёту с реала для более удобного сравнения, в том числе и комиссию и профит в валюте счёта. Единственное место, где помимо пипсов понадобилась валюта.