Роботы на qlua: разбираемся с новыми возможностями Quik

  • Автор темы orekton
  • Дата начала

orekton

New member
Некоторое время назад в Quik появился встроенный язык программирования qlua, который расширяет возможности пользователей в плане создания торговых роботов под эту платформу. Сравним возможности qlua с возможностями qpile и напишем простого робота.

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

Отсутствие нормального отладчика, что делает процесс отглючивания роботов весьма и весьма муторным и трудоемким.
Непохожесть многих конструкций qpile на такие распространенные языки, как C, Pascal и их множественные диалекты. Из-за этого сам процесс программирования становиться очень неудобным и трудоемким. То, что легко написать, к примеру, на Pascal, на qpile пишется через «танцы с бубнами».
В qpile для того чтобы добавить в коллекцию элемент нужно вызвать функцию добавления в коллекцию и результат этот функции присвоить коллекции. Это неудобно и провоцирует ошибки, которые потом из-за плохого отладчика трудно находить.
Очень неудобно отсутствие локальных переменных. В свое время я находил выход из этой ситуации – если в какой-то функции надо использовать внутренние переменные, которые не должны испортить общие данные, то такую переменную обозначал префиксом, сокращенным от имени процедуры. Хотя это тоже очень неудобно. Согласитесь, это извращение, называть переменную aoI (если она внутри функции AddOrder) или robCurrentPrice (если функция называется ReadOrderBook). Но другого выхода, к сожалению, нет.
В общем, новость я воспринял с энтузиазмом, надеясь, что в новом языке исправлены эти недочеты.

Итак свое знакомство с миром qlua я начал с того, что слегка «погуглил» эту тему. И вот что узнал: qlua – это адаптирвоанный под Quik язык lua, который поддерживается новыми версиями Quik. Сам язык lua по своим возможностям и идеологии ближе всего к JavaScript, но отличается гораздо более гибким конструкциями. Скажу сразу, что это не самый лучший вариант, так как не содержит понятий класса и объекта в явном виде (лучше бы они взяли за основу C# или, на худой конец, Object Pascal). Однако это все же намного более продвинутый язык, чем пресловутый qpile.

Итак, первым делом я решил опробовать на qlua простейшего робота (учебный пример), торгующего по пересечению двух мувингов (быстрый пересекает медленный снизу вверх – покупка, сверху вниз – продажа). Полный код робота прикрепленным файлом.

Принцип работы робота следующий: в цикле вызывается тело робота:

function main()

while is_run do

sleep(2000)

robot()

end

end


Вызов происходит с задержкой, указанной в параметрах функции sleep (в миллисекундах). Это, кстати, уже фишка qlua, на qpile интервал вызова робота мы могли задать только в секундах и только в настройке портфеля, а тут этот можно делать программно и программно же менять прямо в ходе работы робота.

Оригинал статьи и код робота на qlua http://robostroy.ru/community/article.aspx?id=653
 

Vyatskiy

New member
Некоторое время назад в Quik появился встроенный язык программирования qlua...
Добрый день!
Подскажите, пожалуйста, возможно ли на qlua организовать экспорт из Экселя данных в Квик и отрисовку на их основе уровней на графике?
 

orekton

New member
Добрый день!
Подскажите, пожалуйста, возможно ли на qlua организовать экспорт из Экселя данных в Квик и отрисовку на их основе уровней на графике?
Боюсь, что в квик ничего загрузить нельзя, можно только из квика.
 

Vyatskiy

New member
Жаль. То есть, и некое подобие индикатора не удастся сделать? На qpile хоть черточки на графике удавалось рисовать...
 
Your email address will not be publicly visible. We will only use it to contact you to confirm your post.
Сверху