Скачать открытый код можно здесь disk.yandex.ru/d/UfZSXVXo9d3FnQ
Выглядит так
Подробнее здесь
В прошлый раз был создан советник, который по минимальной торговой логике давал нам некие сигналы на лонг/шорт. Но было что улучшать и, может, далеко не все пункты кто-то захочет включить в алгоритм собственного советника, но в учебных целях мы поэтапно рассмотрим каждый, чтобы было понимание как это можно реализовать.
Сегодня дополним скрипт теми пунктами, которые были связанные с обработкой времени:
Прежде всего начала сделаем правильное отображение цифровых данных.
В прошлых примерах все данные в скрипте выводились в формате строки.
При внимательном рассмотрении можно было заметить, что число выравнивалось по левому (как текст), а не правому краю (как число) ячейки.
Типы всегда можно посмотреть по функции AddColumn в файле QLUA (говорили об этом ранее) по запросу «Функции для работы с таблицами Рабочего места QUIK»:
Тип данных в колонке:
QTABLE_INT_TYPE – целое число,
Продолжаем изучение qlua, cегодня:
Интегрируем таблицы в структуру скрипта qlua.
Удаляем таблицы через DestroyTable.
Останавливаем скрипт через IsWindowClosed.
Обработка события закрытия таблицы через коллбэк.
Работа с цветом SetColor, Highlight, SetSelectedRow.
Пишем простого советника.
В прошлый раз мы рассмотрели как с помощью qlua создать таблицу в торговом терминале и заполнить её информацией из таблицы текущих торгов. Но это была статичная табличка, чтобы её «оживить» нужно разместить операции с нашей таблицей внутри структуры скрипта в функции main.
Саму таблицу мы можем создать до цикла while и внести неизменяемые данные (в нашем случае тикер и наименование бумаги), а уже заполнить цифрами и обновлять внутри цикла. Пока будет работать скрипт таблица будет обновляться.
function OnInit() tikers = {"GAZP", "SBER", "VKCO"} progname = "mytable :" timeout = 5000 end function OnStop() do_it = false message(progname.." Финиш.") end function main() message(progname.
ВРЕМЯ ДЕЙСТВИЯ: ДО ЗАКРЫТИЯ ТОРГОВ
УСЛОВИЕ: ЦЕНА >= 311
СТОП-ЛОСС: ЦЕНА ВАШЕЙ ПОКУПКИ — 4.9
ТЭЙК-ПРОФИТ: ЦЕНА ВАШЕЙ ПОКУПКИ + 4.9
ВРЕМЯ ДЕЙСТВИЯ: ДО ЗАКРЫТИЯ ТОРГОВ
УСЛОВИЕ: ЦЕНА >= 1950
СТОП-ЛОСС: ЦЕНА ВАШЕЙ ПОКУПКИ — 57
ТЭЙК-ПРОФИТ: ЦЕНА ВАШЕЙ ПОКУПКИ + 57
СТАТИСТИКА С 22.09.1997 ПО 29.12.2018: 710/396
(ЧИСЛО ПРИБЫЛЬНЫХ СДЕЛОК/ЧИСЛО УБЫТОЧНЫХ)
Сегодня рассмотрим:
1. Получение биржевых данных через функцию getParamEx
2. Выгрузка списка параметров функции getParamEx через DDE из торгового терминала
3. Создание пользовательских таблиц в торговом терминале
Одна из особенностей работы через квик это то, что можно получать достаточно большой объем биржевой информации по интересуемым инструментам. Большинство других платформ для алгоритмической торговли и терминалов в РФ будут выдавать только цену открытия, максимум/минимум дня, последнюю цену, цену закрытия, объемы по инструментам и максимум еще 3-5 каких-то дополнительных пунктов. В распоряжении тех, кто использует qlua огромная матрица параметров таблицы текущих торгов.
Получить их можно через функцию getParamEx:
getParamEx(код класса актива, инструмент, параметр), где:
код класса: например в случае акций это «TQBR», а в случае срочного рынка «SPBFUT».
инструмент: тикер.
параметр – один из параметров для соответствующей группы инструментом (об этом подробнее ниже).
Функция возвращает таблицу со следующими полями:
ВРЕМЯ ДЕЙСТВИЯ: ДО ЗАКРЫТИЯ ТОРГОВ
УСЛОВИЕ: ЦЕНА >= 44.21
СТОП-ЛОСС: ЦЕНА ВАШЕЙ ПОКУПКИ — 0.7
ТЭЙК-ПРОФИТ: ЦЕНА ВАШЕЙ ПОКУПКИ + 0.7
ВРЕМЯ ДЕЙСТВИЯ: ДО ЗАКРЫТИЯ ТОРГОВ
УСЛОВИЕ: ЦЕНА >= 607.4
СТОП-ЛОСС: ЦЕНА ВАШЕЙ ПОКУПКИ — 13
ТЭЙК-ПРОФИТ: ЦЕНА ВАШЕЙ ПОКУПКИ + 13
ВРЕМЯ ДЕЙСТВИЯ: ДО ЗАКРЫТИЯ ТОРГОВ
УСЛОВИЕ: ЦЕНА >= 1.895
СТОП-ЛОСС: ЦЕНА ВАШЕЙ ПОКУПКИ — 0.02
ТЭЙК-ПРОФИТ: ЦЕНА ВАШЕЙ ПОКУПКИ + 0.02
СТАТИСТИКА С 22.09.1997 ПО 29.12.2018: 710/396
(ЧИСЛО ПРИБЫЛЬНЫХ СДЕЛОК/ЧИСЛО УБЫТОЧНЫХ)