Форум устарел! Поддержка тут: https://t.me/osengine_official_support

Актуальные гайды здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php

Closing Surplus

что за зверь такой и как с ним бороться

  1. Lexuz77

    Регистрация:
    10.12.16
    Сообщения:
    113
    Был на сайте:
    10.02.24

    В новых версиях ОСА появился новый статус ордера Closing Surplus. Он возникает в результате закрытия позиции через _tab.CloseAtLimit(positions[i], positions[i].EntryPrice + Profit.ValueInt * Pricestep, positions[i].OpenVolume). Но вот как его обрабатывать? Потому что у нас в графе открытых позиций появляются эти позы с непонятными величинами по объемам. Т.е. я закрываю позу, открытую объемом == 1. Она закрывается со статусом Closing Surplus и с объемами в графе Объем == 1 и Текущий == -1 Потом эта позиция «превращается» в позицию со статусом Open с такими же объемами Объем == 1 и Текущий == -1. И соотв. робот ее уже не видит и никак не обрабатывает. Как тут быть? Спасибо!

    Lexuz77
    25.03.2019 09:38
    #1
  2. Lexuz77

    Регистрация:
    10.12.16
    Сообщения:
    113
    Был на сайте:
    10.02.24

    Да Алексей спасибо за подсказку - это я сам недосмотрел. Просто у меня раньше роботы всегда торговали на спокойном рынке, все было норм, а сейчас я полез с этими же роботами чуть ли не в HFT, и уже там начали проявляться данные проблемы. Просто я НЕ на реале все это дело еще пробовал, а в режиме виртуальных торгов, и думал что не может быть такого на "виртуале" . Ладно, буду разбираться.

    Lexuz77
    25.03.2019 15:25
    #2
  3. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1175
    Был на сайте:
    05.10.24
    Цитата: Lexuz77

    В новых версиях ОСА появился новый статус ордера Closing Surplus. Он возникает в результате закрытия позиции через _tab.CloseAtLimit(positions[i], positions[i].EntryPrice + Profit.ValueInt * Pricestep, positions[i].OpenVolume). Но вот как его обрабатывать? Потому что у нас в графе открытых позиций появляются эти позы с непонятными величинами по объемам. Т.е. я закрываю позу, открытую объемом == 1. Она закрывается со статусом Closing Surplus и с объемами в графе Объем == 1 и Текущий == -1 Потом эта позиция «превращается» в позицию со статусом Open с такими же объемами Объем == 1 и Текущий == -1. И соотв. робот ее уже не видит и никак не обрабатывает. Как тут быть? Спасибо!

    Этот статус возникает когда по позиции существует несколько ордеров на закрытие и они оба или несколько исполняются. Тогда мы получается "перезакрываемся" на закрытии и у нас перебор происходит. Это жуткая ситуация говорящая о изьянах в архитектуре робота. Когда мы пытаемся закрывать позицию по которой уже происходит закрытие, не отзывая старые ордера или не дожидаясь когда старые ордера отзвуться нормально.
    Я рекомендую перед вызывом методов закрытия позиции, проверить, активен ли сейчас ордер на закрытие. И если активен, сначала его отозвать. И лишь в следующих итерациях логики, когда ордер предыдущий на закрытие будет отозван железно. Выставлять следующий ордер на закрытие.

    Алексей Ван
    25.03.2019 17:09
    #3
  4. Алексей Ван Команда форума

    Регистрация:
    02.02.13
    Сообщения:
    1175
    Был на сайте:
    05.10.24
    Цитата: Lexuz77

    Да Алексей спасибо за подсказку - это я сам недосмотрел. Просто у меня раньше роботы всегда торговали на спокойном рынке, все было норм, а сейчас я полез с этими же роботами чуть ли не в HFT, и уже там начали проявляться данные проблемы. Просто я НЕ на реале все это дело еще пробовал, а в режиме виртуальных торгов, и думал что не может быть такого на "виртуале" . Ладно, буду разбираться.

    недавно добавил лаг искусственный в эмулятор торгов. Т.е. теперь даже исполняя ордера внутри OsEngine в эмуляторе есть лаг с принятием/отзывом ордеров. Жиза.

    Специально для таких вот стратегий. Чтобы до переключения на реальное исполнение, было понятно откуда ноги растут у проблем с задержками.

    Алексей Ван
    25.03.2019 19:22
    #4