Полная конструкция цикла 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».