Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 1479

 
Alexey Viktorov #:
Поставь & перед именами переменных на входе в функцию и все проблемы будут решены

Нашёл и посмотрел видео про функции со ссылками. Из данного видео урока понял, что мне нужен не просто урок MQL5 для начинающих, а урок MQL5 для особо одарённых тупизной начинающих. Короче говоря, ничего толком так и не понял. В общем, нужно переварить всю полученную информацию и заново раз так пять, а то и шесть, пересмотреть это видео. Зато будет чем заняться в свободное от работы время! ))

С уважением, Владимир.

 
MrBrooklin #:

Нашёл и посмотрел видео про функции со ссылками. Из данного видео урока понял, что мне нужен не просто урок MQL5 для начинающих, а урок MQL5 для особо одарённых тупизной начинающих. Короче говоря, ничего толком так и не понял. В общем, нужно переварить всю полученную информацию и заново раз так пять, а то и шесть, пересмотреть это видео. Зато будет чем заняться в свободное от работы время! ))

С уважением, Владимир.

Не тать время, даже если его деть некуда. Одно имя "учителя" говорит за себя, дилетант он и есть дилетант. 

В этом видео тебе полезного только 3 минуты. А всё остальное только отвлекает и ты теряешь полезную информацию.

Лучше внимательно почитай документацию, поэкспериментируй с примерами и всё поймёшь.

Документация по MQL5: Основы языка / Функции / Передача параметров
Документация по MQL5: Основы языка / Функции / Передача параметров
  • www.mql5.com
Передача параметров - Функции - Основы языка - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Alexey Viktorov #:

Не тать время, даже если его деть некуда. Одно имя "учителя" говорит за себя, дилетант он и есть дилетант. 

В этом видео тебе полезного только 3 минуты. А всё остальное только отвлекает и ты теряешь полезную информацию.

Лучше внимательно почитай документацию, поэкспериментируй с примерами и всё поймёшь.

Спасибо, Алексей! Думал, что видео урок для меня будет более информативный и полезный, а всё оказалось с точностью до наоборот. Что касаемо Справочника MQL5 раздел Передача параметров, так и его точно так же читал, но получилось, как в той известной поговорке: "Гляжу в книгу, вижу фигу!" Ничего не понял. Короче говоря, конечно же ещё несколько раз перечитаю и поэкспериментирую, выбор-то у меня не особо большой. ))

С уважением, Владимир.

 

Посмотрев видео урок и прочитав про передачу аргументов по ссылке в Справочнике MQL5, вроде более-менее стало понятно. Однако, проанализировав представленный в Справочнике код, один фрагмент всё-таки вызвал недоумение, хотя, на мой взгляд, он никак не связан с передачей аргументов по ссылке:

//+------------------------------------------------------------------+
//| передача параметров по ссылке                                    |
//+------------------------------------------------------------------+
double SecondMethod(int &i,int &j)
  {
   double res;
//---
   i*=2;
   j/=2;
   res=i+j;
//---
   return(res);
  }
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//---.
   int a=14,b=8;
   Print("a и b перед вызовом:",a," ",b);
   double d=SecondMethod(a,b);
   Print("a и b после вызова:",a," ",b);
  }
//+------------------------------------------------------------------+
//--- результат выполнения скрипта
//  a и b перед вызовом: 14 8
//  a и b после вызова: 28 4

В связи с этим у меня появился вопрос к знатокам программирования на языке MQL5 - за каким лядом в OnStart() функцию SecondMethod(a,b) "запихнули" в переменную d? Это что, обязательное условие для корректной работы скрипта и опять чего-то недопонял?

С уважением, Владимир.

 

Подскажите пожалуйста.

Есть много массивов со временем, причём время некоторых элементов в этих массивах может совпадать.

Нужно собрать их в один массив без повторения значений времени.

Я сделал это так:

struct str1
  {
   int               time[];// в массиве порядка 10 тыс элементов
  };

struct str2
  {
   str1              arr[];// в массиве порядка 1 тыс элементов
  };

str2 m_name[]; // в массиве порядка 100 элементов

int ArrFull[]; // массив в который нужно собрать отсортированное время без повторений
//+------------------------------------------------------------------+
void OnStart()
  {
// считаем что m_name[] ранее уже заполнили


   int tempArr[];// объявляю дополнительный массив

   int size1 = ArraySize(m_name);
   for(int i = 0; i < size1; i++)
     {
      int size2 = ArraySize(m_name[i].arr);
      for(int j = 0; j < size2; j++)
        {
         // копирую в дополнительный массив все массивы времени из структур
         ArrayInsert(tempArr, m_name[i].arr[j].time, ArraySize(tempArr));
        }
     }
// сортирую дополнительный массив
   ArraySort(tempArr);

   int size = ArraySize(tempArr);
   ArrayResize(ArrFull, size);
   ArrFull[0] = tempArr[0];
   int j = 1;

// копирую не повторяющиеся элементы из дополнительного массива в массив с которым в дальнейшем буду работать
   for(int i = 1; i < size; i++)
      if(ArrFull[j - 1] != tempArr[i])
        {
         ArrFull[j] = tempArr[i];
         j++;
        }

   size = ArrayResize(ArrFull, j);

// дальше продолжение. много много букв
  }
//+------------------------------------------------------------------+


Но это получился очень медленный код. Нужно быстрее. А как ???

 
MrBrooklin #:

Посмотрев видео урок и прочитав про передачу аргументов по ссылке в Справочнике MQL5, вроде более-менее стало понятно. Однако, проанализировав представленный в Справочнике код, один фрагмент всё-таки вызвал недоумение, хотя, на мой взгляд, он никак не связан с передачей аргументов по ссылке:

В связи с этим у меня появился вопрос к знатокам программирования на языке MQL5 - за каким лядом в OnStart() функцию SecondMethod(a,b) "запихнули" в переменную d? Это что, обязательное условие для корректной работы скрипта и опять чего-то недопонял?

С уважением, Владимир.

Переменной  d присваивается результат выполнения функции
 
Artyom Trishkin #:
Переменной  d присваивается результат выполнения функции

Спасибо, Артём, за отклик! А просто функцию SecondMethod(a,b) использовать без присвоения никак нельзя?

С уважением, Владимир.

 
MrBrooklin #:

Спасибо, Артём, за отклик! А просто функцию SecondMethod(a,b) использовать без присвоения никак нельзя?

С уважением, Владимир.

Можно. Тогда будет получено два значения - только в переменные, передаваемые по ссылке. Т.е. функция возвращает три значения
 
Artyom Trishkin #:
Можно. Тогда будет получено два значения - только в переменные, передаваемые по ссылке. Т.е. функция возвращает три значения

Ради интереса убрал переменную d. Оставил только функцию. Результат вывода на печать не изменился. А про три значения, честно говоря, вообще не понял.

С уважением, Владимир.

 
MrBrooklin #:

Ради интереса убрал переменную d. Оставил только функцию. Результат вывода на печать не изменился. А про три значения, честно говоря, вообще не понял.

С уважением, Владимир.

Не изменился потому, что это значение не выводилось на печать.

Просто добавь печать и увидишь.

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