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

 
hrenfx:

Мы же говорим об оптимизаторе, не как множество одиночных прогонов тестера. Концепция оптимизатора совсем в другом. Там существенный выигрышь в скорости достигается за счет незначительных погрешностей в результатах. Для оптимизатора совершенно не нужны модели по тикам. Максимум - по ценам открытия. Оптимизатор - это не много раз тестер, это другое совсем. У вас другой подход, тоже вполне логичный.

Сделав недостоверный тестер (а погрешность там будет никак не 1%), разработчик получит пятно на всю жизнь. И разговор про "в 100 раз быстрее" покажется просто цветочками в сравнении с заявлениями "да где это видано, чтобы оптимизатор имел право что-то загрублять".

Мы наоборот боремся за максимальную точность и ускорение оптимизатора за счет:

  • оптимизированности алгоритмов
  • максимизации производительности и функциональности MQL5 языка 
  • многопотоковых, удаленных и облачных агентов
  • детальной истории М1 с поддержкой спредов
  • использования 64 битных версий
Распараллеливание процесса оптимизации стратегий сразу же дало линейное ускорение по числу расчетных ядер, а язык MQL5 стал огромным шагом вперед по сравнению с MQL4.
 
Renat:

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

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

Просто не надо хаять все остальные разработки, что вас не касаются. У меня считалка в 100 раз быстрее MT4-тестера и с погрешностью < 1 % ТОЛЬКО НА МОЕМ СОВЕТНИКЕ. Для других советников мне считалку делать и не надо было.

Понимаете, мне надо было, я и сделал для себя, и никому вообще не навязываю такой путь. Лишь только говорю, что в случае необходимости всегда имеется возможность написать НЕУНИВЕРСАЛЬНУЮ тупую, но очень быструю считалку. А после ее результаты отточить на совсем не тупом, а хорошо сделанном симуляторе реальной торговли - тестере MT4-MT5.

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

Повторюсь, разработчиков кормят его клиенты - ДЦ, в лице армии трейдеров. МТС-ников кормят тоже свои клиенты - рынки. Каждый занимается своим делом. Просто не надо хаять друг друга. Можно же без пренебрежения и уважительно друг к другу относиться.

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

 

Подведу итог, который я для себя сделал - МТ5 тестер/оптимизатор НУЖЕН, не важно что для каких-то особых случаев ( как личностных так и прикладных )  он не применим, так как нет ничего идеального. Тчк.

Дискусия для меня лично было полезная. Покрайней мере стало ясно, что с позиции разработчиков то решение которое они реализовали это лучшее. А то что кому-то надо гонять милиарды прогонов - вопрос другой. Надо - ну дак делай сам. И все. Изменить МТ5 оптимизатор в сторону увеличения производительности ( до заоблачных величин ) не реально. В вопросе производительности они сделали многое, почти что все возможное. Молодцы.

Так что я получил ответ на свой не риторический вопрос.


ТО hrenfx: какой ответ Вы хотите получить от Рената? Он отвечает так как это положено разработчику. ИМХО, он все что Вы говорите прекрасно понимает. Но отвечает не именно Вам лично - а всем кто его читает. Так и следует всегда читать ответы разработчиков. 


Мы сетуем, на жись,  а они софт делают не лично для нас а для потребителей. Видимо если бы мы заплатили им мильёны они бы сделали софт лично для нас.


Так что спасибо. Ответ получен. :)

 
Academic:

ТО hrenfx: какой ответ Вы хотите получить от Рената? Он отвечает так как это положено разработчику. ИМХО, он все что Вы говорите прекрасно понимает. Но отвечает не именно Вам лично - а всем кто его читает. Так и следует всегда читать ответы разработчиков.

Все друг-друга поняли. Законы бизнеса никто не отменял...
 
В свете затронутой темы качества и скорости  различных универсальных тестеров забыл упомянуть реального конкурента MQL5 - Stock#.
StockSharp торговые роботы. Создание, обучение, разработка торговых роботов.
  • StockSharp
  • stocksharp.com
Библиотека для создания торговых роботов (HFT, Арбитраж и т.д.) Графическая платформа для торговых роботов. Создание и тестирование роботов
 
hrenfx:
В свете затронутой темы качества и скорости  различных универсальных тестеров забыл упомянуть реального конкурента MQL5 - Stock#.

На самом деле - создание цифро-дробилки (Data-Crusher) или считалки как Вы ее называете, далеко не простая вещь. 

Вот как Вы уже выше заметили - разумно перейти от цен выраженных в виде плавающих чисел к ценам в виде целых чисел, так как во первых это сокращает обьем используемой памяти покрайней мере 4 раза, так как USHORT занимает всего два байта и имеет диапазон значений от 0 и до 65535, которого даже для пятизнака впринципе хватает. То есть получается 6553 старых пунктов - больше чем за глаза, при том что DOUBLE занимает 8 байт.


То есть если мы имеем 50 миллионов тиков например на одном символе то ( при том что и время мы также кодируем в USHORT мы получаем размер тика 3*2 = 6 байт ) , то есть 50 * 6 примерно 300 мегабайт. А в случае если мы храним тик в виде DOUBLE и даже если время будет USHORT то получается 2*8+2=20 байт, тогда 20 * 50 это уже как минимум гигабайт.

Ну а если символов скажем 7 то это в одном варианте 7 * 300 = 2.1 гига а во втором 7 гигов . ОП. Если принять за стандарт 4 гига ОП для 64-разрядных машин то получается что мы уже выехали на подкачку 100%.

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


ОК - идем дальше - допустим мы умные и сгенерировали тики. И в памяти они занимают 2 гига, но если мы старательные и умные но при этом мало смыслим в высокопроизводительности в силу отсутствия опыта- то мы на каждый прогон от начала истории и до конца будем срздавать свой "поток" и гонять. Но вот только на последней "глупости" мы потеряем примерно в четыре раза по произодительности. Вдумайтесь! В четыре раза - это я все про Си конечно же. Так что если кому-то больше чем один захочется иметь супер производительный оптимизатор ( не тестер ) то я готов сделать такую программу. Но это займет время и поэтому хочется денег. :)

То есть вот я только что насчитал в ВОСЕМЬ раз ускорение.


Это примерно  150 миллионов тиков за 12 секунд на DOUBLE в целых числах еще в четыре раза быстрее, то есть 4 секунды прогон все тики на трех символах от 1999 года до наших дней. 

Такой тестер у меня есть ( для среды МТ4 даже с поддержкой компилятора с МТ4 ну а С++ его родное ) с мультивалютностью причем. Переделать его под нетто торговлю дело простое. А вот делать компилятор с МТ5 я точно не буду, просто лень. Он кстати поддерживает отладку МТ4 :)) Прямо в студии. Можно туда приделать распределенную обработку на соседних машинах, но будет ли выигрыш по быстродействию надо еще посмотреть. 

C чартами, с счетчиками производительности, с загрузкой собственной любой истории ... вобщем прога весьма и весьма не маленькая - на вскидку 10000 строк. :)

 
Academic:

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

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

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

Тут еще встает вопрос индикаторов. Лично мне они не нужны для написания советников, но 99% их использует, поэтому разработчики во многом архитектуру своего тестера-оптимизатора затачивали под реалии большинства. Отсюда могут быть некоторые архитектурные потери в скорости для "все в одном" (мог бы быть быстрее), но зато значитеельное преимущество для вариантов с индикаторами (чем могло бы быть).

P.S. В цифрах у вас явная неточность: не может история в INT занимать 2.1Gb, а в DOUBLE - 7Gb. Разница должна быть всегда ровно в 2 (USHORT не хватит) раза. Переход на целочисленную арифметику с ценами дает значительное преимущество, когда в советнике вся логика может быть заменена на целочисленную. Это случается не часто.

 
hrenfx:

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

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

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

Тут еще встает вопрос индикаторов. Лично мне они не нужны для написания советников, но 99% их использует, поэтому разработчики во многом архитектуру своего тестера-оптимизатора затачивали под реалии большинства. Отсюда могут быть некоторые архитектурные потери в скорости для "все в одном" (мог бы быть быстрее), но зато значитеельное преимущество для вариантов с индикаторами (чем могло бы быть).

P.S. В цифрах у вас явная неточность: не может история в INT занимать 2.1Gb, а в DOUBLE - 7Gb. Разница должна быть всегда ровно в 2 (USHORT не хватит) раза. Переход на целочисленную арифметику с ценами дает значительное преимущество, когда в советнике вся логика может быть заменена на целочисленную. Это случается не часто.

Ну если Вы считаете, что  USHORT не хватит, то да. Но я считаю, что хватит. Да и кроме того зачем дабл-то - FLOAT в два раза меньше и быстрее.

А что качается скинов - то :

Ага, ладно - покажу если время будет, но не скины - так как это не оконное приложение, а покажу что-то вроде видео.

Покупатели я думаю тут НЕ найдутся. :) А летом, может быть время будет, переделаю его в нетто и выложу "на продажу". Сделаю сайт на английском и выложу. Думаю что продавать его :) ( мне уже на самом деле смешно  - вот я еще шараварой тольоко не занимался в жизни ) буду баксов за 30-50. Но хрень интересная - прикиньте - пишешь на МТ4 и отлаживаешь в студии. :)


Да что касается индикаторов то поддерживается все - и iCustom ( сделанно так же ка сейчас в MT5 - если есть такой индикатор на символе с одинаковыми параметрами то он не пересчитывается ) . Вообщем проще сказать чего там нет - ... честно говоря уже не помню, что именно не стал делать, но есть все что нужное в МТ4. Да, и тики там идут  от каждого символа в советник, на котором идет тест, а не только от того символа на котором работает советник как сейчас в МТ5.

Да вспомнил - есть даже библиотеки и экспорт ... Вообщем есть все. :)

 
Особых преимуществ перевод цен в целочисленные не дает. Да, оно эффективно уменьшает объемы, но во много раз теряет скорость из-за неибежного перекодирования в double. Именно неизбежного, ибо не получится сделать абсолютно всю систему целочисленной, вычислимую математику все равно придется делать в double(точности которого даже не хватает).

Целочисленные (да еще если короткие short) данные не могут использоваться ни в каких операциях деления и умножения. Где там хранить дробные значения в 15 знаков? Точно так же опасно и самоубийственно использовать float, у которого абсолютно не хватает точности. Объем накапливаемых погрешностей у float таков, что с его помощью ни в коем случае нельзя рассчитывать индикаторы.

Начинающие разработчики об этом не в курсе. Они еще не видят всего объема сложностей.
 
Renat:
Особых преимуществ перевод цен в целочисленные не дает. Да, оно эффективно уменьшает объемы, но во много раз теряет скорость из-за неибежного перекодирования в double. Именно неизбежного, ибо не получится сделать абсолютно всю систему целочисленной, вычислимую математику все равно придется делать в double(точности которого даже не хватает).

Целочисленные (да еще если короткие short) данные не могут использоваться ни в каких операциях деления и умножения. Где там хранить дробные значения в 15 знаков? Точно так же опасно и самоубийственно использовать float, у которого абсолютно не хватает точности. Объем накапливаемых погрешностей у float таков, что с его помощью ни в коем случае нельзя рассчитывать индикаторы.

Начинающие разработчики об этом не в курсе. Они еще не видят всего объема сложностей.
В "том" оптимизаторе все так же как и у вас - даблы. Но то что вы говорите про невозможность использования - ну может быть. Хотя... ? - цена в пунктах, индикаторы  в пунктах, все в пунктах ... вот только чему равен ПУНКТ в каждом конкретном случае может быть свое - то есть имеем число которое отнесено к какому-то конкретному типу ( коровы, километры и так далее ) и у него свои пункты. Так что в целых числах все отлично решается. Тут вы не правы. :)
Причина обращения: