Пятница, 04.07.2025, 06:44
Forex4you - все о форекс
Главная Регистрация Вход
Приветствую Вас, Гость · RSS
Меню сайта
Категории раздела
Введение в форекс [12]
Основные понятия [10]
Ценовая информация [3]
Графический анализ [4]
Фундаментальный анализ [8]
Технический анализ [2]
Индикаторы [5]
Осцилляторы [3]
Торговая система [17]
Стратегии форекс [120]
Видео уроки Forex [34]
Курс программирования MQL4 [14]
В помощь Трейдеру [6]
Рекомендуем
Бесплатная стратегия - основы графических построений
Система Станислава Чувашова "Личный Банк"
"Мастерская Forex Роботов" Полный ПАКЕТ
Как научиться прогнозировать 99% всех колебаний цены на форекс за 1-2 месяца и постоянно наращивать депозит?
Бесплатный видеокурс по числам ФИБОНАЧЧИ
"Волны Вульфа" - популярная стратегия профи-трейдеров
"Бесплатный видеокурс "Профессиональный Forex Старт"
Как заработать ДЕНЬГИ на Финансовом Беттинге БЕЗ Анализа, Прогнозов и Прочих сложных стратегий!
Лучшие советники, индикаторы и стратегии для торговли
Друзья сайта
  • Видео очевидного и невероятного

  • Математическая смекалка

  • The Delphi - сайт о программировании

  • Юмор на телевидении

  • Женские штучки

  • Почемучка

  • Телевидение онлайн

  • Красота
  • Наш опрос
    Как Вы торгуете на форекс?
    Всего ответов: 10
    Статистика

    Онлайн всего: 1
    Гостей: 1
    Пользователей: 0
     Все о Forex
    Главная » Статьи » Форекс » Курс программирования MQL4

    Программирование MQL4: Урок 7 – Функции

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

    Итак, начнём седьмой урок.

    В чём смысл функций ?

    Функция очень похожа на мясорубку - вы кладёте в неё мясо, лук, специи и получаете фарш.
    Мясо, лук и специи называются параметрами функции (входными параметрами функции), фарш - возвращаемое значение. А механизм мясорубки - тело функции.
    Есть только одно различие между функциями и Вашей мясорубкой: некоторые функции возвращают НИЧЕГО (в MQL4 ничего называется словом void).
    Пример:

    double // тип фарша - возвращаемое значение
    my_func (double a, double b, double c) // название функции и список параметров (мясо, лук и специи)
     { 
     return (a*b + c); // фарш на выход - функция возвращает некоторое значение
     }

    Как Вы видите выше, функция начинается с типа возвращаемого значения “double”, за ним следует имя функции, после которого идут круглые скобки.
    Внутрь скобок Вы кладёте мясо, лук и специи, точнее параметры функции.
    В данном случае – три параметра: double a, double b, double c.
    Затем идёт тело функции, которое заключено в фигурные скобки.
    В данном примере, тело функции выполнит операцию (a*b + c).
    Ключевое слово return ответственно за возвращение итого результата.

    Ключевое слово return

    Оператор return (); завершает работу функции (как break; завершает работу цикла), и передаёт контоль в точку вызова функции (об этом скоро).
    Оператор return (); может содержать выражение в своих скобках, как в нашем примере. Это означает, что надо завершить работу функции и вернуть результат вычисление этого выражения.
    Или оператор return (); может не содержать выражения в своих скобках. Тогда его единственная задача – завершить работу функции.
    Внимание: не все функции используют оператор return (); Особенно, если возвращаемого значения нет, как в следующем примере:

    void // void означает, что фарша не будет – возвращаемое значение
    my_func (string s) // function name and parameters list (meat & spices)
     { 
     Print(s);
     }

    Эта функция не вернёт никакого значения, но она напечатает параметр s, который Вы ей предоставите. Чтобы показать, что функция ничего не возвращает, используется “void” в качестве её возвращаемого значения.
    В некоторых языках программирования такие функции называются “методам”, но в MQL4 они всё равно функции.

    Вызов функции

    Теперь, я надеюсь, мы понимаем, что такое функция. Как же использовать функции в Вашей программе?
    Есть ещё один шаг, который нужно для этого сделать.
    Этот шаг называется вызовом функции (её использованием).

    Допустим, у Вас есть функция, котороая возвращает сумму двух integer.
    Вот она:

    int collect (int first_number, int second_number) 
     { 
     return(first_number+ second_number);
     }

    Вы хотите ей воспользоваться в своей программе.
    Делается это так:

    int a = 10;
    int b = 15;
    int sum = [b]collect[/b](a,b);
    Print (sum);

    В этом примере на экран распечатается 25. Магия! Но как компьютер узнал, что печатать?
    Магической является строчка int sum = collect(a,b); Здесь Вы объявили переменную sum, чтобы в неё положить возвращаемое значение, а затем дали функции на вход два параметра (a,b).

    Вы просто-напросто вызвали функцию.

    Когда MQL4 видит имя функции в Вашей программе, он берёт Ваши параметры и идёт к функции, после чего он возвращается с результатом и кладёт его на то же место.
    На самом деле, происходит следующее: в процессе компиляции MQL4 заменяет строчку с вызовом функции в вашей программе целиком телом самой функции (с учётом Ваших параметров). Причём вместо оператора return(); MQL4 производит присваивание возвращаемого им значения в родготовленную Вами переменную.

    Вложение функций друг в друга

    В тело одной функции можно вкладывать другие функции. Это потому что строчка вызова обрабатывается, как оператор (это и есть оператор).
    Пример:

    void print_collection (int first_number, int second_number) 
     { 
     int sum = collect(first_number, second_number);
     Print(sum);
     }

    В этом примере мы вызвали функцию collect внутри функции print_collection и распечатали результат. void означает, что возвращаемого значения нет (ещё помните?).

    Спец. функции MQL4: init(), deinit(), start().

    В MQL4 любая программа начинает своё выполнение с функции “init()” (initialize) и она срабатывает, когда Вы перетаскиваете программу (советника или индикатор) на график MetaTrader или если Вы поменяете валюту или период графика. Задача этой функции заключается в инициализации основных переменных, необходимых для работы Вашей программы. (Больще об инициализации переменных Вы узнаете в следующем уроке).

    Когда Ваша программа заканчивает свою работу, или Вы закрываете окно графика, или меняете валюту или период графика, или закрываете терминал, срабатывает функция “deinit()” (de-initialize).

    Третья функция (самая важная) “start()” срабатывает каждый раз, когда приходят новые котировки. 90% своей программистской жизни Вы проводите внутри этой функции.

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

    Категория: Курс программирования MQL4
    Просмотров: 2415 | Теги: атс, советник, робот, MetaTrader, программирование, MQL | Рейтинг: 1.0/1
    Всего комментариев: 0
    Добавлять комментарии могут только зарегистрированные пользователи.
    [ Регистрация | Вход ]
    Copyright Forex4you © 2010-2025
    Форма входа
    Поиск

    Как стабильно зарабатывать от 5% процентов прибыли ежедневно на автопилоте


    Спонсоры
    Лучшие брокеры
    ДЦ Forex4you
    ДЦ Instaforex
    ДЦ Alpari
    Для партнеров
    Партнерская программа "БЕЗОПАСНЫЙ ФОРЕКС"
    Партнерская программа от Trading-SYS
    Партнерская программа "Основы торговли Волн Вульфа"
    Статьи и новости
    Котировки валют
    Котировки от Forex4You

    Хостинг от uCoz