Журнал сделок и себестоимости позиций на графике QUIK и в sql базе
- Версия: 5.16
- Требования: Quik 8.11+ Lua 5.4
- Размер: 4.98 MB
- Просм: 26996
- Добавлено: 25.10.13
- Скачано: 6343
- Изменено: 27.05.26
Создаёт SQL базу сделок пользователя и отрисовывает прямо на графиках терминала историю себестоимости позиций, их размера, текущую прибыль, а также метки сделок на графике соответствующего инструмента. Позволяет редактировать базу сделок, использовать любые внешние утилиты для манипуляции с данными из sqlite3 базы данных.
Дополнительно позволяет оповещать о произошедших сделках посредством e-mail и telegram.
В отличие от встроенной в терминал возможности работает на всей истории (не только внутри торгового дня) при наличии в базе данных необходимой информации.
Начальная версия писалась урывками под коктейли в нерабочей обстановке.

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






