Особенности работы сервера Transaq c TSLab #
Основная особенность:
После переподключения transaq присылает ДРУГИЕ ID транзакций.
Пример из лога программы tslab.log
Заявка вечером:
23:48:10.50[Transaq Parser]DEBUG:Order orderno=21968103629 trid=358351
эта же заявка утром:
09:55:07.44[Transaq Parser]DEBUG:Order orderno=21968103629 trid=10381
Проблема состоит в том, что с ID 10381 уже могла быть заявка в истории или от другого работающего агента.
Т.к. транзак никогда эту проблему не исправит, то вариант решения такой: нужно настраивать очистку старых заявок и транзакций в настройках поставщика данных.
По умолчанию, в настройках стоит год.
Можно попробовать поставить несколько дней.
Но если внутри дня очень много сделок, то вероятность того, что transaq даст номер, который был вчера, возрастает.
В этом случае кеш своих сделок в настройках поставщика данных стоит уменьшать до трех дней(чем быстрее алгоритм, тем вероятнее получить данную проблему)
Единый счет Финам. Особенности #
Текущий коннектор разрабатывался в условиях, когда ЕС и ЕДП еще не было.
Сам Transaq тоже был не совсем готов и до сих пор до конца все не продумано, включая проблематику, описанную ниже. Так же есть проблемы со Свободными средствами, они не соответствуют расчетам брокера, по тем же причинам, описанным ниже.
Внимание!
При работе с Единым счетом не поддерживается работа с активами, номинированными в валюте.
Поэтому, для этой работы используйте отдельные счета.
Валюта счета должна соответствовать валюте инструмента.
В чем суть:
При работе с ЕС, в агенте или в менеджере заявок выбираете инструмент TSOX:TQTD
То есть хотите приобрести фонд «Тинькофф» в долларах. В итоге TSLab не понимает что нужно купить инструмент в долларах и как через агент, так и через Менеджер заявок покупает инструмент в рублях. Соответственно, в агенте дает неверные данные по кол-ву бумаг в одном лоте, что приводит к покупке вместо 540 рублей на 54000 руб. При чем, даже если на счете есть валюта, использоваться будут рубли.
Чего конечно же быть не должно, т.к. инструмент в долларах это инструмент в долларах, а в рублях — это в рублях.
Мы изучили данную проблематику вместе с Финам.
К сожалению, в текущем коннекторе сделать изменение сложно и оно предполагает переписывание коннектора, что в свою очередь сопряжено с довольно большими затратами чел/ч. Финам в настоящий момент разрабатывает веб АПИ. Мы намереваемся следовать за развитием Финам и будем создавать новый коннектор в программе, где обязательно учтем все особенности единых счетов Финам на начальном этапе.
Transaq:’secid’ isn’t a number #
Transaq:’secid’ isn’t a number
Это значит что в Вашей конфигурации используется инструмент с прошедшим сроком экспирации.
Финам удаляет такие инструменты с сервера на следующий день после экспирации.
Вам нужно просмотреть все окна(графики, окна сделок по инструментам, котировки, …) и удалить все подобные инструменты.
Transaq Can’t lock SendLocker #
Сообщение касается только серверов Transaq
new order failed
TSLab.DataSource.Transaq.TransaqException: Can’t lock SendLocker!
Очень редкое и кратковременное сообщение.
Сообщение выдает программа TSLab
В transaq можем подавать команды только последовательно, одну за другой.
Если в момент подачи команды, подается другая команда (от другого агента), то новая заявка ставится на ожидание до 2 сек.
Агент — это торгующий экземпляр скрипта, привязанный к Вашим счетам. Количество агентов, которые могут быть созданы на базе одного скрипта, не ограничено.
В обычном случае этого достаточно.
Иногда, поставщик данных выполняет предыдущую команду больше 2 сек, поэтому выдается это сообщение.
Поставщик данных — это часть программы, которая обеспечивает взаимодействие с конкретным торговым брокером, либо напрямую с биржей. Поставщик может реализовывать как полный набор функционала: прием торговых данных, выдачу торговых поручений, так и частичный набор.
Причины могут быть разные. Например, интернет или слабый компьютер(слишком много агентов для этого процессора).
Добавление счетов и смена Логина TransaqConnector #
Удаление, добавление счетов #
При любых манипуляциях со счетами, в личном кабинете брокера, необходимо отключиться от сервера брокера.
Т.е. перед тем как отключить Счет от Логина Transaq Connector или добавить к Логину новый счет в личном кабинете брокера Финам, необходимо выключить поставщика данных в программе.
Добавление нового типа поставщика с теми же счетами #
Пример, у Вас был поставщик данных TransaqNew, Вы хотите сменить поставщик данных на TransaqHFT, на котором подключены те же счета.
Добавление такого поставщика данных необходимо осуществлять при выключенных агентах и при отсутствии позиций.
На новом поставщике данных необходимо запустить новые агенты.
Если Вы настроены сохранить статистику старых агентов, при добавлении поставщика данных с этими же счетами, старые агенты потеряют свои позиции, в этом случае может помочь копирование базы данных от старого поставщика.
База данных поставщика находится в папке, на одном уровне с папкой логов программы.
Инструменты | Папка с логами | поднимитесь на один уровень с папкой логов | папка НазваниеПоставщикаData
Файл Cache.sqlite, необходимо перенести с одного поставщика данных в папку нового поставщика данных. Такой перенос не тестировался и является неким «хаком» программы.
Особенность связанных заявок Transaq #
При работе со связанными заявками в Transaq возможна следующая ситуация.
1. Вечером выставили связанную заявку.
2. Утром она сработала. Приходит номер лимитной заявки, затем приходит номер сделки.
3. Только через несколько секунд приходит информация по условной заявке.
Для TSLab происходит то, что сначала приходит исполнение лимитной заявки, а только через 5 секунд приходит ее связь с условной заявкой.
Это не массовая проблема.
Такая ситуация возможна на открытии сессий, в пиковые моменты нагрузки на сервера.
В данном случае, порядок получения сделки и исполненного ордера по рыночной части и самого условного поручения гарантировать невозможно.
Потому-что потоки рыночных данных и процесс синхронизации между серверами независимы друг от друга.
Чтобы гарантировать порядок данных, нужно как минимум задерживать рыночные, и тогда все данные будут задержаны на 5 секунд, что по понятным причинам сделать нельзя.
В итоге, на графике Агента можно наблюдать следующую картину: