Жесть с NewMyTrades!!!! (не вызвалось событие NewMyTrades)
Я веду подсчет открытой позиции самостоятельно - ловлю NewMyTrades,
и если бумага моя (==this.Security) то увеличиваю/уменьшаю (в зависимости от направления ордера по которому пришел трейд) счетчик int OpenedPosition в стратегии.
а сегодня столкнулся с серьезной проблемой
была открытая лонг позиция в 2 бумаги. это подтверждает и мой счетчик и PositionManager.Position:
22.07.2011 13:55:39.415 PositionManager.Position: 2; OpenedPosition:2
роботом был послан ордер на биржу на продажу 3х лотов:
22.07.2011 13:55:39.810 RegisterOrder: Ok! sec=LKU1 dir=SELL vol=3 price=18769,00
пока ордер висел позиция не менялась
22.07.2011 13:55:49.408 PnLManager.PnL: 2; OpenedPosition:2;
но потом вдруг - БЕЗ ВЫЗОВА NewMyTrade свойство PositionManager.Position изменилось!
22.07.2011 13:55:50.490 PnLManager.PnL: -1; OpenedPosition:2;
и в логах Квика видно что как раз в это время ордер был полностью исполнен!
[cursing]
т.к. робот не знал о выполнении его ордера - трейды же не пришли, то продолжил торговать.
и через несколько секунд ситуация еще раз повторилось, а потом еще раз и до тех пор пока все средства со счета в ГО не ушли.
спасло только то что счет небольшой и цена далеко не ушла - вручную потом откупил совсем с небольшими потерями.[bored]
как так получилось что NewMyTrade не был вызван???
и как можно перестраховаться от таких косяков в будущем???
как ЖЕЛЕЗНО узнать свою позицию???
[confused]
PS> PositionManager.Position который показал правильную инфу тут постоянно неправильно показывает в других ситуациях