Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
"Апофеозом" считаю одно выражение fxsaber'a, про которое он сам не смог сказать, как оно работает, заявив просто, что "код многократно оттестирован, и работает". Такого, на мой взгляд, быть не должно:
Этот код проверяет возможность исполнения ордера otfFilingType, и возвращает его, если он доступен на символе strSymbol, иначе - корректный вариант.
Я совершенно не могу понять, как он работает. И только полагаюсь на авторитет fxsaber'a.
Может быть, кто-нибудь объяснит ?
Чтобы понять, достаточно разобрать это громоздкое выражение из ретурна на составляющие.
Ваш пример из "цель оправдывает средства"
кстати этот код как раз похож на спагетти, но с учетом того что это наверное самый полезный автор в кодобазе сейчас и я сам пользую его коды as is, пусть кто-нибудь другой критикует
кстати этот код как раз похож на спагетти, но с учетом того что это наверное самый полезный автор в кодобазе сейчас и я сам пользую его коды as is, пусть кто-нибудь другой критикует
речь не идет о критике, я пытаюсь разобраться, что это может дать.... но как показала беседа, да и сам @fxsaber коственно признался - ничего кроме головной боли
ЗЫ: высока вероятность, что первоначальный вариант маленького монстра выглядел более наглядно ;)
ЗЫ: высока вероятность, что первоначальный вариант маленького монстра выглядел более наглядно ;)
Взял из ZIP (содержит самый первый релиз).
Но после этого требовалось все больше функционала, и код медленно обрастал мясом. С Filling-функцией было иначе. Там ничего не обрастало, сразу писалось.
Как точно сделает компилятор знает только он сам. В современные компиляторы заложены ошеломляющие евристики. Они подстраиваются под среднего кодера, и уже лучше знают что ему нужно. Лучшее, что можно сделать для компилятора, - это писать простой, понятный код с короткими функциями. Компилятору гораздо проще и эффективней анализировать граф исходного кода, состоящий из множества функций-узлов, для построения итоговой программы. На производительности это скажется только положительно, так как нужные функции заинлайнятся в нужные места.
Абсолютно верно.
Если говорить про MQL5, то можно забыть про методы "оптимизаций" 10-20-30 летней давности. Писать надо максимально читабельный код. Именно он является мерилом качества, а не хакерские навороты и чистые понты.
Почему?
Да потому, что компилятор пройдет 5-10 циклов переупорядочивания кода, изумительно четко и коротко выведет концы графов, не говоря уже о применении десятков паттернов оптимизации.
MQL5 компилятору смешно от человеческих попыток наворотами сделать +2% скорости.
Кому интересно, зацените как 8 квадратных корней в разных выражениях были переупорядочены и вычислены за 4 ассемблерные команды.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Ошибки, баги, вопросы
Renat Fatkhullin, 2018.03.13 22:59
Проверка показала, что:
Вот этот код превращается в следующий ассемблерный SSE код:
Это произведение исскуства вообще-то. 8 корней вычислено за 4 вызова ассемблерной команды. Два double числа вычислялись за один вызов.
Общий вывод: математика в MQL5 побеждает за счет идеальной оптимизации. Тут не массивы проигрывают, а математика выигрывает.
С чего это ?
Как раз наоборот, с двумя "ифами" - куда проще, чем с оператором "или".
Явно проще проследить сперва одно условие, и уйти из функции, в случае выполнения, а потом проверить другое условие, и тоже уйти, в случае выполнения. Чем прикидывать, что получается в результате сложного условия через логическое "или" (которое запросто можно спутать и "и"), и следить за обоими вариантами возврата.
Довольно смешно читать ниже, что "оправдание такому - отладка", ведь это и значит, что такой код куда более понятен (иначе зачем он в отладке ?).
"Апофеозом" считаю одно выражение fxsaber'a, про которое он сам не смог сказать, как оно работает, заявив просто, что "код многократно оттестирован, и работает". Такого, на мой взгляд, быть не должно:
Этот код проверяет возможность исполнения ордера otfFilingType, и возвращает его, если он доступен на символе strSymbol, иначе - корректный вариант.
Я совершенно не могу понять, как он работает. И только полагаюсь на авторитет fxsaber'a.
Может быть, кто-нибудь объяснит ?
Я когда-то сел и разобрал поэтапно, кажется понадобилась ручка с бумажкой)
Для чего этот разбор пригодился - я понял что в случае смены структуры перечислений всё сломается) т.к. используются целочисленные отношения значений перечислений (которые по самой идее перечислений как раз должны быть инкапсулированы). Стараюсь сам такого избегать, максимум отношения больше-меньше. Для имеющих дело с WinAPI наверное привычно.
Чтобы понять, достаточно разобрать это громоздкое выражение из ретурна на составляющие.
Да, я так и попытался. Но, не хватило мотивации разбирать...
Абсолютно верно.
Если говорить про MQL5, то можно забыть про методы "оптимизаций" 10-20-30 летней давности. Писать надо максимально читабельный код. Именно он является мерилом качества, а не хакерские навороты и чистые понты.
Вот-вот. Я уже давно к этому выводу пришел. Но не потому, что думаю, что компилятор сделает лучше. А потому, что главный источник проблем в коде - это сам человек, а значит, надо писать код по возможности так, чтобы код был максимально прост и прозрачен.
Там, где "прозрачно" сделать не получается - обязательны подробные комментарии, почему именно так, а не иначе.
Ну а компилятор... даже если он сделает недостаточно эффективно - это меньшая проблема, чем потенциальный баг из-за того, что ты не учтешь какие-то моменты работы программы.
Код очень простой и короткий (описание). Если его напишите на ФП, будет интересно сравнить.
Пожалуйста. C# в ФП стиле:
ФП весьма кривоват конечно (так как писал кривой кодер ФПешник, на неполноценном ФП языке C#).Но цель показать что на современных ООП ЯПах можно и в ФП. Ограничено конечно, это не F# или Haskell, но писать в ФП стиле никто не запрещает. Использовать иммутабельность, функции высшего порядка, замыкания, сопоставления и т.д. - все можно, пожалуйста. Только код от этого не становится идеальным почему-то.
з.ы. Общая структура кода намерено мимикрирует под оригинал. Хотя по-хорошему в ФП нужно совсем уж по-другому, без сложных объектов и foreach мимикрирующего под Map, но художник рисовал как мог.
Пожалуйста. C# в ФП стиле:
Понимаю, что дело в привычке и знании синтаксиса, но мне очень тяжело въехать в код даже при том, что являюсь автором оригинала.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Интересное мнение про ООП
fxsaber, 2021.01.29 13:39
Портянка.
Формально, наверное, это ООП. Но самая его примитивная часть. Однако, без нее не смог. Возможно, тупо мозг перестроился на другое и клепаю такое.