Избранное трейдера MrD
Сегодня рассмотрим:
Вывод текста на график
Вывод графических сигналов
Удаление меток с графика
Торговый советник на индикаторах
Удаление данных вечерней/утренней сессии с графика.
В торговом терминале почти нет графических инструментов, которых можно было бы задействовать через скрипт. Фактически разработчики оставили возможность использовать только индикаторы (неточность или ошибка в написании которых может подвесить весь терминал) и специальные метки, которые можно наносить на график.
И хотя сам терминал имеет возможность отрисовки различных линий, фигур, каналов, дуг, уровней, но из lua скрипта ничего этого до сих пор штатными методами не доступно. Разработчики оставили единственную возможность — вывод рисунка (bmp или jpg), поэтому желающий нарисовать, например, прямоугольник должен сперва его отрисовать где-то (или взять из библиотек рисунков), сохранить в нужном формате, и далее уже через метку поместить в конкретном месте графика. Вот такой вот «кружок авиамоделизма») Посмотрим как это работает.
Кратко расскажу принципы и некоторые нюансы работы с графиком в Qiuk в плане создания своего индикатора (здесь и далее – подразумевается использование языка программирования Lua). В конце текста изначально хотел прикрепить видео с демонстрацией и краткими пояснениями работы моих индикаторов, но решил сделать это во второй части статьи, чтобы совместить просто иллюстрацию с небольшим анализом фьючерсов и акций.
На полноту изложения вопроса по работе с индикаторами на графике Quik не претендую. Информация будет полезна интересующимся данной темой, не рассчитана на профессионалов (которые и так все знают, умеют и реализовали – свято в это верю), но все же предполагает наличие определенного уровня знаний Lua.
Зачем мучиться со своими индикаторами? Конечно, в этом нет смысла, если вас устраивают стандартные индикаторы или отсутствуют самостоятельные подходы (методы) торговли, либо визуализация вам в принципе не требуется (не интересна).
В моем случае мне банально захотелось сделать визуализацию своего метода прогнозирования экстремумов цены следующего интервала.
Функция CreateDataSource
Получение количества свечек данных
Пауза для подгрузки данных
Получение по инструменту OPEN, HIGH, LOW, CLOSE, VOLUME
Обработка времени и даты
Закрытие источника данных
Примеры: получение данных последних 10 свечей, выгрузка новой минутной свечки после её закрытия, текущее значение простой средней SMA10 по минуткам
Простой скрипт выгрузки котировок
Сегодня рассмотрим функцию, с помощью которой можно получать данные биржевых свечек. Это можно делать и с графиков (чуть позже рассмотрим), но в этом случае нужно, чтобы сам график как источник данных был открытым, что не очень удобно, особенно если скрипт использует несколько таймфреймов – необходимо аналогичным образом держать открытыми и соответствующее количество графиков.
Более практичным вариантом является получение данных через функцию CreateDataSource, запрос осуществляется следующим образом:
ds, err = CreateDataSource(код класса, тикер инструмента, интервал)
Код класса: для акций «TQBR», для срочного рынка «SPBFUT».
Пока не ушли далеко от темы получения данных из таблицы текущих торгов решил сделать в качестве примера еще и простой скринер акций. Это вполне доступно по тем материалам, которые мы уже прошли. Будем отслеживать динамику изменения цены относительно цены закрытия предыдущего дня.
Нам понадобятся:
1. Таблица для вывода данных (строить уже умеем).
2. Получение данных из таблицы текущих торгов через getParamEx (проходили там же).
3. Тикеры бумаг. Можно взять конкретный список бумаг и работать с ним, но приятнее и правильнее, чтобы скрипт мог автоматом выгружать все торгуемые тикеры из терминала и далее уже отслеживать их динамику. Попробуем это реализовать.
Через sec_list = getClassSecurities(«TQBR») можно получить строку с тикерами акций на Московской бирже, которые будут разделены запятыми. Чтобы пройтись по всем элементам и записать их в массив используем цикл:
for TIKER in string.gmatch(sec_list, "[^,]+") do tikers[#tikers + 1]=TIKER end
Отслеживать будем параметр LASTCHANGE – процент изменения цены от цены закрытия:
Сегодня дополним наш алгоритм советника следующими пунктами:
1. Пропуск «поздних» сигналов на старте.
2. Обработка советником обрыва связи.
3. Сохранение сигналов и логов в файл.
Еще один пункт, связанный со временем, который был выбран для апгрейда советника – это пропуск сигналов на старте, если запуск скрипта состоялся не в начале торговой сессии (например любой старт после 10:30). Это может быть полезным, если выбрана активная внутридневная стратегия и сигналы полученные на старте скрипта, например в середине дня, могут быть уже не актуальными (с низким потенциалом прибыли) и лучше дождаться новых. Т.е. необходимо разделить сигналы на те, которые сгенерировались на старте и остальные сигналы, которые будем далее брать в работу. Сигнал на старте может закрыться (по обратному/сигналу выхода) и если переоткроется снова, то его уже можно брать в работу как новый.
В нашем скрипте сигналы по каждому инструменту (массив signal) ранее могли принимать значение:
0 – вне позиции по инструменту