Обсуждение статьи "LifeHack для трейдера: готовим фастфуд из индикаторов" - страница 11

 
fxsaber:

Т.е. Ваших агентов (где 21 секунда тест) забанили бы?

Есля я отвечу ДА, то вы начнете дальше спрашивать критерии бана? Давайте на этом остановимся, OK?

 
fxsaber:

Нет уверенности, что юзер в общем виде может ускорить этот процесс. Очевидно, что оверхед уходит на вычисление хэш-функции.

В общем виде один вариант такой индикаторной хэш-функции выкладывал здесь


Недостатки:

  • Ваш вариант закладывается на обращение за хендом к графику, верно? Пробовали запускать советник в тестере ? Будет это работать? Насколько медленнее?
  • Показанная в коде функция также будет на каждом тике насиловать терминал - запрашивать хендл уже созданного индикатора ничем не лучше, чем просто кидать вызов в стиле "вот такой индикатор  нужен - поищи там у себя хендл и создай новый экземпляр, если такого еще нет".
 
Rashid Umarov:

Недостатки:

  • Ваш вариант закладывается на обращение за хендом к графику, верно? Пробовали запускать советник в тестере ? Будет это работать? Насколько медленнее?
  • Показанная в коде функция также будет на каждом тике насиловать терминал - запрашивать хендл уже созданного индикатора ничем не лучше, чем просто кидать вызов в стиле "вот такой индикатор  нужен - поищи там у себя хендл и создай новый экземпляр, если такого еще нет".

Вы не прочли

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

Обсуждение статьи "LifeHack для трейдера: готовим фастфуд из индикаторов"

fxsaber, 2018.01.26 09:22

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

А другие, конечно, не пробовал, потому что...

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

Обсуждение статьи "LifeHack для трейдера: готовим фастфуд из индикаторов"

fxsaber, 2018.01.26 09:02

Там не пекся о производительности, но было понятно, что на вход любой хэш-функции нужно подавать массив MqlParam-значений. А это ну никак не может работать быстро с учетом того, что там есть тормозное string-поле.

Поэтому написание универсальной индикаторной быстрой хэш-функции много быстрее того, что встроена в MT5 - задача открытая. Но сам категорически против вызова индикаторов откуда-то либо. Поэтому даже желания разбираться в вопросе нет.


И я почти согласен с гипотезой Василия

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

Обсуждение статьи "LifeHack для трейдера: готовим фастфуд из индикаторов"

Vasiliy Sokolov, 2018.01.26 09:14

нет резона делать свою хеш функцию в ООП обертке, раз уже эта функция реализована за кулисами MT5 и работает быстро.

Что говорит о том, что догнать системную хеш функцию на пользовательском уровне уже сложно, а обогнать на значимую величину - будет почти невозможно.


Придумывать что-то в данном случае не вижу смысла

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

Обсуждение статьи "LifeHack для трейдера: готовим фастфуд из индикаторов"

fxsaber, 2018.01.26 09:27

Бары и индикаторы в виде рисовалок на экране привествую. Но в советниках это почти абсурд.

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

Выходит какой-то мазохизм, когда народ добровольно переходит к историческим данным с жуткой потерей информацией. И на этом огрызке пытается что-то сварганить, включая применение методов Машинного обучения.


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

void OnTick( const string &Symb );
Так индикаторы для советников потеряют какую-либо актуальность.
Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5
Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5
  • 2018.01.27
  • www.mql5.com
Рассмотрим результаты тестов на одном и нескольких символах. Тесты будем проводить в режиме Все тики...
 

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

Анализ результатов тестов и оптимизации в тестере стратегий MetaTrader 5

fxsaber, 2018.01.28 12:25

  1. В режиме одного символа "шпион" работает в 2.5 раза медленнее, чем чистый OnTick. Т.е. индикатор пустышка (строится на PERIOD_W1, чтобы история баров была минимальна) имеет огромный оверхед в Тестере!
Индикаторы - Зло!
 
fxsaber:
Индикаторы - Зло!
fxsaber:

Вы не прочли


И я почти согласен с гипотезой Василия


Придумывать что-то в данном случае не вижу смысла


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

Так индикаторы для советников потеряют какую-либо актуальность.

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

Претензии к Владимиру были именно в "неэффективности" представленного подхода. Ваш же вариант не решает эту проблему.

 
Rashid Umarov:

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

Претензии к Владимиру были именно в "неэффективности" представленного подхода. Ваш же вариант не решает эту проблему.

Стандартные индикаторы (только о них речь в статье) кешируются элементарно! Потому что известны все входные параметры.

Тяжело только универсальную хеш-функцию написать. Но в статье она не требовалась. Там простейший случай рассматривается. И даже для него хеш-функция отсутствует.

 
Мои результаты по статье

3.3. Сравним скорость выполнения советников на базе MACD

В сравнении будут принимать участие:

  • "MACD Sample.mq5" — советник из стандартной поставки с правильным доступом к индикаторам
  • "MACD Sample One value at a time.mq5" — аналог "MACD Sample.mq5", в котором за один раз получаем по одному значению от индикаторов
  • "MACD Sample 4 to 5 MQL4 style.mq5" — советник MQL4, переписанный на MQL5 c минимальными переделками и с доступом к индикаторам в MQL4-стиле

Тестирование проводилось на USDJPY,M30 c 2017.02.01 по 2018.01.16 на сервере MetaQuotes-Demo. После каждого теста (будь то смена советника или смена режима генерации тиков) терминал перезагружался. Конфигурация компьютера:

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


Советник  Каждый тик на основе реальных тиков Все тики OHLC   


 Прибыль, $Время теста Трейдов Сделок Прибыль
Время теста Трейдов Прибыль
Сделок Время теста Трейдов Сделок
 1  MACD Sample.mq5  -467.74
 0:00:29.937  122  244   -476.69 0:00:22.110  122  -754.10
 244  0:00:01.015  119  238
 2  MACD Sample One value at a time.mq5  -467.74 0:00:30.110  122  244   -476.69
 0:00:23.797  122  -754.10 244  0:00:01.141  119  238
 3  MACD Sample 4 to 5 MQL4 style.mq5  -428.04
 0:00:57.156  122  244   -449.90
 0:00:42.078  122  -740.48
 244  0:00:02.062  119  238

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



 

Нашел возможную причину несовпадения чистой прибыли - в советнике "MACD Sample 4 to 5 MQL4 style.mq5" есть ошибки модификации стопов.

Так как код был взят из версии MQL4, то возможно, что это унаследованная ошибка.

 
Rashid Umarov:

Нашел возможную причину несовпадения чистой прибыли - в советнике "MACD Sample 4 to 5 MQL4 style.mq5" есть ошибки модификации стопов.

Так как код был взят из версии MQL4, то возможно, что это унаследованная ошибка.

Проблема не в этом - данная ошибка возникает когда новый уровень StopLoss не отличается от текущего

 
Rashid Umarov:
Мои результаты по статье

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

Andrey F. Zelinsky обнаружил, что логика MACD Sample отличается между версиями MQL4 и MQL5. Разница в вычислении уровней TP и SL.
Причина обращения: