Журнал сделок и себестоимости позиций на графике QUIK и в sql базе

4.4/5 оценка (41 голосов)
  • Версия: 5.16
  • Требования: Quik 8.11+ Lua 5.4
  • Размер: 4.98 MB
  • Просм: 26996
  • Добавлено: 25.10.13
  • Скачано: 6343
  • Изменено: 27.05.26

Создаёт SQL базу сделок пользователя и отрисовывает прямо на графиках терминала историю себестоимости позиций, их размера, текущую прибыль, а также метки сделок на графике соответствующего инструмента. Позволяет редактировать базу сделок, использовать любые внешние утилиты для манипуляции с данными из sqlite3 базы данных.

Дополнительно позволяет оповещать о произошедших сделках посредством e-mail и telegram.

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


Начальная версия писалась урывками под коктейли в нерабочей обстановке.

 

Поскольку интерес к разработке имеется, в свободное время дописываю пожелания.

 

 

Как установить?

 

  1. Убедитесь, что в пути к терминалу QUIK нет кириллицы. Если есть, измените
  2. Файл bot4sale64.dll поместите в папку терминала QUIK.
  3. Создайте папку в любом месте жесткого диска. Дайте ей имя на свой вкус.
  4. В эту папку помещаете файлы myTrades_Demo.lua и myTrades.ini. Если вы знаете пароль к myTrades_Full.zip - используйте его содержимое вместо myTrades_Demo.lua
  5. Убедитесь, что в настройках терминала для запуска скриптов и индикаторов выбрана версия Lua 5.4 (Где?)
  6. Запустите myTrades_Demo.lua (или myTrades_Full.lua) как обычный lua скрипт (пункт меню терминала Сервисы - Скрипты Lua
  7. При первом запуске скрипта myTrades.lua в автоматически будут созданы индикаторы из этого проекта: в папке <квик>\LuaIndicators появятся файлы индикаторов. Если у вас демонстрационная версия, будет добавлен один индикатор myTrades_Trades.lua, если полная версия, то будут добавлены все индикаторы. Скрипт myTrades_Demo.lua (или myTrades_Full.luaдолжен быть запущен всегда во время работы терминала!
  8. Добавляйте нужные вам индикаторы на графики котировок инструментов

 

Установка робота завершена. Теперь все сделки, произведённые вами, вашими роботами и кошкой, которую не успели согнать с клавиатуры, будут сохранены роботом в базе данных. Все запущенные вами индикаторы их этого комплекта будут показывать актуальную информацию в соответствии с содержимым базы данных.

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

 

После старта скрипт myTrades_Demo.lua (или myTrades_Full.lua) выведет на экран таблицу со всеми инструментами, по которым есть информация в его базе. Для каждого инструмента будет выведен объём позиции, количество вложенных в нее средств и текущая себестоимость. При первом запуске скрипта база, очевидно, пуста и на экран будет выведена пустая таблица. При двойном клике на строке таблицы (или нажатием пробела) информация по соответствующему инструменту будет выведена в CSV файл для дальнейшего анализа (например в Excel или LibreOffice). Кроме данных по сделкам будут выведены все позиции и себестоимости.

Нажатие клавиши F12 выводит на экран меню дополнительных сервисных возможностей. Клавишу можно переопределить в файле настроек.

 

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

Формат хранения данных - база sqlite3. Для каждого инструмента создаётся отдельная база. Базы находятся в папке <ПапкаТерминалаКвик>/www.bot4sale.ru/myTrades. Вы можете свободно редактировать содержимое баз, не изменяя состав полей и придерживаясь структуры данных. В сети имеется множество различных редакторов для баз данных формата sqlite3. Мне нравится Sqlite Browser, но вы можете использовать любой другой на свой вкус. Таким образом, вы можете вручную добавить в существующую базу сделки, которые в нее не попали по каким либо причинам: они были произведены до установки скрипта или скрипт был выключен в тот день, когда сделка произошла. Я очень рекомендую перед любыми изменениями в базе делать резервную копию файла базы.

На месячном и тиковом таймфреймах работать индикатору я запретил.

Демонстрационная и полная версии функционально идентичны. Отличие состоит в наборе доступных индикаторов, выводящих информацию из базы данных на графики и возможности e-mail и telegram оповещений.

В демонстрационной версии доступен индикатор myTrades_Trades.lua, который будет установлен автоматически после первого запуска скрипта. Он отображает сделки (так же, как это делает сам терминал, но не только в текущем торговом дне, а на всей имеющейся в SQL  базе истории), а также уровни цен, отображающих текущую себестоимость позиций. В полной версии будут созданы дополнительно индикаторы MyTrades_Position.lua (размер позиции), myTrades_Profit.lua (динамика прибыли), myTrades_Money.lua (размер инвестированных в позицию средств).

Все данные рассчитываются с учетом комиссионных расходов, если ваш брокер их транслирует в ваш терминал.

 

На скриншоте главная таблица с обшей информацией и две дополнительных, содержащих полный список сделок по соответствующему инструменту.

 

 

Открытие каких-либо таблиц терминала или манипуляции со списками получаемых инструментов не требуются.

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

Далее описаны индикаторы, позволяющие визуализировать данные из накопленной базы в виде индикаторов.

 


 

Как вывести себестоимость и сделки на график?

Далее открываете в терминале график интересующего вас инструмента, находите в списке индикаторов Мои сделки и добавляете его на график обычным способом.

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

Как и любой индикатор, его можно запустить на нескольких инструментах. Версия терминала 8.0 и выше.

Я запустил индикатор на демоторгах и поиграл в усреднение позиции:

 Зелёные точки - уровень длинной позиции, красные - короткой.

Вот другой пример:

Длинная позиция открыта по цене 76400. Позиции частично закрыта в районе цены 76650. Таким образом, по позиции уже имеется "бумажная" прибыль. Соответственно, себестоимость остатка позиции сместилась ниже на величину этой прибыли - на уровень 76185. Если остаток позиции будет закрыт на этом уровне, вся сделка окажется бесприбыльной. Если выше - то будет прибыль. Если ниже - убыток.


 

 

 

Размер позиции

Этот индикатор выводит на график размер позиций. Зелёным цветом показывается размер длинных позиций, красным - коротких. Индикатор можно запускать как в окне с графиком цены торгуемого инструмента, так и в отдельном окне

 


Прибыль

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


Вложенные средства

Индикатор выводит на экран размер вложенных в позицию средств. На срочном рынке индикатор будет показывать оценочные значения.


 Какая информация хранится в SQL базе и как она выглядит в Excel?

 

 

Индикаторы позволяют выводить информацию как по всем сделкам инструмента, так и фильтровать ее по расчетному счету и коду клиента. Также в любом индикаторе можно включить или выключить необходимые линии.

 

Индикаторы корректно работают во всех режимах диаграмм терминала quik, включая режим показа пустых свечей, сдвига влево или вправо и так далее.

 

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

Предусмотрена возможность строить системы риск-менеджмента под заказ.

Конечно, ничто не мешает запускать индикаторы одновременно.

Ответы на некоторые вопросы можно найти в этой ветке. Там же можно задавать вопросы или сообщать о найденных ошибках.

  

 

Для получения полной версии достаточно сделать перевод на карту или электронный кошелек:

 

История изменений

  • 1.0 Начальная редакция
  • 2.0 Добавлено накопление информации по сделкам. Добавлен вывод текущих позиций и их себестоимостей в таблицу. Добавлена выдача списка сделок по инструменту. Добавлена возможность подключения плагинов для написания роботов, занимающихся риск-менеджментом по произвольным алгоритмам.
  • 2.1 Исправлена ошибка, возникающая при работе с несколькими инструментами.
  • 3.0 Индикатор средних цен покупок и продаж
  • 3.1 Индикатор сделок
  • 3.2 Изменен алгоритм отрисовки индикаторов для более точной работы на неликвидных инструментах
  • 3.3 Устранена неточность, связанная с отрисовкой в некоторых случаях стоимостей покупок и продаж после закрытия позиции
  • 3.4 Добавлен индикатор размера позиции
  • 3.5 В таблице сделок по инструменту теперь выводятся текущая позиция и прибыль. В полной версии запоминается местоположение таблицы скрипта. Округление себестоимостей в таблицах в соответствии с параметрами инструмента, округление сумм до копеек
  • 4.0 В полной версии добавлена возможность экспортировать реестры сделок из базы данных в CSV файлы для их анализа в Excel или аналогичном ПО.
  • 4.1 Убрано дублирование сделок, возникающее при переподключении терминала к новому серверу брокера или после очистки текущего сеанса. В полной версии можно задавать формат даты/времени для отображения и записи в csv файл.
  • 4.2 Исправлена ошибка, из-за которой возникали ошибки при отображении индикаторов на дневном и недельном таймфреймах
  • 4.3 В главную таблицу добавлена информация о текущей цене инструментов, по которым открыты позиции и текущая прибыль/убыток (в полной версии) по каждой из них
  • 4.4 В терминале QUIK изменилось поведение сигнала о факте сделки. Теперь этот сигнал мог появляться многократно, из-за чего возникало дублирование информации о сделках в базе. Адаптировано.
  • 4.5 В демоверсии теперь в табличную форму на экране выводится текущая цена инструмента и текущий финансовый результат по позиции.
  • 4.6 В полную версию добавлено уведомление на почту о произошедших сделках.
  • 4.7 Множество мелких улучшений и оптимизаций.
  • 4.8 Использована библиотека bot4sale.ru версии 1.01
  • 4.9 Убрана ошибка, приводящая к некорректному отображению экранной таблицы. Добавлена возможность задавать ширину столбцов главной таблицы 
    (в полной версии).
  • 5.0 alpha Полностью переписано под Quik 8 и базу формата SQLite3
  • 5.01 alpha Добавлен вывод истории в csv формат, email оповещение о сделках, исправлены ошибки предыдущей версии, оптимизации.
  • 5.01 beta Исправлены ошибки, на которые мне указали пользователи. Упрощен процесс установки индикаторов - они создаются теперь автоматически и автоматически поддерживается актуальность их версий. В полную версию добавлено 2 индикатора - размер прибыли и вложенные средства. В настройки добавлен параметр TOPMOST, позволяющий держать окно скрипта всегда видимым поверх остальных окон терминала
  • 5.02 Адаптировано для работы с quik 8.6
  • 5.03 Исправлена ошибка, появлявшаяся при наложении индикаторов на графики инструментов, по которым не было сделок
  • 5.04 Добавлены оповещения telegram, возможность настраивать текст сообщения с использованием данных произошедших сделок
  • 5.05 Возможность указывать символ % и перевод строки в сообщениях email и telegram
  • 5.06 Добавлено отображение текущей цены инструмента, стоимости позиции и текущей прибыли в реальном времени в окне скрипта. Расширен набор макросов для формирования почтовых и telegram сообщений.
  • 5.07 Добавлена возможность использования вычисляемых выражений в отправляемых почтой или telegram сообщениях
  • 5.08 Исправлена ошибка, возникавшая при наличии в коде инструмента символа точки
  • 5.09 Уточнён расчёт комиссий торговой системы
  • 5.10 Исправлен индикатор Стоимость позиций
  • 5.11 Пересобрано для версии Lua 5.4
  • 5.12 Добавлен запрет одновременного запуска нескольких копий скрипта в одном терминале
  • 5.13 Исправлены найденные ошибки
  • 5.14 Добавлено экранное меню со списком сервисных действий, вызываемое клавишей F12 (настраиваемо). Исправлена ошибка в mytrades_TRADES
  • 5.15 Изменена отправка сообщений в Телеграм
  • 5.16 Добавлена возможность вручную добавлять в базу пропущенные сделки из таблицы сделок терминала