Выставляю 2 заявки - buyOrder и sellOrder. Затем ставлю обработчик:
Code
this.When(buyOrder.Canceled())
.Do(() => {
log("buy canceled");
buyOrder = null;
});
и
Code
this.When(sellOrder.Canceled())
.Do(() => {
log("sell canceled");
sellOrder = null;
});
this - это стратегия.
Затем по определённому событию снимаю всё при помощи CancelActiveOrders()
В логах вижу:
buy canceled
sell canceled
buy canceled
sell canceled
Т.е. каждый обработчик вызывается 2 раза. Убираю один ордер - начинает вызываться один раз. Выходит что вызов обработчика Canceled происходит не для текущего ордера, а для всех снятых в цикле. Это баг или фича? И если фича, как мне понять для какой заявки произошло событие Canceled?
Использую эмулятор, s# 3.2.5