Составной оператор
В выпуске Использование констант вэксперте мынаучились описывать константы иразобрались, чтоже вкоде нашего первого эксперта означают следующие строчки:
#define STATE_SQUARE 0
#define STATE_LONG 1
#define STATE_SHORT 2
В выпуске Внешние переменные мынаучились задавать параметры эксперта, инам стали понятны следующие строчки:
extern int MAPeriod = 13;
extern double LotsNumber = 1.0;
Кроме локальных истатических переменных мырассмотрели иглобальные (науровне одного модуля) переменные, врезультате приоткрылась завеса над еще двумя строчками нашего эксперта:
int CurrentState;
int MyOrderTicket;
Теперь рассмотрим более подробно, чтоже внашем эксперте делает функция init().
int init()
{
//----
if (iMA(NULL, 0, MAPeriod, 0, MODE_EMA, PRICE_CLOSE, 0) > Close[0])
CurrentState = STATE_SHORT;
else CurrentState = STATE_LONG;
MyOrderTicket = 0;
//----
return(0);
}
Как мызнаем извыпуска Функции init(), start() иdeinit() эта функция запускается вследующих случаях:
- после присоединения советника кграфику;
- после старта MetaTrader 4иподгрузки исторических данных;
- после смены инструмента или периода графика;
- после перекомпиляции программы вредакторе MetaEditor;
- после изменения настроек эксперта;
- после смены торгового счета.
Если отбросить комментарии, которые начинаюся сдвойного флэша (//), томыувидим, что эта функция состоит изнескольких команд (назовем ихоператорами), разделенных точкой запятой (;). Когда нам нужно объединить несколько операторов водин связный блок (например, вфункцию), мыиспользуем конструкцию, которая называется составной оператор. Иными словами мыэти операторы заключаем вфигурные скобки { и}. После закрывающей фигурной скобки { недолжно стоять точки сзапятой.
Пример составного оператора:
if (b==3)
{
b = b + 1;
Print (b);
}
Оператор присваивания. Арифметические операции
Формат оператора присваивания:
переменная = выражение;
В качестве левой части оператора присваивания может выступать также элемент массива. Вначале вычисляется выражение, которое потом присваивается переменной.
Пример оператора присваивания:
b = b + 1;
Допустим, что перед выполнением этого оператора переменная b была равна 7.Тогда вначале вычисляется выражение вправой части ( 7+1= 8), азатем значение этого выражение (8)присваивается переменной b.
В выражении может использоваться несколько типов операций. Рассмотрим самый простой тип арифметические операции:
| Операция | Пример |
| Сложение двух аргументов | j + k |
| Вычитание второго аргумента изпервого | j k |
| Умножение аргументов | j * k |
| Получить частное отделения первого аргумента навторой | j / k |
| Получить остаток отделения первого аргумента навторой | j % k |
| Изменить знак аргумента | -k |
Вне выражений (ввиде отдельного оператора) можно применять операции:
- Увеличение аргумента наединицу: j++
- Уменьшение аргумента наединицу: j-
Пример:
j++; // верное выражение
k = (j++) + 3; // неверное выражение
Перейти к главе «
Операции отношения и логические операции».