Обсуждение статьи "Функции в MQL5-приложениях"

 

Опубликована статья Функции в MQL5-приложениях:

Функции являются критически важными компонентами в любом языке программирования. Помимо прочего, они помогают разработчикам применять принцип DRY (don't repeat youself, не повторяйся). В статье рассмотрены функции и их создание в MQL5 с помощью простых приложений, которые обогащают вашу торговую систему, но не усложняют ее.

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

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

  • Пользовательские функции позволяют применять метод DRY (не повторяйся): Мы создаем функцию, которая может выполнить нашу задачу один раз, а затем вызвать ее в любой подходящей части программного обеспечения.
  • Повторное использование: После создания функции мы можем повторно использовать ее в любое время.
  • "Разделяй и властвуй": Мы можем разделить большую задачу на маленькие и решить каждую из них с помощью функций.
  • Код становится более читабельным и понятным: Каждый элемент кода решает конкретную задачу.
  • Абстракция: Без функций нам понадобилось бы больше строк кода.
  • Инкапсуляция: Функции позволяют защитить код и данные, а также упрощают управление ими.
  • Упрощение отладки: Функции значительно упрощают поиск и устранение ошибок.

Автор: Mohamed Abdelmaaboud

 

Спасибо автору за эту статью! Считаю, что для всех начинающих изучать язык программирования MQL5 это очень полезная информация. Добавил себе в избранное.

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

Добавлено: единственное моё пожелание при публикации статей на русскоязычном форуме - это чтобы все комментарии были на русском языке. Так в разы легче усваивать информацию. Привожу для примера. Вместо:

//addition function
// returned data type is an integer - the name of the function is add - parameters or arguments are two int variables val1 and val2
int add(int val1, int val2)
  {
   //body of function that we need the function to perform when calling it
   //create a result new variable to be assigned by the result of val1 and val2 addition
   int result = val1+val2;
   //Print result in the experts tab
   Print(result);
   //returning value
   return 0;
  }

было бы здорово увидеть сразу перевод:

//функция сложения
//возвращаемый тип данных — целое число. Имя функции — add. Параметрами или аргументами являются две переменные типа int val1 и val2.
int add(int val1, int val2)
   {
    //тело функции, которое нам нужно, чтобы функция выполняла при ее вызове
    //создаем новую переменную результата, которой будет присвоен результат сложения val1 и val2
    int result = val1+val2;
    //Распечатываем результат на вкладке экспертов
    Print(result);
    //возвращаемое значение
    return 0;
   }

Кстати, когда делал перевод комментариев на русский язык, у меня возникло ещё одно добавление в виде вопроса: а почему return в этой функции возвращает ноль, а не result?

Это разве не ошибка автора?

 
MrBrooklin #:

Кстати, когда делал перевод комментариев на русский язык, у меня возникло ещё одно добавление в виде вопроса: а почему return в этой функции возвращает ноль, а не result?

Это разве не ошибка автора?

Господа программисты!!! Неужели у меня на старость лет мозги высохли до такой степени, что уже не понимаю назначение оператора return или это, всё-таки, ошибка автора?

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

 
MrBrooklin #:

Господа программисты!!! Неужели у меня на старость лет мозги высохли до такой степени, что уже не понимаю назначение оператора return или это, всё-таки, ошибка автора?

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

Привет Владимир. Я думаю, что ты уже стал достаточно опытным программистом чтобы догадаться, что это просто ошибка…

 
Alexey Viktorov #:

Привет Владимир. Я думаю, что ты уже стал достаточно опытным программистом чтобы догадаться, что это просто ошибка…

Доброе утро, Алексей! Спасибо, конечно, но до достаточно опытного программиста мне ещё, как до Пекина ползком. )) Просто мне удивительно, как на форум статьи с такими косяками пропускают?

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

 
MrBrooklin #:

Доброе утро, Алексей! Спасибо, конечно, но до достаточно опытного программиста мне ещё, как до Пекина ползком. )) Просто мне удивительно, как на форум статьи с такими косяками пропускают?

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

Владимир, «достаточно опытный» не значит гуру. Это не лесть.

Функция написана и не отлажена, потому возможны такие ошибки по невнимательности. А то, что пропускают……… Сколько надо персонала чтобы все статьи внимательно перечитывать и править такие ошибки? Не реально… Заметил ошибку — сообщил, её исправили и все довольны.

 
Alexey Viktorov #:

Владимир, «достаточно опытный» не значит гуру. Это не лесть.

Функция написана и не отлажена, потому возможны такие ошибки по невнимательности. А то, что пропускают……… Сколько надо персонала чтобы все статьи внимательно перечитывать и править такие ошибки? Не реально… Заметил ошибку — сообщил, её исправили и все довольны.

Дело в том, что по этим статьям учатся новички, в том числе с нулевыми знаниями, и у них нет возможности оценить - правильно или не правильно написан код, а только принять на веру. ))

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

 
MrBrooklin #:

Спасибо автору за эту статью! Считаю, что для всех начинающих изучать язык программирования MQL5 это очень полезная информация. Добавил себе в избранное.

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

Добавлено: единственное моё пожелание при публикации статей на русскоязычном форуме - это чтобы все комментарии были на русском языке. Так в разы легче усваивать информацию. Привожу для примера. Вместо:

было бы здорово увидеть сразу перевод:

Кстати, когда делал перевод комментариев на русский язык, у меня возникло ещё одно добавление в виде вопроса: а почему return в этой функции возвращает ноль, а не result?

Это разве не ошибка автора?

Здравствуйте, мистер Бруклин!

Спасибо за ваш комментарий и ваше уведомление. Эта ошибка была отредактирована и отправлена для публикации правильной.


Большое спасибо

 
Mohamed Abdelmaaboud #:

Здравствуйте, мистер Бруклин!

Спасибо за ваш комментарий и ваше уведомление. Эта ошибка была отредактирована и отправлена для публикации правильной.

Большое спасибо

Добрый день! Спасибо за ответ.

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

 
MrBrooklin #:

Дело в том, что по этим статьям учатся новички, в том числе с нулевыми знаниями, и у них нет возможности оценить - правильно или не правильно написан код, а только принять на веру. ))

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

Надеюсь наш диалог не сочтут флудом.

Если новичок берёт чужой код и тупо применяет его в своих задачах, как многие до сих пор берут устаревшие функции кима, это не ученики, это недоразумение. Аналогично такому «Он не Шумахер, он херашум»

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

 
Alexey Viktorov #:
как многие до сих пор берут устаревшие функции кима

Алексей, тоже надеюсь, что не сочтут за флуд, но, честно говоря, понятия не имею ни о каких функциях кима. Это вообще о чём идёт речь?

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

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