Настало время представить одну из самых успешных и «не убиваемых» торговых систем.
Ранее, я публиковал подобную систему только для покупателей робота, но описание было недостаточным и слишком общим. Соответственно, было много просьб опубликовать материал с подробным описанием.
Сложность системы я оценил 5 из 5, поэтому, если Вы не хотите напрягать свой мозг, лучше сразу закройте эту страницу. Будьте готовы к ошибкам, потерям на счёте, а также, нескольким дням изучения (возможно в пустую).
Торговая стратегия включает в себя основы арбитража и маркетмейкинга.
Торговля на финансовых рынках – самый конкурентный способ заработка. Это очень хорошо будет видно после понимания алгоритма этой системы.
Представленный вариант использования далеко не самый удачный. Арбитраж фьючерса и акции ГМК Норникель слишком очевиден и популярен, чтобы на нём можно было бы зарабатывать. Поэтому, выбрать более свободную поляну для сбора урожая Вам придётся самостоятельно.
Удобство реализации стратегии в роботе (юзабилити) не самое удачное. Например, можно было просто указывать процент без огромной формулы. Но максимальная универсальность робота важнейший фактор. Рано или поздно, потребуется добавление какой-либо возможности и Робот Сетка LUA, скорее всего, будет готов к её реализации.
Пожалуй, самая незаменимая в моей торговле разработка Утилита для QUIK «История позиций». Придумал в 2009-м, запрограммировал на QPILE, затем перевёл на QLUA. Программу писал для себя, не под заказ и по своим идеям. Продажи данной программы никогда не отличались большим количеством и стабильностью. Поэтому, считаю её самой недооценённой из десятков своих разработок. Попытаюсь донести полезность утилиты из реальных примеров использования.
Недавно выпустил обновление 20241024.
✅ Учёт комиссий для фондовой секции теперь разделён на биржевую и брокерскую.
✅ Учтена разница комиссий мейкерских и тейкерских заявок.
На скрине видно, как распределяются комиссии биржи и брокера. Сверил с отчётом брокера – всё сходится. Программа сразу рассчитывает и выводит информацию о комиссионных затратах. Напомню, в терминале QUIK информация о биржевой комиссии урезана, а брокерская и, вовсе, недоступна.
✅ Учёт информации о позиции без ограничений.
Представляю свою новую программу Утилита для QUIK «Супер таблица».
Утилита предназначена для создания различных таблиц в торговом терминале QUIK. Пользователь может самостоятельно получать различные значения таблиц QUIK, проводить расчёты и выводить результат в Супер таблицу (аналог MS EXCEL). В комплекте готовый пример «Спреды акций»:
Как можно использовать спреды фьючерс-акция?
✅ Зарабатываем процентную ставку (синтетическая облигация).
Находим наибольший годовой процент. Покупаем акции, продаём фьючерсы равного объёма. К экспирации разница нивелируется. Например, на момент написания «iСофтлайн» показывает хороший результат 26.11% годовых.
После того как исполнилась сделка и мы получили соответствующий коллбэк у нас меняются данные по позициям и доступным лимитам. Посмотрим, как можно работать с этими данными через скрипт.
Для анализа состава портфеля, лимитов и их динамики используются таблицы:
Клиентский портфель (получаем данные через getPortfolioInfo и getPortfolioInfoEx).
Позиции по деньгам (getMoney и getMoneyEx, money_limits).
Позиции по инструментам (getDepo, getDepoEx, depo_limits).
Ограничения по клиентским счетам (futures_client_limits).
Позиции по клиентским счетам (futures_client_holding).
Таблица «Клиентский портфель» даёт сводную информацию по лимитам и параметрам риска брокерского счета. Таблицы «Позиции по деньгам» (лимиты) и «Позиции инструментам» (ценные бумаги) показывают данные в разрезе фондового рынка. Таблицы «Ограничения по клиентским счетам» (лимиты) и «Позиции по клиентским счетам» (фьючерсы и опционы) – только про срочному рынку.
Приветствую читателей!
Практически пол года не писал новых статей и не публиковал новые видео с тематикой своего самого интересного, сложного и успешного изобретения «Робот Сетка».
Во-первых, взялся за доработку большого количества функций данного робота. Стоимость доработки у меня не высокая, на данный момент 1000р./час. Четыре года назад была стоимость 300р./час. Оплата моего труда, как программиста выросла в три раза, при росте цен чуть менее в 2 раза (по моей оценке 82% с 01.01.2020). Однако программирование, всё так же, является маленьким, незначительным хобби, на фоне основного бизнеса в виде небольшого магазинчика товаров для дома и ремонта.
Во-вторых, в упомянутом выше бизнесе, требовалось моё вмешательство. Бизнес вырос за последние годы. Взял нового сотрудника, своего друга, но дело не пошло, оказалось этого не его. Дружеские отношения не изменились – это главное. Месяц назад взял сотрудницу на место друга. Вроде, всё получается. Буду стараться максимально делегировать свои задачи и, тогда, появиться больше времени на программирование.
Функция OnTrade
Сохранение параметров сделки в файл.
Работа с таблицей сделок.
Сохранение всех сделок дня.
Скрипт автосохранения всех заявок и сделок под завершение торгового дня.
Для отслеживания прошедших сделок мы можем задействовать функцию обратного вызова OnTrade. Она во многом похожа по логике на OnOrder, только возвращает коллбэки уже по исполненным сделкам. В случае, если заявка разбивается на несколько сделок, мы получим информацию по каждой.
В файле QLUA.chm в директории терминала находим через поиск описание самой функции:
Вся работа организована через алгоритмы, которые идентифицируются комментариями (Поручение). Возможна работа одновременно с разными алгоритмами. Например, пользователь выставляет заявку с комментарием «1» — выставляется стоп-лосс и тейк-профит на расстоянии 0.5%. Выставляет заявку с комментарием «2» — выставляется стоп-лосс и тейк-профит на расстоянии 1%. Таких алгоритмов может быть бесконечно много. Достаточно один раз настроить и пользоваться готовыми условиями выхода из позиции.
Сегодня завершаем работу с заявками:
Функция OnTransReply
Функция OnOrder
Получение остатка по заявке, контроль исполнения полного объема
Таблица транзакций
Общая логика выставления лимитной заявки в стакане
В предыдущих примерах мы закладывали на обработку заявки небольшой таймаут (в пределах от 300 мс до 1 секунды), но правильнее отслеживать результат по коллбэкам, т.к. это время может быть и менее 300 мс, а может затянуться (по разным причинам) на секунды. Поможет нам в этом отслеживании функции обратного вызова OnTransReply и OnOrder.
Если отправляя заявку через sendTransaction мы на старте могли получить ошибку на стороне терминала (неправильно указанный торговый код/инструмент/класс рынка), то через OnTransReply мы получаем результат обработки нашей транзакции на сервере брокера (например ошибка при выставлении заявки из-за отсутствия подключения, либо у клиента нет прав на отправку транзакции конкретного типа, либо заявка не проходит по лимитам и пр.).
Функция OnTransReply возвращает ответ на транзакцию, выставленную средствами qlua.