Интересная тема для многих: что будет нового в MetaTrader 4 и MQL4 - большие изменения на подходе - страница 57

 

Это задача адекватного алготрейдера, а не тестера. В MT5-тестере нет данных о ососбенностях тестируемой ТС и той же Level2-истории, чтобы создать Execution-историю под вашу ТС.

Произвольная задержка - это первое, что приходит в голову, пишущему свой тестер. Грубо - да, но со смыслом. Для лимитников тоже иногда делаются такие грубости - рэндомный реджект.

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

Поэтому для MT5 идея режима произвольной задержки (реализацию не видел) вполне адекватна.

 
hrenfx:

Это задача адекватного алготрейдера, а не тестера. 

ну ну)) Т.е. если я захочу протестировать с бОльшим лотом, или другой сопсоб входа/выхода нужно в ручную генерить новую кастомную историю)) 

Грубый пример кастомной истории это разные режимы тестирования в МТ4. По ценам открытия - готовится однин массив истории (цены открытия), в других режимах - другие.

Используются индикаторы и создали массив для каждого с вычесленым значением для каждого бара (если оптимизируется, то несколько).

Надо учитывать ликвидность или тип используемых ордеров и под это можно автоматически собрать/предобработать историю.  Главное какое исходное сырьё.

 
Avals:

ну ну)) Т.е. если я захочу протестировать с бОльшим лотом, или другой сопсоб входа/выхода нужно в ручную генерить новую кастомную историю)) 

Точно! Заметьте, что речь идет не о индикативной истории, которую видит боевой робот, а о кастомной истории для Execution в тестере. Очевидно же, что изменение объемов в ТС приводит к изменению Execution-истории. Или, например, изменение пинга - аналогично.

Генерировать Execution-историю прямо во время тестирования - абсурд. По этой причине с реинвест-ТС нужно правильно оценивать результат. Т.к. с ростом объема находу меняется и Execution-история (ухудшается). А поскольку наперед невозможно для ТС предсказать динамику изменения объемов, которым она оперирует, то и Execution-историю заранее собрать также проблематично. Но из-за этого, в частности, нюанса никто в здравом уме не будет генерировать Execution-историю в реал-тайм тестера.

Повторюсь, важна золотая середина.

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

Чтобы выжимать из своей ТС (любой) максимум, нужно очень постараться. Почти никто этого не делает, довольствуясь тем, что получается.

 
hrenfx:

Точно! Заметьте, что речь идет не о индикативной истории, которую видит боевой робот, а о кастомной истории для Execution в тестере. Очевидно же, что изменение объемов в ТС приводит к изменению Execution-истории. Или, например, изменение пинга - аналогично.

Генерировать Execution-историю прямо во время тестирования - абсурд. По этой причине с реинвест-ТС нужно правильно оценивать результат. Т.к. с ростом объема находу меняется и Execution-история (ухудшается). А поскольку наперед невозможно для ТС предсказать динамику изменения объемов, которым она оперирует, то и Execution-историю заранее собрать также проблематично. Но из-за этого, в частности, нюанса никто в здравом уме не будет генерировать Execution-историю в реал-тайм тестера.

Повторюсь, важна золотая середина.

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

Чтобы выжимать из своей ТС (любой) максимум, нужно очень постараться. Почти никто этого не делает, довольствуясь тем, что получается.

ну и нефиг тестировать с реинвестом)) такое только с учётом Level2 без всякой предобработки (хоть руками, хоть автоматом). В других случаях можно и объём исполнения достаточно точно учесть. Конечно, без влияния на рынок собственных ордеров - это только в реальной торговле можно оценить.

Глобальных способов использовать реальные тики 2:

1. Терминал хранит  тики и предобрабатывает их перед тестированием для экономии ресурсов.

2. Юзер хранит тики, сам их сжимает (но в соотвестсвии с предписанием тестера) и подсовывает тестеру. Например, как сейчас в мт5, но tf<1мин. Тогда можете собрать с учётом ваших требований. 

Думаю, большинство удовлетворит  любой из этих вариантов.

P.S. но MQ зарабатывает не с тех, кто тестирует в МТ5 свои стратегии, а с брокеров и ДЦ. Последним важно, чтобы торговали через них и им неважно кто и как тестирует. Т.е. им важен торговый терминал, а не тестер. Но, популярность платформы зависит от тестера, а следовательно и выбор брокера) Дилемма - кастомная история и более точное тестирование немного отвяжет юзеров от ДЦ/брокера (что не понравится последним), но это несколько повысит популярность платформы. Что выгоднее  решать MQ)

 

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

Ренат почти все делает правильно для популяризации массового продукта среди трейдеров. Да, ограничений полно, но их средний юзер даже не почуствует.

Средний брокер - это тоже тупое создание. И он в лучшем случае ориентируется на среднего пользователя.

Большие деньги на FOREX за платформонезависимыми площадками с продвинутыми подходами к агрегации. Надо улучшать торговые условия для наращивания объемов.

Сравните просто, в какой схеме денег потенциально больше:

  1. Собирать с брокеров абонентскую плату за использование своей платформы.
  2. Собирать комиссию (с оборота) с любых брокеров + институционалы, за использование площадки. 

Не на ровно месте тот же LMAX отказывается от ретейл-клиентов и переходит ко второй схеме - быть наилучшим LP, конкурируя с EBS и прочими. Перекладывая ретейл на своих IB с MT4/5 и другими платформами.

Кто серьезно подходит к алготрейдингу, не зависит от торговых платформ

 

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

Кто поддерживает MT5

MetaDriver, 2013.08.13 01:36

2. Брокеру матчинг приносит меньше прибыли, но больше клиентов. Если прирост клиентов больше потерь от внедрения - уже явно рентабелен. 

Наоборот.
 
hrenfx:

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

Ренат почти все делает правильно для популяризации массового продукта среди трейдеров. Да, ограничений полно, но их средний юзер даже не почуствует.

Средний брокер - это тоже тупое создание. И он в лучшем случае ориентируется на среднего пользователя.

Большие деньги на FOREX за платформонезависимыми площадками с продвинутыми подходами к агрегации. Надо улучшать торговые условия для наращивания объемов.

Сравните просто, в какой схеме денег потенциально больше:

  1. Собирать с брокеров абонентскую плату за использование своей платформы.
  2. Собирать комиссию (с оборота) с любых брокеров + институционалы, за использование площадки. 

Не на ровно месте тот же LMAX отказывается от ретейл-клиентов и переходит ко второй схеме - быть наилучшим LP, конкурируя с EBS и прочими. Перекладывая ретейл на своих IB с MT4/5 и другими платформами.

Кто серьезно подходит к алготрейдингу, не зависит от торговых платформ

Два варианта хорошо показывают две мировозренческие системы.

Одна гласит что нужно активировать окружение, другая что надо заморозить всё как есть. Демократы и Республиканцы, Либералы и Консерваторы.

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

Второму варианту побоку даже если за месяц не будет ни одной сделки, всё равно брокер останется пользователем площадки (нет транзакций нет расходов).

Что лучше извечный вопрос, есть время когда лучше одно, есть время когда лучше другое.

 

Мне для новой торговли понадобилось улучшить свой тестер. Разбираться в коде старого - больше времени потерять (несколько недель убил - подходы время от времени), чем написать новый.

Итак, с нуля написание нового тестера у меня заняло 5 часов (с отладкой). Его характеристики (меня удовлетворяют, как старт):

  • Работает с побаровой моделью M1 HighBid + LowAsk (результаты точнее, чем в MT5-тестере).
  • Один символ.
  • Скорость (i7 2700K) около 100 000 000 баров в секунду (277 лет FOREX в секунду) на тестовой ТС - не пустышка, много всего вычисляется. Постоянно в рынке.
  • Отсутствует ММ - нет лотов.
  • Профит только в пипсах.
  • Возможность регулирования величины среднего проскальзывания и комиссии.
  • Оптимизатор со своими критериями оптимизации - по каждому создается свой файл (гигабайты может занимать) с отсортированными строчками прогонов.
  • В тестере нет никаких проверок на ошибки - знаю все нюансы своего тестера, поэтому не допускаю.
  • ТС пишется на немного урезанном MQL4 - выкинуто ненужное. Но можно использовать всю мощь C++.
  • Тестер написан без ООП - не умею грамотно. Т.е. практически чистый язык C.
  • Исходники на free C++ ~ 20Кб.
  • Выкинуты стопы и маркеты (OrderClose оставлен) - не нужны.
  • Каждый прогон (по выбору - номер прогона указать) можно визуализировать и изучать в мат. пакете - файл изменения Equity и Balance записывает просто.
  • Никакой генетики.
  • OpenCL отсутствует - не умею.
  • Однопоточный. Загрузка всех ядер тупая - несколько оптимизаторов вручную запустить.
  • Консольное приложение.
  • Входные параметры ТС, настройки тестера и диапазоны оптимизации задаются в файле.
  • ТС компилируется вместе с тестером в единый EXE-файл.
  • Перед запуском имеются всего три фала: EXE, история, настройки.
  • В оптимизаторе сделано прерывание прогона, если текущее состоянее прогона не удовлетворяет условиям (например, просадка слишком высока).
  • Историю для тестера подготавливает MQL4-скрипт - написан давно.
  • Никакого динамического выделения памяти под ордерную таблицу - один раз выделил память и забыл.
  • Никаких логов - не смотрю.
  • Никакой ордерной истории - аналогично.
  • Нет понятия индикаторов и всего, что с ним связано - для ТС не нужно.
  • Цены целочисленные (long int).

Если такую же ерунду запилить на MQL5, то можно использовать Cloud в режиме мат. оптимизации. Только пересылать историю каждый раз придется - тут необходимо штатное сжатие такой инфы.

Итого теоретически можно добиться скорости ~ 100 млрд баров в секунду (на тестовой ТС). Интересно, какова производительность MT5-тестера на всем облаке в тех же попугаях?

100 млрд баров в секунду - хорошая скорость для различного рода исследований. Если перевести в другие единицы, то это скорость говорит о том, что год минутной истории FOREX по одному символу за секунду прогоняется ~ 300 000 раз.

Большая часть времени ушла на изучение синтаксиса языка - гуглил просто. Не программист.

Сразу скажу, писать универсальный фреймворк под свои скромные нужды - огромная потеря времени. Лучше исследовать. Если что-то понадобится учитывать - просто дописать.

Это только ядро, теперь нужен хитрый инструментарий для оптимизатора. Здесь времени уйдет значительно больше - думать надо.

The Dev-C++ Resource Site
  • Hongli Lai
  • www.bloodshed.net
Dev-C++ is Free Software distributed under the GNU General Public License. This means you are free to distribute and modify Dev-C++, unlike most Windows software! Be sure the read the license. Donations Please support Dev-C++ by making a donation ! The money will be shared between the active developers and the support manager in order to...
 
hrenfx:
  • Скорость (i7 2700K) около 100 000 000 баров в секунду (277 лет FOREX в секунду) на тестовой ТС - не пустышка, много всего вычисляется. Постоянно в рынке.

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

Число в 100 000 000 баров сильно радует, особенно с уточнением, что есть HighBid + LowAsk (то есть, нет).  Или там всего лишь 100 000 баров?

Анализировать результаты тестов в Экселе? За секунду посчитать и час рассматривать Эксель?


Для сравнения тестер MetaTrader 5 на М1 по опенбарам, без индикаторов, но со всем багажом и сервисами (которыми вы не заморачивались), включая анимацию GUI и подъем всей базы с диска:

  • EURUSD,M1: 19 538 553 ticks (5 180 083 bars) generated within 7906 ms

что дает примерно 2.4 млн тиков в секунду на аналогичном i7.

 
Renat:

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

Это бесполезное время, т.к. на оптимизации никак не сказывается. Сейчас SSD, можно и RAM-Drive организовать. Короче, это время ни к чему.

Число в 100 000 000 баров сильно радует, особенно с уточнением, что есть HighBid + LowAsk (то есть, нет).  Или там всего лишь 100 000 баров?

Почему решили, что нет? Для тестовой ТС использовал всего несколько сотен тысяч бар. Т.е. 100 милллионов баров в секунду - это скорость оптимизации. А значит не важна длительность исходной истории для этого параметра.

Например, исходная история 100 000 бар прогоняется 1000 раз за секунду в оптимизаторе - значит скорость 100 миллионов бар в секунду.

Анализировать результаты тестов в Экселе? За секунду посчитать и час рассматривать Эксель?

Excel - дерьмо (на самом деле его не знаю просто). В мат. пакетах крутить-вертеть результат прогона элементарно. При этом сам документ мат. пакета изменять не требуется. Почти любые характеристики ТС выдает сходу. Это много продвинутей и эффективней, чем анализ в MT5-тестере или вообще в каком-либо тестере.

Кстати, в MT5-тестере же отсутствуют фильтры результатов оптимизации. Их сделал у себя сразу (без GUI, но оправдывает на 100%) . Например, отсортированы прогоны по профиту. Навешиваю фильтр по просадке и все наглядно: строчка ниже - всегда прогон с меньшей просадкой, чем была выше. Очень эффективный метод - рекомендую вам реализовать в своем тестере.

Для сравнения тестер MetaTrader 5 на М1 по опенбарам, без индикаторов, но со всем багажом и сервисами (которыми вы не заморачивались), включая анимацию GUI и подъем всей базы с диска:

  • EURUSD,M1: 19 538 553 ticks (5 180 083 bars) generated within 7906 ms

что дает примерно 2.4 млн тиков в секунду на аналогичном i7.

Лучше скорость оптимизации приводить (написал выше) - по идее должна быть выше у вас. Не совсем понял, почему генерировались тики в режиме по опенбарам?

Кстати, MT4 еще уделывает (а если с учетом ускорения MQL4-кода?) по скорости MT5 в режиме по опенбарам в оптимизации или нет?