База скрипта в QLua (lua)

Автор записи: Дмитрий (Admin)
1 звезда2 звезды3 звезды4 звезды5 звезд (Голосов 8, среднее: 5,00 из 5)
Загрузка...

-- Это основная функция скрипта, которая работает в отдельном от QUIK потоке,
-- это означает, что если QUIK будет перегружен работой,
-- например, при большом объеме поступающих сделок,
-- то QLua - скрипт продолжит выполнять свою работу в штатном режиме,
-- при условии, что у QUIK найдется процессорное время для того, чтобы "выдать" скрипту
-- необходимую информацию для работы (если она ему потребуется)
function main()
   -- здесь будет Ваш код
end;
-- Если запустить такой скрипт, то эта функция выполнится 1 раз и скрипт остановится.

-- Если Вам нужно постоянно выполнять какой-то код,
-- то для этого нужно внутри этой функции расположить т.н. "бесконечный цикл",
-- но для того, чтобы возможность остановить скрипт все-таки была,
-- делается подобным образом:
 
IsRun = true;
 
function main()
   while IsRun do
 
   -- здесь будет Ваш код
 
   sleep(1); 
   -- ОБЯЗАТЕЛЬНО !!!(это пауза в 1 миллисекунду), ИНАЧЕ СКРИПТ БУДЕТ СИЛЬНО НАГРУЖАТЬ ПРОЦЕССОР
   -- И ПРИ ЗАВЕРШЕНИИ ТАКОГО СКРИПТА QUIK МОЖЕТ АВАРИЙНО ЗАВЕРШИТЬ СВОЮ РАБОТУ
   end;
end;
 
function OnStop()
   IsRun = false;
end;
 
-- Функция OnStop вызывается автоматически, когда пользователь нажимает кнопку "Остановить",
-- или закрывает терминал.
-- Внутри этой функции можно расположить какой-то свой код,
-- который нужно выполнить по завершению работы скрипта.
-- В данном случае при завершении скрипта переменной IsRun присваивается ЛОЖЬ,
-- после чего цикл while внутри функции main перестает выполнятся и скрипт останавливается.
 
-- ВАЖНО!!! Не помещайте в эту функцию код, которому нужно много времени для выполнения,
-- потому что, время выполнения этой функции ограничено примерно 5-ю секундами.
-- Так же, как OnStop, существует функция инициализации Init, 
-- которая, в отличие от OnStop, выполняется до запуска скрипта,
-- перед началом работы функции main
 
IsRun = true;
 
function OnInit()
   -- Здесь будет Ваш код для начальной инициализации
end;
 
function main()
   while IsRun do
 
   -- Здесь будет Ваш код,
   -- который будет выполнятся,
   -- пока скрипт не остановлен
 
   sleep(1);
   end;
end;
 
function OnStop()
   -- Здесь будет Ваш код,
   -- который нужно выполнить
   -- перед остановкой скрипта
   IsRun = false;
end;
Сказочка про работу скрипта 🙂
Если у Вас появились какие-то вопросы, задайте их в комментариях под статьей !!!

Добавить комментарий

База скрипта в QLua (lua): 56 комментариев

  1. Доброго времени суток! Ктоподскажет, почему в девятой версии QUIK перестали работать метки в индикаторах, привязанные через идентификаторы к графику через Label? Всё остальное работает, линии возвращаются и отображаются.