ожидание-загрузки

Иногда при запуске скрипта необходимо, чтобы QUIK уже был соединён с сервером. Это достаточно легко обеспечить, запуская LUA скрипт уже после самого соединения.

Но что если, например, скрипт не был остановлен в предыдущий сеанс работы с Квиком и запускается вместе с ним при старте Квика? Ведь при старте Квика запуск скриптов производится раньше, чем соединение с сервером (даже с использованием любого автологина).

С этим может помочь добавление в скрипт проверки на наличие соединения QUIK с сервером брокера. Проверка эта будет производиться в цикле в начале функции main (ни в коем случае не в функции OnInit, иначе QUIK просто подвиснет, т.к. его поток будет занят этим циклом.

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

В цикле будем использовать функцию isConnected

01_isConnected

Данная функция возвращает 1 в случае если QUIK подключён к серверу, и 0 если подключения нет.

Итак, приступим…

В самом начале скрипта объявим переменные для используемых кодов инструмента SEC и его класса CLASS. А также вспомогательную переменную is_run.

02_Vars

Добавим функцию OnStop, которая вызывается Квиком при остановке скрипта из диалога управления и при закрытии терминала. В ней присвоим переменной is_run значение false. Это будет означать для проверок в дальнейшем коде факт того, что мы хотим остановить скрипт.

03_OnStop

Каждую итерацию (повторение) цикла будет проверяться статус соединения, и также значение переменной-флага is_run (для отслеживания нажатия на кнопку остановки скрипта). В самом же теле цикла вставим паузу перед следующей проверкой соединения.

04_CheckCycle

Если при очередной проверке функция isConnected вернёт 1, либо переменная is_run будет иметь значение false, произойдёт выход из этого цикла. Т.е. это случится только в двух случаях: если есть соединение с сервером и/или нажали на кнопку остановки скрипта.

После этого необходимо определить по какой причине вышли из цикла. Если было нажатие на кнопку остановки скрипта (или закрытия терминала QUIK), то ничего далее не выполняем, а просто выходим из функции main.

05_CheckPress

Далее идёт основной цикл скрипта с какими-либо своими функциями внутри, в котором скрипт будет продолжаться нужная работа, до того момента пока переменная is_run не станет равна false (по причине остановки скрипта с помощью нажатия на кнопку остановки или закрытия терминала, либо по какой-либо заранее указанной причине программистом в другом месте кода).

06_BaseCycle

Общий вид того что у нас получилось такой:

07_All

Скачать получившийся Скрипт на языке LUA для терминала QUIK можно по этой ссылке
 
 
 


Вы уже сейчас можете начать изучать Видео курс- роботы в TSLab и научиться самому делать любых роботов!
 
Можно записаться на следующий поток ОнЛайн курса «Создание роботов в TSLab без программирования», информацию по которому можно посмотреть тут->
 
Также можете научиться программировать роботов на нашем Видео курсе «Роботы для QUIK на языке Lua»
 
Если же вам не хочется тратить время на обучение, то вы просто можете выбрать уже готовые роботы из тех, что представлены у нас ДЛЯ TSLab, ДЛЯ QUIK, ДЛЯ MT5, ДЛЯ КРИПТОВАЛЮТЫ!
 
Также можете посмотреть совершенно бесплатные наработки для МТ4, Квика, МТ5. Данный раздел также постоянно пополняется.
 
Не откладывайте свой шанс заработать на бирже уже сегодня!