Всем привет! В этом уроке мы разберем операторы языка mql5. Без этих знаний сложно описать даже самый простейший алгоритм.
Операторы языка MQL5 представляют собой элементы программы, которые контролируют способ и порядок обработки объектов. Они описывают некоторые алгоритмические действия, которые необходимо выполнить для решения задачи, поставленной перед программистом. По сути, программа и состоит из последовательности таких вот операторов. Между собой многие операторы разделяются точкой с запятой.
Предыдущие уроки
- MQL5 Урок 1 – Редактор кода, События, Устройство mql-программ
- MQL5 Урок 2 – Типы переменных
- MQL5 Урок 3 – Операции и Выражения
Сегодня мы познакомимся со следующими операторами:
- Составной оператор {};
- Оператор-выражение (;);
- Оператор return;
- Условный оператор if-else;
- Условный оператор ?:
- Оператор выбора switch;
- Оператор break.
Составной оператор
Составной оператор (блок) состоит из одного или большего числа операторов любого типа, заключенных в фигурные скобки { }. После закрывающейся фигурной скобки не должно быть точки с запятой (;). Например:
if(x==0)
{
Print("invalid position x = ",x);
return;
}
Внутри фигурных скобок может быть заключено любое число операторов.
Оператор-выражение
Любое выражение, заканчивающееся точкой с запятой (;), является оператором. Например, оператор присваивания:
Идентификатор = выражение;
Пример:
x=3;
y=x=3;
bool equal=(x==y);
В выражении оператор присваивания может присутствовать много раз. В этом случае обработка выражения ведется справа налево.
Оператор возврата return
Оператор return прекращает выполнение текущей функции и возвращает управление вызвавшей программе. Результат вычисления выражения возвращается вызываемой функции.
int CalcSum(int x, int y)
{
return(x+y);
}
Выражение return также может содержать и оператор присваивания. В функциях с типом возвращаемого значения void (то есть функция ничего не возвращает) нужно использовать оператор return без выражения:
void MyFunction()
{
Print("Hello!");
return;
}
Конкретно в этом примере оператор return можно удалить, потому что тип функции void не возвращает значений, а точка выхода из функции всего одна. Завершающая фигурная скобка функции предполагает неявное исполнение оператора return без выражения.
С помощью оператора return можно возвращать простые типы, простые структуры, указатели объектов. При помощи оператора return нельзя возвращать любые массивы, объекты классов, переменные типа сложных структур.
Условный оператор if-else
Оператор if else используется при необходимости сделать выбор. Синтаксис оператора выглядит так:
if (выражение)
оператор1
else
оператор2
Если выражение истинно, то выполняется оператор1 и управление передается на оператор, следующий за оператором2 (т.е. оператор2 не выполняется). Если выражение ложно, то выполняется оператор2.
Часть else оператора if может опускаться. Поэтому во вложенных операторах if с пропущенной частью else может возникнуть неоднозначность.
Условный оператор ?:
Этот условный оператор часто называют тернарным оператором. Общая форма тернарного оператора выглядит так:
выражение1 ? выражение2 : выражение3
В качестве первого операнда «выражение1» может быть использовано любое выражение, результатом которого является значение типа bool. Если результат равен true, то выполняется оператор, заданный вторым операндом, то есть «выражение2».
Если же первый операнд paвен false, то выполняется третий операнд – «выражениеЗ». Второй и третий операнды, то есть «выражение2» и «выражениеЗ» должны возвращать значения одного типа и не должны иметь тип void. Результатом выполнения условного оператора является результат «выражение2» или результат «выражение3» в зависимости от результата «выражение1».
Оператор-переключатель switch и оператор прерывания break
Этот оператор сравнивает значение выражения с константами во всех вариантах case и передает управление оператору, который соответствует значению выражения. Каждый вариант case может быть помечен целой константой, символьной константой или константным выражением. Константное выражение не может включать переменные или вызовы функций. Выражение оператора switch должно быть целого типа int или uint.
switch(выражение)
{
case константа: операторы
case константа: операторы
…
default: операторы
}
Операторы, связанные с меткой default, выполняются, если ни одна из констант в операторах case не равна значению выражения. Вариант default не обязательно должен быть объявлен и не обязательно должен быть последним. Если ни одна константа не соответствует значению выражения и вариант default отсутствует, то просто не выполнится никаких действий.
Ключевое слово case вместе с константой служат просто метками, и если будут выполняться операторы для некоторого варианта case, то далее будут выполняться операторы всех последующих вариантов до тех пор, пока не встретится оператор break, что позволяет связывать одну последовательность операторов с несколькими вариантами. Например:
switch(выражение)
{
case константа1: {
оператор1;
оператор2;
break;
}
case константа2:
{
оператор3;
оператор4;
break;
}
…
default: операторы
}
На этом все, всем пока!
С уважением, Дмитрий аkа Silentspec
Tlap.com
Топ Брокеров 2025 по версии TLAP
Центовые счета
Быстрый ввод и вывод
Платформа CopyFx для копирования сигналов
Отличное исполнение
На рынке с 1998 года
Низкие спреды
Быстрый ввод и вывод
Хорошее исполнение
Множество способов пополнения
С 2007 года на рынке
Счета Zero с нулевыми спредами
Система Копи-трейдинга
Хорошее исполнение
Более 500 торговых инструментов
Комиссия на пополнение 0%
Лицензия ЦБ РФ
Удобный ввод и вывод средств
Подходит для крупных трейдеров
Крупнейший форекс дилер в России
Компания – налоговый агент, выплата налогов без участия клиента
Торговля через MetaTrader 5
Форекс, фондовые индексы и нефть
Низкие спреды
Хорошее исполнение
Подходит для торговли советниками
Торговля криптовалютами
Центовые счета со стартовым лотом 0.01
Система копирования сделок Share4You
Низкие спреды
Подходит для новичков
Лучшие на рынке условия для работы с сеточниками и мартингейлом
Исполнение без вмешательства дилинга
Низкие спреды
Трейдинг Forex, CFD и Crypto
Полная прозрачность работы
Множество представительств компании, в том числе в Великобритании
На рынке с 2006 года
| ||
| ||
| ||
| ||
| ||
| ||
|