Кубик "BalanceControl"

Кубик разработан для контроля резких изменений данных по счету, которые поступают от брокера. У многих трейдеров размер позиции завязан на размер свободных средств на "депо" и в случае если брокер передаст существенно больший размер, а такая вероятность не исключена, то если в скрипте дополнительно не ограничен максимальный размер позиции, то робот может набрать очень "неприличную" позу, что в дальнейшем скорее всего выльется в определенные фин.убытки. Чтобы этот момент контролировать разумно сверять текущую информацию с ранее принятой и если есть большая разница, то использовать ранее принятую информацию. Кубик работает только в режиме агента, в режиме лаборатории всегда возвращается ноль. Данный кубик получает данные со входа, сравнивает их суммой полученной на прошлом пересчете и если разница составляет более указанного процента, то возвращается ранее полученную сумму. Таким образом, предотвращается передача в систему существенно неверных данных, присутствие которых может привести к покупке активов на сумму, выходящую за имеющиеся "свободные средства. Кубик рекомендуется запускать в отдельном агенте с пересчетом по метроному и передавать данные в другие агенты через механизм глобального кеша, таким образом, у всех агентов будет актуальная и отфильтрованная информация о текущем балансе счета. Кубик для хранения прошлых данных использует локальный кеш и файл на диске по указанном пути. Обращение к файлу происходит только в случае если кеш пустой, в остальных случаях кубик использует кеш. В файл данные записываются 1 раз в 5 минут (настройкой "периодичность записи в файл" можно изменить интервал перезаписи). Данные сохраняются в файл, расположенный в папке: C:\Users\UserName\AppData\Local\TSLab\TSLab 2.0\DataStorage\AccountData\.

У кубика имеются следующие настройки:
  • ID Контроллера. Произвольный текст. ID необходимо указывать в случае если в рамках одного скрипта работает два и более контроллера баланса, т.к. они оба используют локальный кеш, то при наличии одной и той же ID-метки будут перетирать данные друг друга.
  • % несоответствия баланса. Процент, на который различается текущий и получаемый на вход баланс. В случае если разница больше указанного процента, то система использует ранее сохраненный баланс.
  • Писать в файл. При установке данной опции с указанной периодичностью (по умолчанию 5 минут) данные по входной величине будут писаться в файл, откуда будут браться в случае если в локальном кеше нет данных или данные равны нулю. Данная настройка по сути является избыточной, т.к.у локального кеша есть функционал сохранения на диск даже при отключении ТСЛаб, но когда вопрос стоит о деньгах, то лишняя "страховка" не помешает. Если такая необходимость отсутствует, то данную настройку можно отключить. По умолчанию настройка включена.
  • Период перезаписи файла. Время в минутах между перезаписью данных в файл.
  • Писать данные в лог-файл. При установленной опции система будет писать данные по получаемому из вне, из кеша и выдаваемому на выход значению, что позволяет отследить работу кубика в динамике. По умолчанию отключено. Лог пишется в файл по адресу: C:\Users\UserName\AppData\Local\TSLab\TSLab 2.0\DataStorage\Logs\.
Примечание: Кубик работает только совместно с библиотекой ServiceLib, которую необходимо поместить в папку Handlers

Дисклеймер: Кубик предоставляется "as is", но с обязательным тестированием и проверкой всех данных вручную. При выявлении багов просьба писать в телеграмм: @AleksandrGanov.



Attachments
ПримерИспользования.jpg (280 downloads)
gaaCommon_ServiceLib.zip (60 downloads)
gaaDifferent_BalanceControl.zip (59 downloads)
BalanceControl.cs (96 downloads)



Отредактировано AleksandrGanov (Wed Aug 18 2021 01:52 PM)