Учёба. Классы. Нужна помощь. - страница 2

 
Alexey Viktorov #:

Вот с чем я столкнулся, прямо сейчас… Ещё не дописал что хотел…

Переписываю мультивалютник. Было: все параметры позиций записаны в массив структур. Ну, крайне неудобно. Теперь переписываю с помощью Артёма Тришкина, вместо массива структур применяю список объектов. Соответственно без классов это сделать вообще никак…  Так вот в массиве структур надо в цикле искать нужную запись. А в списке объектов просто как в отсортированном массиве 

Всё! Рыбка поймана, делай с ней что пожелаешь. Удобно…

Есть конечно варианты сортировки структур, но………… мне не нравится.

потом будешь обратно переписывать :-)

по скорости List vs Array , список проигрывает катастрофически. А без скорости начнутся реквоты и проблемы

 
Vitaly Murlenko #:
Поставьте мне напрямую задачу, сделать код без классов и сделать тот же код с задействованием классов.  Я хочу увидеть полезность этого на живом примере.
Решаю сейчас задачу автоматической оптимизации параметров советника(ов) и генерации на основе этих результатов итогового советника, объединяющего одновременную работу нескольких тысяч найденных хороших комбинаций. Без ООП такое провернуть очень, очень сложно.
 
Maxim Kuznetsov #:

потом будешь обратно переписывать :-)

по скорости List vs Array , список проигрывает катастрофически. А без скорости начнутся реквоты и проблемы

Вообще-то, зависит от того, для чего использовать.

Если только добавление в конец, удаление с конца и произвольный доступ к элементу, то да, std::vector.

А вот теперь делаем постоянную вставку/удаление в произвольном места достаточно большого массива немаленьких структур, да еще с нетривиальным конструктором перемещения. Упс однако получится, а я еще добавлю свой аллокатор для std::list, что бы оптимизировать работу с кучей и порву по скорости std::vector в этом кейсе, как тузик грелку.

PS. Правильный выбор  контейнера - наше все.

PSS. Писано в контексте С++, но к mql это все тоже относится

 
Vitaly Murlenko:

Вынес вопрос в отдельную тему, ибо подобные вопросы ещё будут.

Программирую на MQL4 уже 18 лет. Я не могу найти применения такой вещи, как класс. Вразумите меня глупого, где это можно применить в MQL? Какая в этом необходимость?

Берём Delphi. Есть такой класс в нём, как кнопка. Да, согласен, можно перетащить его на форму и задействовать наследование. Н это Делфи. Где в MQL применимы классы и какая в них необходимость? Наверно я что-то не знаю.

Открываю чужой код на mql и, первое что вижу, 100-200 переменных на глобальном уровне, половина из них массивы и далее 10000 строк switch/case внутри OnTick. Закрываю чужой код со словами "занимайтесь рукоблудием сами". Ну не поддерживается такой код. Не потому, что невозможно или как-то по особенному сложно, а потому, что это становится ДОЛГО == ДОРОГО. Там где я, в чужом, но с продуманной архитектурой, коде разберусь за день, а через неделю он мне как свой будет, в портянке это станет неделя/месяц.

И да, неожиданно, без ООП, функционального программирования и шаблонов, хорошая архитектура не поручается. Слова о том, что не все понимают магию шаблонов, лямбды всякие (я про плюсы сейчас), упаси господи SFINAE (это опять про плюсы), RAII (это уже и про mql тоже) и прочих плюшек в виде виртуальных функций, множественного наследования и тп, является не поводом говорить, что это не нужно, а поводом дать звездюлей той части команды, которая начала ныть и установить им срок поднятия скиллов)))

 
Vladimir Simakov #:
магию шаблонов, лямбды всякие (я про плюсы сейчас), упаси господи SFINAE (это опять про плюсы), RAII (это уже и про mql тоже) и прочих плюшек в виде виртуальных функций, множественного наследования

Вот где бы про это доходчиво почитать?

 
Ух и мысли у вас в головах. Почитал и понял, что я ещё маленький мальчик, который просто стоит в сторонке и смотрит, что там делают взрослые дяди. По-ходу нужно идти курить статьи и справку. :))) Курить вдумчивее. :)))
 
Vladimir Simakov #:
Открываю чужой код на mql и, первое что вижу, 100-200 переменных на глобальном уровне, половина из них массивы и далее 10000 строк switch/case внутри OnTick. Закрываю чужой код со словами "занимайтесь рукоблудием сами". Ну не поддерживается такой код. Не потому, что невозможно или как-то по особенному сложно, а потому, что это становится ДОЛГО == ДОРОГО.

Все, что нужно знать о заказах на модификацию существующего кода на местном фрилансе и о том, почему я (как и многие другие) игнорирую/отклоняю их все😄

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

[edit]

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

 
Vitaly Murlenko:

Где в MQL применимы классы и какая в них необходимость?

Для получения денег из воздуха - ни малейшей необходимости в них нет)
 
JRandomTrader #:

Вот где бы про это доходчиво почитать?

Это IT, тут все сам больше) Либо понял, либо нет. Можно до дыр зачитать какой-нибудь "modern C++", ту же "банду четырех", cppreference наизусть выучить, но не хрена не понять.

Мое мнение. Тут как с любым делом. Если мозги под это заточены, то документации достаточно, ну и в полглаза на хабре или на том же stackoverflow подсмотреть, а если нет, то и не надо мучаться. Я же не делаю себе ремонт сам, так как прекрасно знаю, что руки не заточены под это, да и желания их прямить нет))) Так же и тут)

 
Vitaly Murlenko:

Вынес вопрос в отдельную тему, ибо подобные вопросы ещё будут.

Программирую на MQL4 уже 18 лет. Я не могу найти применения такой вещи, как класс. Вразумите меня глупого, где это можно применить в MQL? Какая в этом необходимость?

Берём Delphi. Есть такой класс в нём, как кнопка. Да, согласен, можно перетащить его на форму и задействовать наследование. Н это Делфи. Где в MQL применимы классы и какая в них необходимость? Наверно я что-то не знаю.

Что проще подключить класс cTrade в ЕА  или вручную все запросы прописывать каждый раз,при этом увеличивая объем кода?При этом можно создать тучу клонов с разными маджиками и прочим и запускать каждого на отдельном символе   ,по своей индивидуальноой стратегии к примеру)Без классов ваш код бы на километры растянулся для таких действий.Думаю вопрос отпадает зачем они нужны.Для своих нужд они мало где применимы,тут согласен.