Полная конструкция цикла while do end

Начнем с определения слова цикл. Цикл – это совокупность явлений, процессов, составляющая кругооборот в течение определенного промежутка времени (Толковый словарь Ожегова). Цикл while многократно выполняют один и тот же код, до наступления заранее определенной ситуации или до оператора break. Оператор break разрывает цикл, выполнение кода переходит к оператору end. Мы можем задать любое условие для остановки выполнения цикла. В цикле должно быть обязательно предусмотрено условие его остановки, в противном случае цикл может выполняться бесконечно.

Цикл while выглядит следующим образом: while <условие> do<код цикла> end Читается – следующим образом, пока <условие> true (истина) код цикла выполняется снова и снова, пока <условие> не станет значением false (ложь).

Чтобы посмотреть, как работает цикл while, рассмотрим теоретический пример. Допустим, мы пишем торгового робота, который будет осуществлять операцию покупки финансового инструмента, когда цена превышает максимум предыдущего дня. Для этого необходима периодическая проверка текущей цены и сравнение ее с ценой максимума предыдущего дня, т.е. необходимо выполнять одну и ту же операцию много раз. В этом нам поможет цикл while.

Создадим новый lua файл для записи примера цикла while. Назовем его «007 While.lua». Создадим переменные:

local LastPrice = 100       — последняя цена сделки

local HightPrevDay = 105       — максимум предыдущего дня

Так же нам понадобится логическая переменная, которая остановит цикл, если последняя цена сделки превысит максимум предыдущего дня, объявим ее с именем EnterInPos и присвоим ей значение «NO». (Имя переменной EnterInPos это сокращение от Enter in position – вход в позицию).

local EnterInPos = «NO»       — вход в позицию не выполнен

Добавим условие, в котором проверяется цена последней сделки и максимальная цена предыдущего дня. Если цена последней сделки превысит максимум предыдущего дня, то мы выведем на экран строку «Цена последней сделки больше максимума предыдущего дня» и присвоим переменной EnterInPos значение «YES».

Теперь нам нужно откуда-то взять последнюю цену сделки. Смоделируем изменение цены инструмента с помощью функции. Напишем функцию, которая увеличивает последнюю цену сделки на 1, начальное значение установлено в переменной LastPrice, которая равняется 100. Назовем функцию LastPriceGenerate и запишем ее код в самое начало скрипта.

Из цикла на вход в функцию будет передаваться значение переменной LastPrice, в функции LastPrice будет увеличиваться на 1 и возвращаться обратно в цикл. Добавим, перед условием if LastPrice > HightPrevDay then, строку вызова функции из цикла while и поместим результат выполнения функции в переменную LastPrice.

Это ознакомительная часть курса, что бы просмотреть полный курс, пожалуйста оплатите подписку, подписка действует 2 года. Помимо доступа к полному тексту курса, предоставляются все коды скриптов и вспомогательные файлы. Первые три раздела предоставляются бесплатно в полном объеме. Всем кто ранее покупал коды скриптов доступ будет предоставлен бесплатно, пожалуйста пришлите запрос с Email на который Вам были направлены коды.