Новички, с какими трудностями в программировании на MQL вы сталкиваетесь в 2025 году? - страница 18

 

беда просто разобраться во всех этих ООП, которые при переходе из декларации, ведут в другие 2-3строчки(функции) и там каждая ведет еще дальше уже до развитого кода, и как во всем этом разобраться?

реально использует кто кроме trade?


интересует мнение, реально используются все эти системные библиотеки или все забили и берут в свой код только ,то что нужно в данный момент? Без виртуальных функций, без шаблонов, и прочей не "френдли юзер" функционала



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

 
Artyom Trishkin #:
Вам ещë бочку, или первой хватило? 
Разобраться разобрался, а запомнилось на долго
 
lynxntech #:

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

в двух словах бы кратко кто объяснил, а то я так до конца дней не соберусь, вроде и ИИ под рукой для таких вопросов, но, всегда есть куча других задач

Забейте. Есть фундаментально важные вещи, а есть специфические. Виртуальные функции относятся ко вторым и используются в ООП, да и то не во всем. К тому же изучив их, можно начать писать код еще хуже чем был до этого. Сейчас от наследования стараются дистанцироваться как можно дальше.

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

 
lynxntech #:

беда просто разобраться во всех этих ООП, которые при переходе из декларации, ведут в другие 2-3строчки(функции) и там каждая ведет еще дальше уже до развитого кода, и как во всем этом разобраться?

реально использует кто кроме trade?

Нужно сделать шаг назад и сосредоточится на функциях и принципах их композиции. Если достигните глубокого понимания функций и их композиции, придет понимание и ООП. Это следующий шаг-надстройка, которого строго говоря может и не быть. Т.е. Вы можете научится великолепно программировать и без ООП.
 
lynxntech #:

беда просто разобраться во всех этих ООП, которые при переходе из декларации, ведут в другие 2-3строчки(функции) и там каждая ведет еще дальше уже до развитого кода, и как во всем этом разобраться?

реально использует кто кроме trade?

интересует мнение, реально используются все эти системные библиотеки или все забили и берут в свой код только ,то что нужно в данный момент? Без виртуальных функций, без шаблонов, и прочей не "френдли юзер" функционала

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

Не вся стандартная библиотека написана хорошо. По-моему мнению там есть откровенно отвратительные вещи. Но много и хорошего. Понять стандартную библиотеку опять-таки Вы сможете изучив базу: функции и их композицию. Дальше этого принципа ничего нового, а только надстройки и следствия.
 
Rorschach #:
Больше всего взорвало мозг при переходе на 5 система торговли, без бочки рома не разберешься.
Парадоксально, но система торговли в МТ5 осталась прежней. Это таже анимичная модель на числовых идентификаторах для общения. Просто в МТ4, в силу компактности его АПИ она сработала. А в МТ5 оказалась уже сложноватой для многих.
 
Vasiliy Sokolov #:
А вот действительно фундаментально важное понятие, это указатель на функцию.

Я почему-то думал, что указатели на функцию не относятся к ООП. ChatGpt тоже так думает:


Vasiliy Sokolov #:
Есть фундаментально важные вещи, а есть специфические. Виртуальные функции относятся ко вторым и используются в ООП, да и то не во всем.

Вы хотите сказать, что полиморфизм это не фундаментально важная вещь? Виртуальные функции это же про полиморфизм, разве нет?

[edit] Когда в вакансии указано "понимание основ и принципов ООП", полиморфизм можно не учить (как не фундаментальную и не важную вещь)?
 
Vasiliy Sokolov #:
Парадоксально, но система торговли в МТ5 осталась прежней. Это таже анимичная модель на числовых идентификаторах для общения. Просто в МТ4, в силу компактности его АПИ она сработала. А в МТ5 оказалась уже сложноватой для многих.
MT4Orders не просто так популярна
 
Vladislav Boyko #:

Я почему-то думал, что указатели на функцию не относятся к ООП. ChatGpt тоже так думает:

Вы хотите сказать, что полиморфизм это не фундаментально важная вещь? Виртуальные функции это же про полиморфизм, разве нет?

[edit] Когда в вакансии указано "понимание основ и принципов ООП", полиморфизм можно не учить (как не фундаментальную и не важную вещь)?
Совершенно верно, указатели на функции не относятся к ООП. Это более фундаментальное понятие. Но не ООП единым. Однако, понятие полиморфизм не монополия ООП. Напротив, полиморфизм в понимании ООП, очень местечковый и ограниченный. Чистую и мощную концепцию полиморфизма представляют из себя именно указатели на функции. Поэтому отвечая на Ваш вопрос: да, полиморфизм - это фундаментальная и важная вещь, учите ее, изучая указатели на функции.
 
lynxntech #:

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

в двух словах бы кратко кто объяснил, а то я так до конца дней не соберусь, вроде и ИИ под рукой для таких вопросов, но, всегда есть куча других задач

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

Это моя последняя попытка что либо тебе объяснить.

Вот тебе код с закомментированой виртуальной функцией.

Это класс CmyTrade потомок класса CTrade

#include <Trade\Trade.mqh>
CTrade trade;
class CmyTrade : public CTrade
 {
public:
                     CmyTrade(void){};
                    ~CmyTrade(void){};
  //virtual double     CheckVolume(const string symbol,double volume,double price,ENUM_ORDER_TYPE order_type) { Print("Это виртуальная функция."); return 0;};
 };
 CmyTrade myTrade;
//--- 
/*******************Expert initialization function*******************/
int OnInit()
 {
  myTrade.CheckVolume(_Symbol, 1, 0, ORDER_TYPE_BUY);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

Если пошагово в отладчике посмотреть, то несмотря на то, что вызывается самописный класс строка

myTrade.CheckVolume(_Symbol, 1, 0, ORDER_TYPE_BUY);

открывается библиотека Trade\Trade.mqh

Но потом раскомментируй строку, получится так

#include <Trade\Trade.mqh>
CTrade trade;
class CmyTrade : public CTrade
 {
public:
                     CmyTrade(void){};
                    ~CmyTrade(void){};
  virtual double     CheckVolume(const string symbol,double volume,double price,ENUM_ORDER_TYPE order_type) { Print("Это виртуальная функция."); return 0;};
 };
 CmyTrade myTrade;
//--- 
/*******************Expert initialization function*******************/
int OnInit()
 {
  myTrade.CheckVolume(_Symbol, 1, 0, ORDER_TYPE_BUY);
  return(INIT_SUCCEEDED);
 }/******************************************************************/

И запустив этот код будет напечатано 

Это виртуальная функция.

То-есть твоя самописная функция.

Есть ещё ключевое слово override которое я не стал применять. Но, в моём понимании, это просто защита от ошибки. Применять надо, но в начале может только запутать.