Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 2223

 
Aleksey Vyazmikin #:

Понять о чём, о СИ?

когда заинтересуетесь, тоогда и ясно будет, ООП при этих работах странно видеть

 
Aleksey Vyazmikin #:

Он пробовал и так

Я ему " что за тип "Node "? "

А он

"

Вы правы, ошибка компиляции возникает из-за того, что структура Node содержит поля left и right , которые ссылаются на экземпляры того же типа Node . Такая рекурсивная ссылка в структуре не допускается.

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

"
И так пару раз по кругу по сути. Чёт он не поймёт, что для MQL5 так нельзя.

Может кто может поправить его код? Если я тут выложу?

Как я понимаю, в MQL нет указателей на структуры. Но! Есть "дескрипторы" для классов - во многом ведут себя как те же указатели. А чем класс от структуры отличается? https://www.mql5.com/ru/docs/basis/types/classes#class

 
lynxntech #:

когда заинтересуетесь, тоогда и ясно будет, ООП при этих работах странно видеть

Странно для чего и для кого? Как то сложно изъясняетесь.

 
сам использую всего 2 класса, при огромном кол-ве функционала, а список работ, до конца дней
 
Valeriy Yastremskiy #:

Спасибо за код, но не хочет он работать- ругается на две не объявленные переменные((((
 
Aleksey Vyazmikin #:

Так можно писать?

Вот этот ChatGPT мне код такой даёт, а компилятор ругается - как ему на ошибку то указать?

К сожалению ничего не смыслю в ООП :(

Может Вам подойдёт такое:

class Node
{
    int featureIndex;
    double splitValue;
    Node* left;
    Node* right;
};
 
Koldun Zloy #:

Может Вам подойдёт такое:

Вот на такое я и намекал. Но, вероятно, надо добавить "public:".

class Node
{
public:
    int featureIndex;
    double splitValue;
    Node* left;
    Node* right;
};
 
DanilaMactep #:
Спасибо за код, но не хочет он работать- ругается на две не объявленные переменные((((

Так объявите их на глобальном уровне или в функции

 if(lang)

уберите и елсе. это если русский то по русски, иначе на английском.

Вторую переменную не увидел.

 

здравствуйте всем!

нашел такую функцию (хочу применить у себя в коде)

//+-----------------------------------------------------------------------------+
//|  Описание : Возвращает флаг наличия ордера или позиции в истории за сегодня |
//+-----------------------------------------------------------------------------+
//|  Параметры:                                                                 |
//|    sy - наименование инструмента   (""   - любой символ,                    |
//|                                     NULL - текущий символ)                  |
//|    op - операция                   (-1   - любая позиция)                   |
//|    mn - MagicNumber                (-1   - любой магик)                     |
//+-----------------------------------------------------------------------------+

bool ExistInHistoryToDay(string sy="", int op=-1, int mn=-1) {
  int i, k=OrdersHistoryTotal();

  if (sy=="0") sy=Symbol();
  for (i=0; i<k; i++) {
    if (OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) {
      if (OrderSymbol()==sy || sy=="") {
        if (op<0 || OrderType()==op) {
          if (mn<0 || OrderMagicNumber()==mn) {
            if (TimeDay  (OrderOpenTime())==Day()
            &&  TimeMonth(OrderOpenTime())==Month()
            &&  TimeYear (OrderOpenTime())==Year()) return(True);
          }
        }
      }
    }
  }
  return(False);
}

компиляция выдает: expression not boolean в двух строчках.

Подскажите пожалуйста почему так?


 
законопослушный гражданин #:

здравствуйте всем!

нашел такую функцию (хочу применить у себя в коде)

компиляция выдает: expression not boolean в двух строчках.

Подскажите пожалуйста почему так?


Когда этот код писался было True == true и false == False 

Теперь нет. Только true и false.

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