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

 
Roman Sharanov:

в private создал переменную

в методе класса пытаюсь с ней произвести действия

ругается что переменная не объявлена

???

Код где?

 
Artyom Trishkin:

Код где?

при этом нужно чтобы функция была недоступна из внешнего кода

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int var;
public:
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double varSqrt(){
   return MathSqrt(var);
}
 
Roman Sharanov:

в private создал переменную

в методе класса пытаюсь с ней произвести действия

ругается что переменная не объявлена

???

Artyom Trishkin:

Но не верно.

Кто мешает использовать динамический массив при вычислениях? За размером динамического массива (если это НЕ индикаторный буфер, за которым следит подсистема) нужно следить самому, и при необходимости менять его размер. Статический же массив постоянно имеет единожды заданный размер - тут всё зависит от конкретной задачи.

Что за необоснованная чушь? Индикаторы в своём подавляющем большинстве только и занимаются, что вычисляют и отображают необходимое и достаточное количество рассчитанных данных. Постоянно, на каждом тике.

Что за набросы? От незнания? Тогда лучше промолчать. Потом люди будут говорить, что читали это на официальном форуме МК. Вы нарочно дезу создаёте?

Артем! Не утомляй меня.

Никто не мешает использовать динамический массив при вычислениях.

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

Поэтому все данные, которые придут в динамический массив во время вычислений автоматически игнорируются. (Иногда ставят защиту, и записывают их в буфер.)

Надеюсь это понятно?

Поэтому все данные по динамическим массивам разносятся по статическим массивам, чтобы не было потери данных в процессе работы процессора.

И поэтому все вычисления следует проводить в статических массивах !!!

Конечно, размер статических массивов следует задавать "с запасом". Это очевидно.

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

Надеюсь, так понятно???

 
Roman Sharanov:

при этом нужно чтобы функция была недоступна из внешнего кода

Где публичный метод доступа к var ?

Примерно так:

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class newC
  {
private:
   int var;
public:
   int               Var(void)      const { return this.var; }
                     newC(int var);
                    ~newC();
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::newC(int var)
  {
      this.var = var;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
newC::~newC()
  {
  }
//+------------------------------------------------------------------+
double varSqrt(){
   return MathSqrt(var);
}
//+------------------------------------------------------------------+

Для получения var используете метод Var();

 
neverness:

Артем! Не утомляй меня.

Никто не мешает использовать динамический массив при вычислениях.

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

Поэтому все данные, которые придут в динамический массив во время вычислений автоматически игнорируются. (Иногда ставят защиту, и записывают их в буфер.)

Надеюсь это понятно?

Поэтому все данные по динамическим массивам разносятся по статическим массивам, чтобы не было потери данных в процессе работы процессора.

И поэтому все вычисления следует проводить в статических массивах !!!

Конечно, размер статических массивов следует задавать "с запасом". Это очевидно.

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

Надеюсь, так понятно???

Бред.

 
Artyom Trishkin:

Где публичный метод доступа к var ?

Примерно так:

Для получения var используете метод Var();

так оно тогда из внешнего кода будет доступно? мне нужно чтобы эти переменные только внутри класса варились

 
Roman Sharanov:

так оно тогда из внешнего кода будет доступно? мне нужно чтобы эти переменные только внутри класса варились

Этот метод где определён?

//+------------------------------------------------------------------+
double varSqrt(){
   return MathSqrt(var);
}
//+------------------------------------------------------------------+
 
Artyom Trishkin:

Этот метод где определён?

ниже в файле класса

 

Если говорить об индикаторах, то индикаторы (вообще говоря!) следует вычислять. Но в МТ4/МТ5 мы этого не наблюдаем!

Что за необоснованная чушь? Индикаторы в своём подавляющем большинстве только и занимаются, что вычисляют и отображают необходимое и достаточное количество рассчитанных данных. Постоянно, на каждом тике.

Что за набросы? От незнания? Тогда лучше промолчать. Потом люди будут говорить, что читали это на официальном форуме МК. Вы нарочно дезу создаёте?

Артем!

А что, в MT4/MT5 в индикаторах статические массивы ????????????????????

В каком, интересно будет узнать?

Какая деза??? - Я же сразу сказал - если есть, то скажите где?

Все индикаторы в MT4/MT5, которые я знаю, динамические.

Да, отслеживают постоянно. Да, на каждом тике. 

Но это - динамические массивы, а не статические.

И никакой "дезы" здесь нет.

 
Artyom Trishkin:

Бред.

Ну, если это и бред, то проверенный опытом.

А не просто "теоретическая бредятина" !!!

- Если вычисления довольно длинные, то тики не записываются в задействованный массив данных.

ЭТО ФАКТ !!!

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