Избранное трейдера ezomm

по

Qlua: пишем скринер акций Московской биржи

Пока не ушли далеко от темы получения данных из таблицы текущих торгов решил сделать в качестве примера еще и простой скринер акций. Это вполне доступно по тем материалам, которые мы уже прошли. Будем отслеживать динамику изменения цены относительно цены закрытия предыдущего дня.

Нам понадобятся:

1. Таблица для вывода данных (строить уже умеем).

2. Получение данных из таблицы текущих торгов через getParamEx (проходили там же).

3. Тикеры бумаг. Можно взять конкретный список бумаг и работать с ним, но приятнее и правильнее, чтобы скрипт мог автоматом выгружать все торгуемые тикеры из терминала и далее уже отслеживать их динамику. Попробуем это реализовать.

Через sec_list = getClassSecurities(«TQBR») можно получить строку с тикерами акций на Московской бирже, которые будут разделены запятыми. Чтобы пройтись по всем элементам и записать их в массив используем цикл:

for TIKER in string.gmatch(sec_list, "[^,]+") do
  tikers[#tikers + 1]=TIKER
end


Отслеживать будем параметр LASTCHANGE – процент изменения цены от цены закрытия:



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua: завершаем апгрейд советника.

Сегодня дополним наш алгоритм советника следующими пунктами:

1. Пропуск «поздних» сигналов на старте.
2. Обработка советником обрыва связи.
3. Сохранение сигналов и логов в файл.


Еще один пункт, связанный со временем, который был выбран для апгрейда советника – это пропуск сигналов на старте, если запуск скрипта состоялся не в начале торговой сессии (например любой старт после 10:30). Это может быть полезным, если выбрана активная внутридневная стратегия и сигналы полученные на старте скрипта, например в середине дня, могут быть уже не актуальными (с низким потенциалом прибыли) и лучше дождаться новых. Т.е. необходимо разделить сигналы на те, которые сгенерировались на старте и остальные сигналы, которые будем далее брать в работу. Сигнал на старте может закрыться (по обратному/сигналу выхода) и если переоткроется снова, то его уже можно брать в работу как новый.

В нашем скрипте сигналы по каждому инструменту (массив signal) ранее могли принимать значение:

0 – вне позиции по инструменту



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Qlua дополняем скрипт советника таймингом: устанавливаем время старта и завершения скрипта, фиксируем время получение сигналов.

В прошлый раз был создан советник, который по минимальной торговой логике давал нам некие сигналы на лонг/шорт. Но было что улучшать и, может, далеко не все пункты кто-то захочет включить в алгоритм собственного советника, но в учебных целях мы поэтапно рассмотрим каждый, чтобы было понимание как это можно реализовать.

Сегодня дополним скрипт теми пунктами, которые были связанные с обработкой времени:

Установим время старта работы скрипта,
Ставим тайминг на получение сигналов на вход,
Установим таймер на завершение скрипта.


Прежде всего начала сделаем
правильное отображение цифровых данных.

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

Qlua дополняем скрипт советника таймингом: устанавливаем время старта и завершения скрипта, фиксируем время получение сигналов.

Типы всегда можно посмотреть по функции AddColumn в файле QLUA (говорили об этом ранее) по запросу «Функции для работы с таблицами Рабочего места QUIK»:

Тип данных в колонке:

QTABLE_INT_TYPE – целое число,



( Читать дальше )

Qlua: размещаем таблицу в скрипте, остановка скрипта при удалении таблицы, работа с цветом. Пишем своего советника (начало).

Продолжаем изучение 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.


( Читать дальше )

Qlua: получение данных из таблицы текущих торгов, создание таблиц в торговом терминале.

Сегодня рассмотрим:

1. Получение биржевых данных через функцию getParamEx
2. Выгрузка списка параметров функции getParamEx через DDE из торгового терминала
3. Создание пользовательских таблиц в торговом терминале


Одна из особенностей работы через квик это то, что можно получать достаточно большой объем биржевой информации по интересуемым инструментам. Большинство других платформ для алгоритмической торговли и терминалов в РФ будут выдавать только цену открытия, максимум/минимум дня, последнюю цену, цену закрытия, объемы по инструментам и максимум еще 3-5 каких-то дополнительных пунктов. В распоряжении тех, кто использует qlua огромная матрица параметров таблицы текущих торгов.


Получить их можно через функцию getParamEx:

getParamEx(код класса актива, инструмент, параметр), где:

код класса: например в случае акций это «TQBR», а в случае срочного рынка «SPBFUT».
инструмент: тикер.
параметр – один из параметров для соответствующей группы инструментом (об этом подробнее ниже).


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



( Читать дальше )

Qlua: основы, часть 2

Продолжаем погружаться в основы языка. Сегодня рассмотрим:

 

Циклы 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: введение.

Cерия статей по языку QLua и алгоритмической торговле для тех, кто хочет автоматизировать свою работу на финансовых рынках, освоить написание скриптов, индикаторов, торговых советников и роботов для терминала Quik.

В 2022 году ЦБ выпустил презентацию «Портрет клиента брокера». В ней указано, что в РФ всего 0,03% клиентов используют алгоритмическую торговлю.

Qlua: введение.


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

У меня нет задачи популяризировать эту тему, скорее помочь тем, кто будет идти той же дорогой. Дело в том, что открытой информации по qlua и алгоритмической торговле через Quik в сети немного: есть несколько сайтов энтузиастов, где кусочками выложены разные полезности, часть из этой информации порой уже устаревшая (работает только на более ранних версиях терминала), есть несколько коммерческих проектов (продажи роботов, либо обучения) там информация актуальная, но за неё нужно платить. Есть интересные библиотеки, но отдельные (например, какие-то библиотеки визуального интерфейса) могут отваливаться с появлением новых версий квика.



( Читать дальше )
  • обсудить на форуме:
  • Quik Lua

Размышления о гипотезе эффективности рынка

У гипотезы эффективности рынка есть три формулировки:

  1. Цена любого актива справедлива, то есть эквивалентны покупки акций любой компании по рыночной цене: если мы купим одну компанию дороже другой, то это объясняется тем, какие активы включает одна компания, а какие активы включает другая компания, а также рисками, и любой информацией, связанной с природой этих активов
  2. Цена любого актива учитывает всю существующую о нем информацию (с учетом временных издержек на ее обработку)
  3. Невозможно показать доходность выше, чем доходность широкого рынка на длинном отрезке (десятки лет). Причем здесь у гипотезы есть сильная, средняя и слабая формулировки: невозможно переиграть рынок на основе непубличной или инсайдерской информации, невозможно переиграть рынок на основе фундаментальных данных о компании (мультипликаторы, отчеты, новости), невозможно переиграть рынок на основе предыдущих данных о нем (технический анализ)

Формулировка 1

Формулировка (1) опровергается тривиально. Существуют ситуации на рынке, когда одна компания может стоить дешевле, чем цена долей компаний, которыми она владеет.



( Читать дальше )

Новости для ИП: АУСН, что за зверь такой???

Новая система налогообложения АУСН

 

С 1 июля 2022 года в России стал доступен новый специальный налоговый режим – автоматизированная система налогообложения (АУСН). Инициатива экспериментальная и продлится до конца 2027 года. Сейчас перейти на АУСН могут ООО и ИП из Москвы и Московской области, Калужской области и Татарстана. Законы, регулирующие новый налоговый режим – 17-ФЗ и 18-ФЗ.Расскажем, кому выгодно перейти на АУСН и как это сделать.Особенности АУСНДля начала по порядку разберем, какие особенности есть у автоматизированной системы налогообложения, в чем ее отличия от других специальных налоговых режимов.Какие налоги платит бизнес на АУСННалог после применения АУСН будет начисляться ежемесячно, можно выбрать один из вариантов объекта налогообложения:
  • 8% от доходов
  • 20% от доходов после вычета расходов.
Для бизнеса, который выберет платить на АУСН по системе «доходы минус расходы», есть еще один обязательный взнос – минимальный налог. Заплатить 3% от всех доходов придется в том случае, если в конце года окажется, что ИП или ООО работали в убыток или получили после вычета расходов нулевую прибыль.

( Читать дальше )

❗️Русагро, ракета будет или нет?❗️

Image

Компания опубликовала результаты за 1 квартал 2023 года, сразу отмечу, что результаты слабые, но ожидаемые.

Выручка снизилась на 23% до 47,4 млрд рублей.

Скор. EBITDA снизилась на 56% до 7,14 млрд рублей, при этом рентабельность сократилась с 26% до 15%.

Чистая прибыль выросла на 176% до 5,4 млрд рублей. Это произошло по двум причинам:

▪️Чистый убыток от переоценки биологических активов и сельскохозяйственной продукции сократился в 6 раз.

▪️Прочие финансовые доходы составили почти 3 млрд рублей против убытка 7,9 млрд в аналогичном периоде прошлого года.

Посмотрим, как дела в основных сегментах бизнеса, их всего 4.

1. Сахарный сегмент  — 20% выручки

Выручка и операционная прибыль сократились на 17% и 62% соответственно. Это произошло в связи со снижением объемов реализации сахара на 17% до 148 тыс. тонн. Сокращение объемов реализации обусловлено уменьшением объемов производства по причине снижения сахаристости свеклы из-за плохих погодных условий, повлиявших на качество свеклы.



( Читать дальше )

....все тэги
UPDONW
Новый дизайн