Немного удивлен :) Решил поделиться и задать НЕ риторический вопрос. - страница 6

 
hrenfx:

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

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

 
Integer:

У вас явно прослеживается какая-то личная антипатия ко мне. Да насрите вы на меня. Что я, пуп земли, что вы так бурно реагируете?

Может вам выслать мою фотографию, чтобы вы могли ей подтереться? Мне ровно до ваших нервных выпадов. Не тратьте время и силы на них.

Призываю к конструктиву, взрослые же люди. 

 
Integer:

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

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

Очень помогает в этом смысле написание своего оптимизатора. Для примера, без алгоритмической оптимизации вариант "все в одном" был где-то раз в 10 быстрее (за счет компилятора языка программирования) в моем тестере, чем такой же "все в одном" в тестере MT4. После алгоритмической оптимизации премущество увеличилось еще на порядок с небольшим.

Ради 10-30% я бы крехтеть не стал в данном случае. 

 

hrenfx:

1. Выигрышь в скорости сильно зависит от случая. Алгоритмическую оптимизацию никто не отменял. Если это какая-нибудь примитивная EMA, то выигрышь будет минимальным. А если нечто посложнее, то может и на порядок. Здесь сильно зависит от умения проводить алгоритмическую оптимизацию. Знать, где могут быть повторные вычисления и т.д.

2. Очень помогает в этом смысле написание своего оптимизатора. Для примера, без алгоритмической оптимизации вариант "все в одном" был где-то раз в 10 быстрее в моем тестере, чем в тестере MT4. После алгоритмической оптимизации премущество увеличилось еще на порядок с небольшим.

Ради 10-30% я бы крехтеть не стал в данном случае. 

1. Это зависит от умения писать индикаторы.

2. Если сумеете корректно сравнить быстродействие тестера МТ и собственной считалки для одной стратегии, будете очень удивилены оптимальностью алгоритма тестера (в том числе и Академика касается).

 
Integer:

2. Если сумеете корректно сравнить быстродействие тестера МТ и собственной считалки для одной стратегии, будете очень удивилены оптимальностью алгоритма тестера.

Что значит корректно? Моя считалка считает > 100 раз быстрее MT4-тестера, имея погрешность < 1%. Это оправдано или нет?

В MT4-тестере нормальные алгоритмы, но они рассчитаны на универсальность и учет огромного количества факторов, из-за которых моя считалка и дает несущественную (для оценки результатов) погрешность.

Простой пример, если я не обращаюсь в своем советнике глубоко в историю ордеров, зачем мне она нужна в оптимизаторе? Зачем мне в оптимизаторе эмуляция нулевого бара? Все это не нужно, поэтому все сводится ПОЧТИ к тупому циклу for. И вот это дает многократную скорость, расплачиваться за которую приходиться погрешностью < 1%.

Мы на форуме MQL5, но я в данном обсуждении не рассматриваю скорость работы MT5-тестера. Хочется все таки увидеть официальное сравнение двух тестеров.

Эффективность многопотокового тестера стратегий MetaTrader 5 - MQL4 форум
  • www.mql5.com
Эффективность многопотокового тестера стратегий MetaTrader 5 - MQL4 форум
 
hrenfx:

1. Что значит корректно? Моя считалка считает > 100 раз быстрее MT4-тестера, имея погрешность < 1%. Это оправдано или нет?

В MT4-тестере нормальные алгоритмы, но они рассчитаны на универсальность и учет огромного количества факторов, из-за которых моя считалка и дает несущественную (для оценки результатов) погрешность.

2. Простой пример, если я не обращаюсь в своем советнике глубоко в историю ордеров, зачем мне она нужна в оптимизаторе? Зачем мне в оптимизаторе эмуляция нулевого бара? Все это не нужно, поэтому все сводится ПОЧТИ к тупому циклу for. И вот это дает многократную скорость, расплачиваться за которую приходиться погрешностью < 1%.

Мы на форуме MQL5, но я в данном обсуждении не рассматриваю скорость работы MT5-тестера. Хочется все таки увидеть официальное сравнение двух тестеров.

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

2. Надеюсь это не в контексте "я могу написать тестер стратегий лучше, чем MQ".

 
Integer:

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

Я уверен, что алгоритмы в тестере великолепные. Разработчики не зря едят свой хлеб, заоптимизировали максимально - 100%. Но у них все сделано универсально - на все варианты. А все варианты не нужны, когда рассматривается частный случай МТС. Именно по этой причине получаются выигрыши на порядок в своих считалках по типу ТУПОГО for.

 2. Надеюсь это не в контексте "я могу написать тестер стратегий лучше, чем MQ".

У вас предвзятое отношение ко мне, будто я всех везде обсираю. В данной ветке полностью на стороне разработчиков. Отлично понимаю доводы топикстартера о принципиальном отличии задач тестера и оптимизатора, но совсем не разделяю его претензии к разработчикам. Мое мнение - в случае необходимости всегда есть возможность создать свой тестер-оптимизатор (не супер-универсальный, а быстрый) под себя.
 
Renat:

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

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

Я бы согласился с этим, но есть одно но, которое в некоторых случаях ставит жирный крест на этом.

Это отсутствие нормальной реализации IndicatorCounted() - чуть что и она сбрасывается в ноль, Вы об этом прекрасно знаете.

Я пошёл по другому пути - сделал своего поставщика данных (достаточно оптимизированный алгоритм, с круговой адресацией данных), сделал свою функцию IndicatorCounted().

И этот подход себя полностью оправдал в реальных условиях.

При чём индикаторы переносятся практически 1:1, а также нет проблем с их отладкой и т.п.

Реализация индикаторов в виде классов на примере Zigzag и ATR

Там есть даже некоторое сравнение алгоритмов и подход в тестере:

P.S. А по поводу погрешности - это всё зависит именно от алгоритма индикатора. Вот в большинстве случаев как раз достаточно не учитывать первые несколько баров, а всё остальное будет совпадать 1:1.

Я специально писал проверочные конструкции для этого.


P.S.2 Для ZigZag это просто незаменимый выход из ситуации.

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

Это позволяет оптимизировать и другие алгоритмы советника.


P.S.3 По поводу MT5 я хочу сказать, что получилась замечательная платформа. Но и есть несколько серьёзных но:

- критические баги (они конечно со временем отловятся)

- спорный подход к ТерминалМаксБар (я писал об этом, что ситуация тупиковая)

- отсутствие адекватной функции IndicatorCounted() (но она мне теперь вообще не нужна)


P.S.4 По поводу тестера сказать ничего не могу, так как в игрушку "оптимизация" не играю

 
AlexSTAL:

Я бы согласился с этим, но есть одно но, которое в некоторых случаях ставит жирный крест на этом.

...

 

Где в этом смысл, если по вашим же тестам встроенный в эксперта класс медленнее, чем вызов через iCustom()?

Еще один вопрос на засыпку, вы готовы переписать в таком стиле все индикаторы? 

 
Integer:

 

Где в этом смысл, если по вашим же тестам встроенный в эксперта класс медленнее, чем вызов через iCustom()?

Еще один вопрос на засыпку, вы готовы переписать в таком стиле все индикаторы? 

Смысл не в тестере, ещё раз! не в тестере, а в реальных условиях, где происходит докачка истории и обрывы связи

По поводу все индикаторы - а в чём проблема?

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