Форум устарел! Поддержка тут: https://t.me/osengine_official_support
Актуальные гайды здесь: https://smart-lab.ru/company/os_engine/blog/1024149.php
что за зверь такой и как с ним бороться
В новых версиях ОСА появился новый статус ордера Closing Surplus. Он возникает в результате закрытия позиции через _tab.CloseAtLimit(positions[i], positions[i].EntryPrice + Profit.ValueInt * Pricestep, positions[i].OpenVolume). Но вот как его обрабатывать? Потому что у нас в графе открытых позиций появляются эти позы с непонятными величинами по объемам. Т.е. я закрываю позу, открытую объемом == 1. Она закрывается со статусом Closing Surplus и с объемами в графе Объем == 1 и Текущий == -1 Потом эта позиция «превращается» в позицию со статусом Open с такими же объемами Объем == 1 и Текущий == -1. И соотв. робот ее уже не видит и никак не обрабатывает. Как тут быть? Спасибо!
Да Алексей спасибо за подсказку - это я сам недосмотрел. Просто у меня раньше роботы всегда торговали на спокойном рынке, все было норм, а сейчас я полез с этими же роботами чуть ли не в HFT, и уже там начали проявляться данные проблемы. Просто я НЕ на реале все это дело еще пробовал, а в режиме виртуальных торгов, и думал что не может быть такого на "виртуале" . Ладно, буду разбираться.
Цитата: Lexuz77
В новых версиях ОСА появился новый статус ордера Closing Surplus. Он возникает в результате закрытия позиции через _tab.CloseAtLimit(positions[i], positions[i].EntryPrice + Profit.ValueInt * Pricestep, positions[i].OpenVolume). Но вот как его обрабатывать? Потому что у нас в графе открытых позиций появляются эти позы с непонятными величинами по объемам. Т.е. я закрываю позу, открытую объемом == 1. Она закрывается со статусом Closing Surplus и с объемами в графе Объем == 1 и Текущий == -1 Потом эта позиция «превращается» в позицию со статусом Open с такими же объемами Объем == 1 и Текущий == -1. И соотв. робот ее уже не видит и никак не обрабатывает. Как тут быть? Спасибо!
Этот статус возникает когда по позиции существует несколько ордеров на закрытие и они оба или несколько исполняются. Тогда мы получается "перезакрываемся" на закрытии и у нас перебор происходит. Это жуткая ситуация говорящая о изьянах в архитектуре робота. Когда мы пытаемся закрывать позицию по которой уже происходит закрытие, не отзывая старые ордера или не дожидаясь когда старые ордера отзвуться нормально.
Я рекомендую перед вызывом методов закрытия позиции, проверить, активен ли сейчас ордер на закрытие. И если активен, сначала его отозвать. И лишь в следующих итерациях логики, когда ордер предыдущий на закрытие будет отозван железно. Выставлять следующий ордер на закрытие.
Цитата: Lexuz77
Да Алексей спасибо за подсказку - это я сам недосмотрел. Просто у меня раньше роботы всегда торговали на спокойном рынке, все было норм, а сейчас я полез с этими же роботами чуть ли не в HFT, и уже там начали проявляться данные проблемы. Просто я НЕ на реале все это дело еще пробовал, а в режиме виртуальных торгов, и думал что не может быть такого на "виртуале" . Ладно, буду разбираться.
недавно добавил лаг искусственный в эмулятор торгов. Т.е. теперь даже исполняя ордера внутри OsEngine в эмуляторе есть лаг с принятием/отзывом ордеров. Жиза.
Специально для таких вот стратегий. Чтобы до переключения на реальное исполнение, было понятно откуда ноги растут у проблем с задержками.
ООО «ВАН ТЕХНОЛОГИИ»т: +7 953 769 56 45
* Торговля на финансовых рынках связана с риском, который лежит на Вас.
* Ничто из написанного на сайте o-s-a.net не является рекомендацией.
* Если Вы этого не понимаете, не читайте этот сайт, ничего не покупайте.