Избранное трейдера Андрей из Сибири
Сегодня рассмотрим:
Что такое таблица обезличенных сделок.
Настройка таблицы в терминале.
Что делать, если таблица открылась, но она пустая.
Вывод данных с таблицы по DDE.
Работа с таблицей обезличенных сделок через скрипт qlua с примерами.
Пишем советника, показывающего на графике крупных игроков.
Лента всех сделок (она же таблица обезличенных сделок, она же таблица всех сделок) — это тиковый массив сделок с одним или несколькими инструментами, в котором отражается информация по каждой сделке, в т.ч.: цена, объём и направление транзакции (покупка/продажа). Обычно для работы выбирается один инструмент, который отслеживается, реже 2 (например базовый актив и ближайший фьючерс на него). Встречал варианты, когда грузят сразу большой список, но в этом случае может сильно подвисать терминал.
Зачем нужна лента сделок: многие, пытаясь торговать внутри дня, проводят часы за медитативным наблюдением за биржевым стаканом. Однако стакан заявок это только намерение, далеко не все выставленные заявки перейдут в сделки. Более того иногда по некоторым акциям (2го и 3го эшелона) заявки в стакане могут активно «двигаться», создавая видимость, что в бумаге идет активная торговля, при этом, если открыть таблицу всех сделок, то будет видно, что реальных сделок практически нет.
Продолжаем следить за тем, что происходит с рынком жилой недвижимости. Прекрасное исследование подготовил ЦБ по проектному финансированию строительства жилых домов. Выписал самое главное. Спойлер: нераспроданного жилья становится всё больше. Рост зарплат отстаёт от роста цен на квадратные метры. Пузырь надувается, пружина сжимается. В обратную сторону.
1. 99% жилья строится на средства дольщиков (94% — эксроу-счета), лишь 1% — на свои средства. Меньше строить не стали, а лишь увеличили темпы.
Конвейер запущен, останавливать его нельзя.
www.cbr.ru/Collection/Collection/File/46282/pf_2023_Q2.pdf2. За последние 12 месяцев начали строить 45,6 млн метров жилья. Всего на данный момент 101 млн незавершённых метров. Продано на данный момент 73% в готовых объектах и 29% в незавершённых. Год назад продано было 80% готовых и 35% незавершённых.
То есть, доля непроданного жилья увеличивается. Льготные программы работают, конечно, но люди не могут осилить объёмы строительства.
Продолжаем погружение в основы qlua.
Идентификатор инструмента
Получаем количество свечей через getNumCandles
Получаем свечные данных через getCandlesByIndex
Читаем данные с индикатора SMA
Данные с верхней и нижней линии Price Channel
Графики с таблицы текущих торгов
Сравнение получение данных через CreateDataSource и через getCandlesByIndex
Торговый терминал позволяет получать данные по биржевым свечкам непосредственно из открытых графиков. Причем можно получать данные не только с котировок цены, но и с объемов, с индикаторов, а также, как мы увидим позже, с любых графических данных выведенных, например, с таблицы текущих торгов.
Получение данных котировок с графика цены.
Для начала на самом графике цены необходимо установить идентификатор.
Создаем график в торговом терминале, нажимаем правую клавишу мышки, выбираем «Редактировать», выбираем график цен:
Проваливаемся во вкладку «Дополнительно», и присваиваем id, например: SBER_ID:
Я проанализировал все взлеты и падения индекса МосБиржи на 10% и более за последние 20 лет.
Что получилось?
🔘С 2003 года рынок корректировался 82 раза.
🔘Средний % коррекции составляет 18,3%, а среднее время – 30 дней.
🔘Средний % роста рынка составляет 28,2%, а среднее время – 62 дня.
Что сейчас?
🔘С момента последней коррекции индекс вырос на 80% за 298 дней.
Подобный рост в % соотношении был лишь однажды в 2005 – 2006 году, тогда рынок акций за 129 дней вырос на 84,2%.
Если учитывать в расчетах дивиденды, то можно сказать, что текущая волна роста самая продолжительная за всю историю рынка!
🔘За 20 лет было всего 9 эпизодов роста нашего рынка на 50% и выше.
Пока не ушли далеко от темы получения данных из таблицы текущих торгов решил сделать в качестве примера еще и простой скринер акций. Это вполне доступно по тем материалам, которые мы уже прошли. Будем отслеживать динамику изменения цены относительно цены закрытия предыдущего дня.
Нам понадобятся:
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 – вне позиции по инструменту
Продолжаем изучение 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.
Я очень надеюсь, что в этом году этот список пополнится новыми героями. Многие из этих компаний я незаслуженно оставил за пределами своего портфеля. Но что же, все еще впереди:)
Кстати, этот список компаний точно не полный, пишите в комментарии, какие вы знаете еще компании, которые платят дивиденды не менее 10 лет, включая 2023 год.
Хотите читать действительно полезные статьи по финансовой тематике? Ставьте лайк и подписывайтесь!
Я так же стараюсь писать статьи для как можно большего количества людей, потому создал свой канал на дзен.
Все написанное в статье не является инвестиционной / индивидуальной инвестиционной рекомендацией или призывом покупать / продавать какие-либо ценные бумаги. Покупка ценных бумаг связана с риском частичной и полной утраты вложенных средств. Все инвестиционные решения вы принимаете самостоятельно.
В июне продажи выросли. Миллион по итогам года становится всё реальнее.
В июне по данным агентства «Автостат» в ГИБДД было зарегистрировано 82 тысячи новых легковых автомобилей.
График 1.
Заметим, что с 45 тыс. в январе рынок последовательно рос и вырос до 82 тысяч в июне.
Это в 2,5 раза (или на 149%) больше, чем в июне прошлого года.
График 2.