Как работает логика в программировании? Более конкретно, как строить алгоритмы в MQL4? Вопрос справедливый. Ведь, когда мы думаем и строим планы, мы используем такие выражения как «если», «то», «в зависимости» и пр. Например: «если в магазине будут соски, тогда я куплю их и еще кетчуп, но если сосисок не будет, тогда я куплю рис, и кетчуп уже покупать не буду». В трейдинге мы применяем те же самые методы алгоритмизации. Пример: «если сигнальная линия MACDпересекает основную гистограмму индикатора снизу вверх, то я покупаю; если же пересечение происходит в противоположном направлении, то я продаю».
Как же данную логику воплотить в код MQL4?
Данная задача решается с помощью операторов условий: if, if…elseи switch.Рассмотрим все три подробнее.
1 — Оператор if
Оператор if является самым простым среди операторов условия. Пример:
if( x< 100 ) Print(«hi»);
После if идут круглые скобки, в которых записывается выражение проверки (в данном случае x< 100). Если результат выражение проверки является истиной (true), то тело оператора if будет выполнено. В данном случае тело состоит из одного оператора — Print(«hi»); . А если результат выажения проверки является ложью (false), то тело оператора if НЕ выполняется, а контроль переходит оператору, следующему за телом if.

2 — Оператор if … else
Оператор if позволяет что-то сделать, если определённое условие выполняется. Допустим, мы хотим сделать что-то другое, если это условие не выполнено. Для этого есть оператор if … else. Он состоит из оператора if и его тела, после чего идёт ключевое слово else и его тело. Пример:
if(current_price<stop_loss_level) Print(«It’s not too late to stop, please stop!»);
else Print(«you’re playing well today!»);

3 — Оператор switch
Если у Вас есть большое дерево условий, и все условия зависят от одного параметра, то можно применить оператор switch. Пример:
switch(x) {
case ‘A’: Print(«CASE A»); break;
case ‘B’:
case ‘C’: Print(«CASE B or C»); break;
default: Print(«NOT A, B or C»); break; }
После ключевого слова switch идут круглые скобки. Внутри этих скобок находится switch-константа. Внутри фигурных собок находятся case-константы — это проверямые условия switch-константы. Они записываются в виде case<значение>: <что делать>. <Значение> может быть integer, character или неизменным выражением. Неизменность выражения означает, что оно не зависит от переменных. Например, выражение X+Y не является неизменным.
Как же работает указанный пример? Оператор switch сравнивает switch-константу поочерёдно со всеми case-константами.
В случае x==’A’ программа напечает «CASEA» и оператор break; прервёт оператор switch. Контроль передастся за пределы блока switch.
В случае x==’B’ или x==’C', программа напечатает «CASEBorC». Это потому что нет оператора break; в case ‘B‘: .
В случае x!= ни одной из case-констант, оператор switch выполнит блок default: и напечатает «NOTA, BorC».

|