Скрипт TradeLog
[
журнал_сделок
скрипт
lua
qlua
квик
quik
]
Скрипт для сохранения сделок в файлы (журнал), вывода меток сделок на график. Файлы имеют расширение csv. Их можно открыть в сторонних программах анализа. По мере совершения сделок файлы дополняются записями по каждой сделке. Журнал сделок можно просматривать прямо в терминале Квик, выводить метки сделок на график.
По вопросам приобретения данного скрипта обращайтесь.
Небольшое видео работы скрипта
rutube
Установка скрипта
Скрипт поставляется в виде архива. Который можно распаковать по любому местоположению.
Папка TradeLog содержит:
Основной файл для запуска в Квике - это TradeLog.lua
- файл state.txt - сохраняемое состояние скрипта между запусками
- файл TradeLog.txt - технические параметры для работы скрипта
- подкаталог logs - файлы логирования в процессе исполнения скрипта
**
Запуск скрипта
В торговом терминале Quik необходимо в меню “Сервисы“ выбрать команду “Lua скрипты”.
В результате появится окно управления всеми скриптами
В данном окне необходимо выполнить команду “Добавить” и выбрать запускаемый файл TradeLog.lua, сохраненный по месту установки скрипта.
В результате в окне появится дополнительная строка с описанием добавленного файла:
Запуск скрипта осуществляется с помощью команды “Запустить”. При этом запущенный скрипт в окне “Доступные скрипты” будет выделен зеленым треугольником. Остановленный - красным квадратом.
Остановка скрипта осуществляется с помощью команды “Остановить”.
Главное окно скрипта
После запуска скрипта будет выведено главное окно скрипта:
Главное окно содержит колонки вывода и управления информацией:
- Инструмент - короткое имя инструмента журнала
- Код инструмента
- Класс инструмента
- Счет.Субсчет по которому совершана сделка. Субсчет используется для разделения журнала по разным брокерским счетам, субсчетам в рамках одного брокерского счета.
- Число сделок в журнале
- Идентификатор графика для вывода меток сделок
- Команда вывода меткок сделок на график
- Команда удаления меток сделок с графика
По двойному нажатию по строке открывается окно сделок по инструменту. В данном окне отображается журнал всех сохраненных сделок в хронологическом порядке.
Метки на график
Для вывода меток на график необходимо установить Идентификатор графика на закладке “Дополнительно” свойств графика.
Такой же идентифкатор должен быть заполнен в строке главного окна по инструменту. Для редактироваания идентификатора в главном окне необходимо выделить поле График в строке, оно окрасится в желтый цвет. Далее можно ввести необходимый идентификатор. При совершении первой сделки по инструмнту автоматически заполняется короткое наимнование инструмента как идентификатор графика.
Если заполнен идентификатор графика, то по команде “S” в строке по инструменту будут выведены метки на соответствующий график. Метки мождно выводить за весь период ведения журнала, так и указаывая временные границы. Для определения отметок времени необходимо открыть окно сделок оп инстурменту (по двойному нажатию по строке) и указать в поле TM отметки начали и окончания (если не указано окончание, то выводится до конца журнала).
В данном примере указан вывод меток с 46 по 71 строку.
После указания отметок времени необходимо перейти в главное окно и не закрывая окно журнала по инструменту, выполнить команду установки меток. Т.о. если при выолнении команды установки меток окно журнала не открыто, то выводятся все метки журнала, если оно открыто и указаны отметки времени, то только за указанный интервал.
Для удаления меток с графика необходимо выполнить команду “X” в главном окне в строке по инструменту.
При первом запуске в каталоге скрипта создается файл state.txt. В этом файле будут сохранены запомненная позиция окон скрипта и идентификаторы графиков для инструментов. В этом файле можно изменить координаты окон, чтобы скрипт всегда их открывал в определенном месте закладки терминала. А также можно отредактировать список идентификаторов графиков для инструментов, например, заранее добавив записи, если в качестве идентификаторов используется отличная от базовой логика.
Отправка сообщений
Скрипт позволяет отправлять оповещения на почту и в Телеграм. Для этого используется решение telegramQuik.
Важно: для корректной работы в Windows 7 необходимо:
- Windows 7 SP1
- Установить дополнение.
В папке TradeLog\libs расположен подкаталог telegramServer. В нем размещены файлы запуска и настройки сервера отправки сообщений. Скрипт при старте проверяет наличие папки с сервером отправки сообщений и если он найдена, то происходит его запуск, посредством вызова файла startTeleServer.bat, расположенного в каталоге TradeLog\libs\telegramServer. После запуска сервера отправки сообщений появится консольное окно, сигнализирующее о его готовности. Одновременный запуск нескольких экземпляров сервера отправки сообщений MessagesQServer.exe нежелателен, т.к. они будут конфликтовать друг с другом. Поэтому ручной страт сервера желательно производить через файл TradeLog\libs\telegramServer\startTeleServer.bat (скрипт при запуске делает это автоматически).
Перед запуском необходимо провести настройку сервера отправки сообщений. Это производится через редактирование файла TradeLog\libs\telegramServer\settings.ini.
Содержимое данного файла:
[TELEGRAM]
START_TELEGRAM = ON
TELEGRAM_PIPENAME = telegram_pipe
TOKEN = Your TOKEN
USE_ENCODING = windows-1251
[EMAIL]
START_EMAIL = ON
EMAIL_PIPENAME = email_pipe
SENDER = sender
RECIPIENT = recipient
COPY =
EMAIL_SUBJECT = Message from Quik
SMTPSERVER = smtp
SERVERPORT = 587
LOGIN = login
PASSWORD = pass
Раздел [TELEGRAM] - раздел настройки отправки сообщений в Телеграм. Если необходима отправка сообщений в Телеграм, то необходимо установить настройку START_TELEGRAM = ON, иначе OFF. Сообщения в Телеграм отправляются в зарегистрированный бот. О регистрации ботов в Телеграм можно найти подробную инструкцию на сайте сервиса Телеграм или воспользоваться поиском.
- TELEGRAM_PIPENAME - это сервисная настройка имени канала передачи сообщений. Если планируется использовать только один сервер отправки сообщений, то данное поле необходимо оставить без изменения.
- TOKEN - здесь вводится токен, полученный при регистрации бота в Телеграм. Если не введен токен, то отправка сообщений в телегам будет невозможна.
- USE_ENCODING = windows-1251. Данная настройка определяет тип кодировки текста сообщений отправляемых из терминала. Т.к. Квик поддерживает только кодировку Win1251, то данную настройку необходимо оставить без изменения.
Раздел [EMAIL] - раздел настройки отправки сообщений на электронную почту. Если необходима отправка почтовых сообщений, то необходимо установить START_EMAIL = ON, иначе OFF.
- EMAIL_PIPENAME - это сервисная настройка имени канала передачи сообщений. Если планируется использовать только один сервер отправки сообщений, то данное поле необходимо оставить без изменения.
- SENDER - электронный адрес отправителя
- RECIPIENT - электронный адрес получателя
- COPY - список (через ;) электронных адресов получателей копии.
- EMAIL_SUBJECT - тема письма
- SMTPSERVER - адрес сервера отправки сообщений. Например smtp.yandex.ru
- SERVERPORT - номер порта отправки сообщений. Обычно это 465. Для сервисов Яндекса также используется 587
- LOGIN - ваш логин
- PASSWORD - ваш пароль
Настройки
Основные настройки осуществляются перед запуском скрипта в файле TradeLog_params.txt
-
Классы инструментов, разделенные по которым сохранять сделки. Если пустая строка, то без фильтра. Пример “TQBR SPBFUT” TRACK_CLASS_CODES = “TQOD TQOB TQCB TQTD TQTF EQEO EQOB EQDB SPBBND SPBDE QJSIM TQBR TQPI FQBR SPBFUT” -
Хранить данные работы в папке терминала. Если необходимо запускать скрипт из разных терминалов это позволит разделить данные и не создавать копии скрипта для каждого терминала. При первом запуске с этой настройкой в каталоге терминала будет создан каталог TradeLog, в котором будут сохраняться сделки, логи работы, т.е. полностью изолированная среда. Также это позволяет иметь свои настройки в каждом терминале. Для этого необходимо в этом каталоге разместить копию файла параметров TradeLog_params.txt уже со своими настройкавми для терминала.
STORE_IN_TERMINAL_FOLDER = 1
-
Доступные поля для записи. Файлы с сделками имеют заданную структуру и порядок полей. Ниже приведет список полей, которые можно сохранять для каждой сделки. Поля задаются в порядке записи в файл.
- sec_name – Имя бумаги заявки
- sec_code – Код бумаги заявки
- class_code – Код класса
- date – Дата (ДД.ММ.ГГГГ)
- time – Время (ЧЧ:ММ:СС)
- trade_num – Номер сделки в торговой системе
- order_num – Номер заявки в торговой системе (NUMBER)
- brokerref – Комментарий, обычно: <код клиента="">/<номер поручения=""> (STRING)номер>код>
- userid – Идентификатор трейдера (STRING)
- firmid – Идентификатор дилера (STRING)
- account – Торговый счет (STRING)
- dir – Направление сделки
- Сделка на продажу
- Сделка на покупку
- price – Цена
- qty – Количество бумаг в последней сделке в лотах
- value – Объем в денежных средствах
- accruedint – Накопленный купонный доход (NUMBER)
- yield – Доходность (NUMBER)
- price2 – Цена выкупа (NUMBER)
- reporate – Ставка РЕПО (%) (NUMBER)
- client_code – Код клиента (STRING)
- accrued2 – Доход (%) на дату выкупа (NUMBER)
- repovalue – Сумма РЕПО (NUMBER)
- repo2value – Объем выкупа РЕПО (NUMBER)
- start_discount – Начальный дисконт (%) (NUMBER)
- lower_discount – Нижний дисконт (%) (NUMBER)
- upper_discount – Верхний дисконт (%) (NUMBER)
- block_securities – Блокировка обеспечения («Да»/«Нет») (NUMBER)
- clearing_comission – Клиринговая комиссия (ММВБ) (NUMBER)
- exchange_comission – Комиссия Фондовой биржи (ММВБ) (NUMBER)
- tech_center_comission – Комиссия Технического центра (ММВБ) (NUMBER)
- settle_date – Дата расчетов (NUMBER)
- settle_currency – Валюта расчетов (STRING)
- trade_currency – Валюта (STRING)
- exchange_code – Код биржи в торговой системе (STRING)
- station_id – Идентификатор рабочей станции (STRING)
- bank_acc_id – Идентификатор расчетного счета/кода в клиринговой организации (STRING)
- broker_comission – Комиссия брокера. Отображается с точностью до 2 двух знаков. Поле зарезервировано для будущего использования (NUMBER)
- linked_trade – Номер витринной сделки в Торговой Системе для сделок РЕПО с ЦК и SWAP (NUMBER)
- period – Период торговой сессии (NUMBER). Возможные значения:
- “0” – Открытие
- “1” – Нормальный
- “2” – Закрытие
- trans_id – Идентификатор транзакции (NUMBER)
-
Разделитель структуры данных. Такой же разделитель необходимо использовать и при описании структуры файла. По умолчанию разделитель “точка с запятой” как базовый для csv файлов.
SEPARATOR = “;”
-
Структура файла с данными. Записывается через разделитель (SEPARATOR) в нужном порядке. Для поиска уже записанных сделок необходимо всегда сохранять trade_num. Т.о. указав структуру полей, будут создаваться файлы с записями по сделкам в указанном формате. Если изменить структуру при уже существующих файлах сделок, то при запуске будет произведена попытка реорганизации старых записей.
DEALS_FILE_STRUCT = “sec_name;sec_code;date;time;dir;price;qty;value;account;client_code;trade_num;trade_currency;broker_comission;exchange_comission;clearing_comission”
-
Выводить метки прошедших сделок на график. Можно выводить все метки по команде в строке инструмента по сохраненным сделкам. А также можно указать, что выводить метки в момент сделки, чтобы они сохранялись на графике
SET_DEALS_LABERLS = 1
-
Инверсировать цвет шрифта меток. По умолчанию цвет определяется автоматически исходя от темы оформеления терминала. Для светлой темы - черный цвет, для темной темы - белый. Но если для светлой темы изменить фон графика на темный, то необходимо изменить цвет, чтобы метки сделок выглядели корректно. Или, наоборот, для темной темы - светлый фон графикка.
INVERSE_LABELS_FONT = 0
-
Имя и размер шрифта метки на графике. По умолчанию Arial
LABELS_FONT_NAME = “Comic Sans MS”
LABELS_FONT_SIZE = 10
-
По умолчанию используются картинки buy.bmp, sell.bmp из каталога images. Можно задать свои картинки для сделок, ордеров, располложив их в каталоге images и указав имя
BUY_LABEL = “” SELL_LABEL = “”
- Подключить библиотеку воспроизведения звукового файла.
- Значение: 1 - подключать
- Значение: 0 - не подключать
PLAY_SOUND = 0
-
Путь к звуковом файлу
SOUND_FILE = “c:\windows\media\Alarm03.wav”
-
Отправлять сообщения
SEND_MESSAGES = 0
- Отправлять сообщение email
- 1 - да
- 0 - нет
SEND_EMAIL = 0
- Отправлять сообщение в Телеграм
- 1 - да
- 0 - нет
SEND_TELEGRAM = 0
MESSAGE_SEND_INTERVAL = 10
LOGGING = 1 – признак ведения лога. 1 - выводить, 0 - нет
DEBUG_MODE = 1 – признак вывода в лог отладочной информации. 1 - выводить, 0 - нет