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

 
Seric29:

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

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

или один раз запишите их в массив в секции OnInit() и в дальнейшем Вы можете присваивать  скопировать массив в массив, но тут нужно, чтобы массивы были одинаковыми - возьмите массив с запасом, но тогда нужно контролировать номера индексов массива, чтобы не получить баг - возможно Вы будете использовать пустое значение массива - ошибку компилятор не выдаст, а расчеты будут ошибочные 

input int a1=1;
input int a2=2;
input int a3=3;

int ArrayOfInput[3];
int OnInit()
  {
   ArrayOfInput[0] =a1;
   ArrayOfInput[1] =a2;
   ArrayOfInput[2] =a3;
  return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
 // delete cx;
  }
//+------------------------------------------------------------------+
void OnTick()
  {
      int arr[3];
      ArrayCopy(arr,ArrayOfInput);
  }
//+------------------------------------------------------------------+
ЗЫ: почему то был уверен, что оператор присваивания работает для одинаковых массивов, возможно с классом перепутал - там точно работает если объекты одного класса
 
Igor Makanu:

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

или один раз запишите их в массив в секции OnInit() и в дальнейшем Вы можете присваивать  скопировать массив в массив, но тут нужно, чтобы массивы были одинаковыми - возьмите массив с запасом, но тогда нужно контролировать номера индексов массива, чтобы не получить баг - возможно Вы будете использовать пустое значение массива - ошибку компилятор не выдаст, а расчеты будут ошибочные 

ЗЫ: почему то был уверен, что оператор присваивания работает для одинаковых массивов, возможно с классом перепутал - там точно работает если объекты одного класса

Нет там тоже такое я пробовал (может пробовал мало и плохо потому что в них я не очень но насколько пробовал не получается плюс ко всему классы нужно расписывать обращаться через двоеточие лучше уж вот так делать как вы показали) думал может через классы нет приходится так вот как вы сделали по одной строчке присваивать.

 

Здравствуйте.

Подскажите, пожалуйста, можно ли менять часовой пояс в стандатном всплывающем окне с алертом?

Нужно синхронизировать время алерта со временем терминала (в случае когда оно разное в терминале и окне алерта). Это возможно?
 
Почему в mql4 можно вызывать одинаково функции формата int(и любым другим возвращемым значением) и void(процедурная функция), как оно так получается?
 

Вопрос. Как в цикле перебрать все значения перечисления с не равным шагом?


enum Types {

One=11,

Two=12,

Three=15,

Four=22,

Five=27

};

 
The_Sheikh:

Вопрос. Как в цикле перебрать все значения перечисления с не равным шагом?


enum Types {

One=11,

Two=12,

Three=15,

Four=22,

Five=27

};

никак, для enum не работает sizeof()  https://docs.mql4.com/ru/basis/types/integer/enumeration 

и при конвертации типов, теряется имя константы

enum Types { One=11, Two=12, Three=15, Four=22, Five=27,Six = 111,Seven = 222};
enum Types_abc { a, b, c, d, e,f,g};
void OnStart()
  {
   int sz = sizeof(Types);
   Print("sz = ",sz);
   Types z = Two;
   Types_abc x = b;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
   x = (Types_abc)z;
   Print("z = ",EnumToString(z)," , x = ",EnumToString(x));
  }

2019.08.03 10:52:13.288 tst EURUSD,H1: sz = 4

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Two , x = b

2019.08.03 10:52:13.288 tst EURUSD,H1: z = Two , x = Types_abc::12


 
Elena Baranova:

Здравствуйте.

Подскажите, пожалуйста, можно ли менять часовой пояс в стандатном всплывающем окне с алертом?

Нужно синхронизировать время алерта со временем терминала (в случае когда оно разное в терминале и окне алерта). Это возможно?
Alert выводит локальное время компа. Чтобы совпадало с временем терминала можно просто поменять время компьютера.
 
Seric29:
Почему в mql4 можно вызывать одинаково функции формата int(и любым другим возвращемым значением) и void(процедурная функция), как оно так получается?

это называется "перегрузка"

Документация по MQL5: Основы языка / Функции / Перегрузка функций
Документация по MQL5: Основы языка / Функции / Перегрузка функций
  • www.mql5.com
Обычно в названии функции стремятся отобразить ее основное назначение. Читабельные программы, как правило, содержат разнообразные и грамотно подобранные идентификаторы. Иногда различные функции используются для одних и тех же целей. Например, рассмотрим функцию, которая вычисляет среднее значение массива чисел двойной точности, и такую же...
 

Здравствуйте. Как поймать сигнал на вход со сторонего индикатора illuminator в коде? Индикатор красит на графике свечу и выводит алерт на вход.

Проще сказать я хочу написать робота под этот индикатор.

 
Alexey Viktorov:
Alert выводит локальное время компа. Чтобы совпадало с временем терминала можно просто поменять время компьютера.

Спасибо ) Это едиственный путь, по другому время в алерте никак не настроить? И есть ли альтернатива стандартной функции Alert() в MQL4, в которой можно было бы настаивать время алерта на время терминала?

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