У вас не стоит Flash Player
Настройки
#87028 - Wed Aug 18 2021 01:04 PM Кубик "BalanceControl"
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Кубик "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 (256 downloads)
gaaCommon_ServiceLib.zip (43 downloads)
gaaDifferent_BalanceControl.zip (45 downloads)
BalanceControl.cs (69 downloads)



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

Наверх
#87069 - Fri Sep 10 2021 08:19 PM Re: Кубик "BalanceControl" [Re: AleksandrGanov]
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Обновление кубика:
  • внесены мелкие доработки
  • исправлена ошибка записи в кеш на диск


Attachments
BalanceControl.cs (68 downloads)
gaaDifferent_BalanceControl.zip (44 downloads)


Наверх
#87070 - Sun Sep 12 2021 09:21 PM Re: Кубик "BalanceControl" [Re: AleksandrGanov]
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Обновление кубика:
  • добавлено уведомление в лог в случае если контролируемое значение изменяется на установленную величину
  • исправлены мелкие недочеты


Attachments
BalanceControl.cs (66 downloads)
gaaDifferent_BalanceControl.zip (36 downloads)



Отредактировано AleksandrGanov (Sun Sep 12 2021 09:22 PM)

Наверх
#87111 - Fri Oct 29 2021 03:28 PM Re: Кубик "BalanceControl" [Re: AleksandrGanov]
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Обновление кубика:
  • Исправлены найденные недочеты
  • Несколько переписан механизм хранения данных: в настоящий момент данные сохраняются как в памяти, так и на диске (как в штатно папке кэша, так и в доп.папке для целей резервирования данных). На диске данные хранятся непосредственно в папке кэша конкретного скрипта по адресу: "C:\Users\UserName\AppData\Local\TSLab\TSLab 2.0\$LocalCaches$", а также в папке "C:\Users\UserName\AppData\Local\TSLab\TSLab 2.0\DataStorage\AccountData". В случае если по каким-либо причинам к кэш или файл хранения данных сохранились неверные данные, то достаточно зайти в вышеуказанные папки и удалить соответствующие файлы по нужного скрипту. Почему могут быть неверные данные? ТСЛаб не сразу принимает нужные данные при подключении и, соответственно, пока все не прогрузилось может быть такое, что нужная информация некорректна, в том числе баланс по счету, но кубик уже записал эти данные в свой кэш и дальше после изменения информации если изменение выше порога чувствительности кубика (настройка "% несоответствия баланса"), то кубик уже будет брать данные из кэша. Для того, чтобы кубик мог ждать какое-то время добавлен (ниже) режим задержки контроля данных, к примеру, можно поставить 5 минут и только по их истечению будет осуществляться контроль, что предотвратит запись некорректных данных в кэш кубика.
  • Добавлен механизм активации работы и задержки активации работы:
    Enabled - вход типа bool, на который можно подавать условия включения кубика в работу, в случае если условие false, то кубик пропускает данные со входа на выход без какого-либо контроля. В случае если вход не подключается, то считается, что на вход подано True и кубик работает в режиме контроля данных. Для данного входа также предусмотрен механизм задержки начала работы, регулируется настройкой входа "Задержка включения".
    ActivationDelay - Время в минутах до включения механизма контроля с момента возникновения сигнала true на входе в кубик. В случае, если вход не подключен значение принимается равным нулю. В этом случае кубик сразу работает в режиме контроля данных


Attachments
gaaCommon_ServiceLib.zip (40 downloads)
gaaFilters_BalanceControl.zip (54 downloads)
BalanceControl.cs (67 downloads)



Отредактировано AleksandrGanov (Fri Oct 29 2021 03:33 PM)

Наверх
#87157 - Sat Dec 04 2021 09:47 PM Re: Кубик "BalanceControl" [Re: AleksandrGanov]
AleksandrGanov Offline
member

Registered: Fri Jun 02 2017
Записи: 181
Loc: Kamchatka
Обновление кубика:
  • перекомпилирован под под Net 5.0 для возможности использования в ТСЛаб 2.2


Attachments
gaaFilters_BalanceControl.zip (30 downloads)


Наверх


Moderator:  ViL, sar