Вопрос по обработке сделок
Ситуация такая, стратегия отправляет заявки на биржу метод RegisterOrder(Order) и по таймауту или исполнению некого условия снимает через метод Trader.CancelOrder(Order). Учет закрытых позиций и цены происходит при событии появлении новой сделки order.NewTrades() (нужно для работы робота),
По событию снятия заявки .Order.Canceled() или её полного исполнения заявка считается закрытой.
В каждом событии стоит проверка - если статус заявки Done и количество учтенных роботом позиций равно ОбъемЗаявки - БалансЗаявки. То исключаем её из списка робота, и считаем что закрыта, т.е. робот считает что вся информация по заявке получена.
Учитывается ситуация если сделки пришли позже, чем заявка была снята/исполнена, так же есть обработка события неудачной отмены заявки. Код основательно перерыт и перепроверен.
Но иногда примерно с одной-двумя из 500 заявок возникает ситуация когда условие проверки выполняется заявка исключается, но Робот учитывает не все сделки прошедшие по заявке. Как вариант может быть такое, что в какой-то момент статус заявки Done, а баланс по ней ещё может изменится?
В чем может быть причина, может сталкивался кто-то? Уже просто не знаю что с этим делать.
Сейчас все работает на тестовом сервере РТС, Forts Plaza - II.