Избранное трейдера SnickyDog
Всем привет!
В данной статье хотел показать интересный подход формирования отчета из QUIK, который выдается в формате файла HTML и который можно посмотреть любым браузером.
В своем канале на Дзен, я показывал как можно получать информацию скриптами QLUA:
— как переносить информацию в Эксель;
— как записывать информацию в файл;
— как отражать информацию в собственной таблице QUIK.
Все эти способы достаточно ограничены в части оформления выдачи результатов. Если же нужную информацию переносить в файл HTML, то там мы практически ничем не ограничены и можем отображать нужную информацию любыми шрифтами, цветами и пр.
В качестве пример, я покажу скрипт, который запросит все доступные фьючерсы и выдаст их в файл в виде таблицы.
Для начала нам потребуется функция QLUA — getClassSecurities.
Данная функция выводит список всех бумаг указанного класса. В нашем случае команда getClassSecurities(«SPBFUT») выдаст нам список всех доступных фьючерсов. В результате мы получим одну строку с кодами бумаг, разделенные запятыми.
Ссылка на мониторинг: https://tradelink.pro/user/7392dd60-6664-4b89-992b-aef34cd75b87
Открыл сегодня опять, трейдлинк чёт глючит, появится на днях и арбитраж там. Давайте вместе смотреть на мои эксперименты дальше, раз уж я их продолжаю делать.
Фаза 1.
Tретий тип арбитража, который я когда-либо торговал, на тот момент, т.к. то, что мы торговали на МОЕКС, в чистом виде на крипте не пошло, и пришлось провести несколько этапов модернизации алгоритма. Про него можно узнать в моей серии постов «Ликбез по арбитражу» в оглавлении моего блога.
Фаза 2.
Тут я, очумев от радости и 100 % прибыли за полгода, включил его на полную катушку. И в основной счёт добавил на пике. И клиентам… Пара-пара-па. Через полгода стало очевидно, что период номер один – одурачивание случайностью, а я был рад одурачиться. Половина клиентов из управления ушла. Те, кто торговал со мной арбитраж, из квантов включили так же все на хаях, ибо экспериментировать не хотелось со мной, а подтверждение в 100% — самое время заходить.
Сегодня начинаем уже писать полноценные скрипты для терминала, а не отдельные блоки кода на lua.
Пройдем:
Структура скрипта
В торговом терминале можно запускать небольшие примеры на lua, как мы это делали ранее, но если говорить о постоянно работающем алгоритме, а не о компактной программе, которая должна выполнить только несколько коротких действий, то минимальная структура скрипта для квика будет содержать следующие функции:
function OnInit – инициализирует глобальные переменные и константы (например, торгуемые бумаги, размеры тейка и стопа, торговый счет и пр.), имена таблиц, необходимых файлов.
function OnStop – функция остановки скрипта, активируется при нажатии клавиши «Остановить» в панели скриптов терминала.
function main – основная функция, создает отдельный поток для выполнения скрипта. Обычно внутри main создается цикл для непрерывной работы, т.к. без него функция выполнит один раз весь код, который в ней прописан и скрипт остановится.
Продолжаем погружаться в основы языка. Сегодня рассмотрим:
Циклы for … do… end
while do … end
repeat … until
sleep
Как пройти весь массив циклом
Как пройти таблицу по ключам и значением
break
goto
Локальные и глобальные переменные
Функции
Получение даты и времени
Получение данных через getInfoParam
Цикл for … end
for index = start, end, step do -- start – начало отсчета, -- end – конец отсчета, step - шаг -- тело цикла end
Пример:
for i = 1, 10 do -- пройтись от 1 до 10 c шагом 1 (по умолчанию)<br /> message("i="..i) -- вывод i<br /> end
Можно задать шаг:
for i = 1, 10, 2 do -- пройтись с 1 до 10 с шагом 2 message("i="..i) end
Цикл while do...end
while (условие) do -- тело цикла end
Выполняет тело цикла, пока соблюдается условие. Если условие на старте не соблюдается, то цикл не запустится.
Пример:
a = 1 while a < 9 do a = a + 1 message(tostring(a)) end
Цикл repeat … until
Весь материал, который здесь и далее будет рассматриваться по qlua, работает на 10й версии квика. Вполне допускаю, что со временем какие-то функции разработчики перепишут и в новых версиях что-то нужно будет сверять c мануалами, уточнять хелпом и на форумах, но предполагаю, что а) эти изменения будут вводиться очень не быстро и б) синтаксис и основа при этом останутся без существенных изменений.
Сегодня рассмотрим:
message
Выводит сообщение в торговом терминале в формате окна (в прошлой статье говорил, что удобнее отключить, чтобы не отвлекаться постоянно) и в таблице системных сообщений.
Особенности message: функция после вывода делает перенос строки, поэтому если необходимо вывести несколько значений в одной строке нужно делать их слияние (об этом ниже).
Для корректного отображения русских букв необходимо выбирать котировку файла Windows-1251 (об этом также в прошлый раз мы уже говорили). Иногда по этой причине некоторые разработчики пишут только на английском весь вывод текста в терминал, чтобы не заморачиваться с кодировкой, в т.ч. при размещении на github и совместной работе с кодом.