Три этих понятия очень часто используются. Ни один торговый робот не может обойтись без этих операторов, тем более управляющей конструкции if then else. По сути, основное, что делает торговый робот – это сравнивает математически или логически определенные значения и в зависимости от результата сравнения совершает определенное действие, например вход в сделку или выход из сделки. Зная логические операторы, операторы сравнения и конструкцию if then else, можно создавать практически неограниченные по сложности торговые алгоритмы. Знание этого раздела на 100%, абсолютно необходимо для программирования.

Операторы сравнения.

Язык программирования Lua поддерживает стандартные операторы сравнения. Такие как:
«>» – больше;
«<» – меньше;
«>=» – больше или равно;
«<=» – меньше или равно;
«==» – равно, используется для нахождения равенства двух значений. Оператор равенства состоит из двух знаков равно подряд «==». Обратите внимание. Когда мы записываем значение в переменную, то используем одинарный знак равно «=», этот знак в языке программирования Lua называется оператор присваивания. Например, набирая код x = 10, мы присваиваем переменной x значение 10, набирая код x = y, мы присваиваем переменной x значение переменной y.
«~=» – отрицание равенства, не равно.

В результате выполнения операторов сравнения получается значение true (истина) или false (ложь). Если условие верно, то результатом будет true (истина), и программа продолжит выполнять код, предназначенный для данного условия. Если условие не верно, то результатом будет false (ложь), и программа перейдет на строку кода, предназначенную для данного условия.

Логические операторы.

Логическими операторами являются операторы and (логическое и), or (логическое или), not (логическое не).

and (логическое и) – оператор используется, когда необходимо сделать два и более сравнений, которые должны выполниться одновременно. Например, x == y and x > z, если x будет равен y и одновременно x будет больше «z», то результатом выполнения такой операции будет true, иначе если хотя бы одно из этих двух сравнений не выполняется, то результатом будет false.

or (логическое или) – оператор используется, когда нам необходимо чтобы одно из двух выражений выполнялось. Например, x == y or x > z, если x будет равен y или x будет больше «z», то результатом такой операции будет true, иначе, если ни одно из двух сравнений не выполняется, результатом будет false.

Логические операторы and и or, используют сокращенное вычисление. Например, если в условии с оператором and, первое условие не выполняется, то второе условие проверяться не будет. Например, x == y and x > z, если «x» не равен «y», то программа не будет проверять больше ли «x» чем «z». Оператор or действует похожим образом. Если первое условие выполняется, то программа не будет проверять, выполняется ли второе условие.

not (логическое не, отрицание) – оператор используется, для инверсии логического значения, например значение «x» равно значению «y», тогда результатом сравнения x == y будет true, но если мы напишем not (x == y), тогда результатом сравнения будет false. Мы не будем использовать оператор not в наших кодах.

Управляющая конструкция if then else end (если, тогда, иначе, конец).

Конструкция является основой любых логических действий. С помощью данной, простой конструкции можно создать обработчики событий, любой сложности.

if (если) – после данного оператора следует условие, которое необходимо проверить, заканчивается условие оператором then (тогда). После оператора then (тогда) следуют строки, с кодом который выполняются в случае верности условия if (если). В случае если условие не верно, то программа переходит к строке с оператором else (иначе) и выполняет сроки кода, следующие за оператором. Конструкция заканчивается оператором end (конец).

Полная форма записи конструкции if then else end (если, тогда, иначе, конец):

if <условие, которое необходимо проверить> then

<код, который необходимо выполнить, если условие true (истина)>

else

<код, который необходимо выполнить, если условие false (ложь)>

end

Сокращенная форма записи без оператора else (иначе):

if <условие, которое необходимо проверить> then

<код, который необходимо выполнить, если условие true (истина)>

end

Сокращенная форма записи используется в случае отсутствия необходимости выполнения, каких либо действий, при неверности условия.

Конструкцию можно записать в одну строку кода:

if <условие> then <действие> else <действие> end

if <условие> then <действие> end

Управляющая конструкция if then else end поддерживает вложенные конструкции любого типа. Мы можем вложить в конструкцию if then else end, другую конструкцию if then else end. Например:

if <условие> then

<код, который необходимо выполнить>

if <условие> then

<код, который необходимо выполнить>

else

<код, который необходимо выполнить>

end

else

<код, который необходимо выполнить>

end

В языке программирования Lua существует упрощенная форма записи вложенных условий elseif. Пример:

if <условие_1> then

<код_1>

elseif <условие_2> then

<код_2>

end

Работает эта конструкция следующим образом. В начале, проверяется <условие_1>, если условие выполняется, программа исполняет <код_1>, далее программа пропускает оператор elseif и переходит в конец конструкции к оператору end. Если <условие_1> не выполняется то программа переходит на оператор elseif, и проверяет <условие_2>, если условие выполняется, то программа исполняет <код_2>, если <условие_2> не выполняется программа переходит в конец кода к оператору end.

Реализуем выше перечисленные операторы, в коде на языке Lua используя редактор SciTE. Откроем редактор SciTE, создадим новый файл и сохраним его под именем «004 Логические действия.lua».

Объявим несколько переменных.

local x = 10
local z = 20
local a = 10
local b = 20
local c = 50
local y

Оператор равенства «==».

Проверим равенство переменных «x» и «a», если переменные равны, сложим их значение, результат поместим в переменную y и выведем на экран значение переменной «y». Если переменные не равны, то вычтем из значения переменной «x» значение переменной «a», результат поместим в переменную «y» и выведем значение на экран. Для наглядности оформим вывод результата на экран текстовым комментарием.

if x == a then

y = x + a
print («x == a, условие true, y = «..y)

else

y = x – a
print («x ~= a, условие false, y = «..y)

end

Результат выполнения условия true. Значения переменных равны, на экран выводится сумма значений переменных «x» и «а». Выполним скрипт, нажатием клавиши F5.

Оператор сравнения больше «>».

Проверим больше ли значение переменной «x» чем значение переменной «z». Если x > z найдем сумму переменных и поместим результат в переменную «y» и выведем значение на экран. Если условие неверно и значение переменной x <= z, вычтем из значения переменной «x» значение переменной «z», результат поместим в переменную «y» и выведем значение на экран. Для наглядности оформим вывод результата на экран текстовым комментарием. 

if x > z then     — x = 10, z = 20, результат false

y = x + z
print («x >= a, условие true, y = «..y)

else

y = x – z
print («x < a, условие false, y = «..y)

end

Результат выполнения условия false. Значение переменной x < z, на экран выводиться разность значений переменных «x» и «z». Выполним скрипт клавишей F5.

Применение логических операторов and и or.

В случае необходимости соблюдения двух и более условий, для выполнения определенного действия, используются логические операторы and и or. Пример:

if x == a and z == b then       — x = 10, a = 10, z = 20, b = 20, результат true and true

y = (x + a) – (z + b)        — код выполняется оба условия верны
print («x = a, z = b, условие true, y = «..y)

end

if x == b or z == b then       — x = 10, z = 20, b = 20, результат x == b (false), z == b (true), необходимо получить результат true хотя бы в одном условии

y = (x + a) – (z + b)
print («x ~= b, z == b, условие or (или) выполняется, y = «..y)

end

В условии прописано, что для выполнения кода необходимо соблюдения равенства x == b или z == b, в результате x ~= b, а z == b, следовательно, код будет выполнен условие or (или) соблюдается.

Выполним скрипт.

Комбинация логических операторов.

Допускается комбинация логических операторов. Например:

if (x == b or z == b) and (x == a or z == a) then       —  x = 10, a = 10, z = 20, b = 20, результат оператора or в первых скобках true во вторых скобках результат true, результат выполнения оператора and так же true, поскольку true and true дают результат true, следовательно код будет выполнен. 

y = (x — a) + (z — b)
print («(z == b and x == a, условие выполняется, y = «..y)

end

Выполним скрипт.

Вы можете получить готовые коды скриптов с этого сайта.
Не тратьте свое время на ввод символов с клавиатуры, потратьте его лучше на создание своих собственных торговых роботов из блоков уже готового кода.