_________________________________________________________________________

суббота, 9 октября 2010 г.

Написание советников 7ч.

Составной оператор.


В выпуске "Использование констант в эксперте" мы научились описывать константы и разобрались, что же в коде нашего первого эксперта означают следующие строчки:
#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; // неверное выражение В следующем выпуске я расскажу об операциях отношения.

Постоянный адрес статьи: "Оператор присваивания. Арифметические операции"

 
Related Posts with Thumbnails
InstaForex