Проблема с Canceled()


Проблема с Canceled()
Atom
7/23/2011


Выставляю 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

Tags:


Thanks:


Alexander

Avatar
Date: 7/25/2011
Reply


this - это какая именно стратегия, от какого класса наследована?

Просьба называть темы более осторожно :)
Thanks:

romanick

Avatar
Date: 7/25/2011
Reply


Alexander Go to
this - это какая именно стратегия, от какого класса наследована?

Просьба называть темы более осторожно :)


наследовался от Strategy
Название темы "Проблема с Canceled()" почему так отображается я не знаю.
Thanks:

Alexander

Avatar
Date: 7/26/2011
Reply


romanick Go to
Alexander Go to
this - это какая именно стратегия, от какого класса наследована?

Просьба называть темы более осторожно :)


наследовался от Strategy
Название темы "Проблема с Canceled()" почему так отображается я не знаю.


А ордера разные? Распечатайте их перед созданием условий?
Thanks:

romanick

Avatar
Date: 7/26/2011
Reply


Alexander Go to
А ордера разные? Распечатайте их перед созданием условий?


Распечатал. Стало ещё более веселее:
Code

			this.When(buyOrder.Canceled())
				.Do(() => {
				    	log("[Canceled] "+buyOrder.Direction+" " +buyOrder.TransactionId);
				    });


Code

			this.When(sellOrder.Canceled())
				.Do(() => {
				    	log("[Canceled] "+sellOrder.Direction+" " +sellOrder.TransactionId);
				    });


По нижеследующим логам получается, что обработчик вызывается для всех отменённых ордеров, в том числе и для тех, которые были уже отменены ранее. На мой взгляд это не верно. Ожидал, что обработчик будет вызван только для ордера, который отменён.
Code
RS 03.01.2011 10:05:00.000 Робот стартовал (RIU9). Доступно средств: 100000. Ожидание готовности индикатора...
RS 03.01.2011 10:05:00.000 Стратегия запущена.
RS 03.01.2011 00:00:13.000 *********************
RS 03.01.2011 00:00:13.000 Buy-заявка отправлена 154925 5
RS 03.01.2011 00:00:13.000 Buy-заявка принята, id=34784610 vol=5
RS 03.01.2011 00:00:13.000 Sell-заявка отправлена 155090 5
RS 03.01.2011 00:00:13.000 Sell-заявка принята, id=34784611 vol=5
RS 03.01.2011 00:00:33.000 Отмена заявки 34784610.
RS 03.01.2011 00:00:33.000 Отмена заявки 34784611.
RS 03.01.2011 00:00:33.000 OnOrderChanged id=34784610 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:00:33.000 Buy-заявка отправлена 154920 5
RS 03.01.2011 00:00:33.000 [Canceled] Buy 34784610
RS 03.01.2011 00:00:33.000 [Canceled] Sell 34784611
RS 03.01.2011 00:00:33.000 OnOrderChanged id=34784611 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:00:33.000 Sell-заявка отправлена 155070 5
RS 03.01.2011 00:00:33.000 [Canceled] Buy 34784610
RS 03.01.2011 00:00:33.000 [Canceled] Sell 34784611
RS 03.01.2011 00:00:33.000 Buy-заявка принята, id=34784612 vol=5
RS 03.01.2011 00:00:33.000 Sell-заявка принята, id=34784613 vol=5
RS 03.01.2011 00:00:53.000 Отмена заявки 34784612.
RS 03.01.2011 00:00:53.000 Отмена заявки 34784613.
RS 03.01.2011 00:00:53.000 OnOrderChanged id=34784612 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:00:53.000 Buy-заявка отправлена 154930 5
RS 03.01.2011 00:00:53.000 [Canceled] Buy 34784610
RS 03.01.2011 00:00:53.000 [Canceled] Sell 34784611
RS 03.01.2011 00:00:53.000 [Canceled] Buy 34784612
RS 03.01.2011 00:00:53.000 [Canceled] Sell 34784613
RS 03.01.2011 00:00:53.000 OnOrderChanged id=34784613 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:00:53.000 Sell-заявка отправлена 155060 5
RS 03.01.2011 00:00:53.000 [Canceled] Buy 34784610
RS 03.01.2011 00:00:53.000 [Canceled] Sell 34784611
RS 03.01.2011 00:00:53.000 [Canceled] Buy 34784612
RS 03.01.2011 00:00:53.000 [Canceled] Sell 34784613
RS 03.01.2011 00:00:53.000 Buy-заявка принята, id=34784614 vol=5
RS 03.01.2011 00:00:53.000 Sell-заявка принята, id=34784615 vol=5
RS 03.01.2011 00:01:13.000 Отмена заявки 34784614.
RS 03.01.2011 00:01:13.000 Отмена заявки 34784615.
RS 03.01.2011 00:01:13.000 OnOrderChanged id=34784614 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:01:13.000 Buy-заявка отправлена 154920 5
RS 03.01.2011 00:01:13.000 [Canceled] Buy 34784610
RS 03.01.2011 00:01:13.000 [Canceled] Sell 34784611
RS 03.01.2011 00:01:13.000 [Canceled] Buy 34784612
RS 03.01.2011 00:01:13.000 [Canceled] Sell 34784613
RS 03.01.2011 00:01:13.000 [Canceled] Buy 34784614
RS 03.01.2011 00:01:13.000 [Canceled] Sell 34784615
RS 03.01.2011 00:01:13.000 OnOrderChanged id=34784615 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:01:13.000 Sell-заявка отправлена 155095 5
RS 03.01.2011 00:01:13.000 [Canceled] Buy 34784610
RS 03.01.2011 00:01:13.000 [Canceled] Sell 34784611
RS 03.01.2011 00:01:13.000 [Canceled] Buy 34784612
RS 03.01.2011 00:01:13.000 [Canceled] Sell 34784613
RS 03.01.2011 00:01:13.000 [Canceled] Buy 34784614
RS 03.01.2011 00:01:13.000 [Canceled] Sell 34784615
RS 03.01.2011 00:01:13.000 Buy-заявка принята, id=34784616 vol=5
RS 03.01.2011 00:01:13.000 Sell-заявка принята, id=34784617 vol=5
RS 03.01.2011 00:01:33.000 Отмена заявки 34784616.
RS 03.01.2011 00:01:33.000 Отмена заявки 34784617.
RS 03.01.2011 00:01:33.000 OnOrderChanged id=34784616 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:01:33.000 Buy-заявка отправлена 154920 5
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784610
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784611
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784612
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784613
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784614
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784615
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784616
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784617
RS 03.01.2011 00:01:33.000 OnOrderChanged id=34784617 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:01:33.000 Sell-заявка отправлена 155085 5
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784610
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784611
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784612
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784613
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784614
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784615
RS 03.01.2011 00:01:33.000 [Canceled] Buy 34784616
RS 03.01.2011 00:01:33.000 [Canceled] Sell 34784617
RS 03.01.2011 00:01:33.000 Buy-заявка принята, id=34784618 vol=5
RS 03.01.2011 00:01:33.000 Sell-заявка принята, id=34784619 vol=5
RS 03.01.2011 00:01:53.000 Отмена заявки 34784618.
RS 03.01.2011 00:01:53.000 Отмена заявки 34784619.
RS 03.01.2011 00:01:53.000 OnOrderChanged id=34784618 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:01:53.000 Buy-заявка отправлена 154940 5
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784610
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784611
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784612
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784613
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784614
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784615
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784616
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784617
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784618
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784619
RS 03.01.2011 00:01:53.000 OnOrderChanged id=34784619 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:01:53.000 Sell-заявка отправлена 155080 5
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784610
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784611
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784612
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784613
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784614
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784615
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784616
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784617
RS 03.01.2011 00:01:53.000 [Canceled] Buy 34784618
RS 03.01.2011 00:01:53.000 [Canceled] Sell 34784619
RS 03.01.2011 00:01:53.000 Buy-заявка принята, id=34784620 vol=5
RS 03.01.2011 00:01:53.000 Sell-заявка принята, id=34784621 vol=5
RS 03.01.2011 00:02:13.000 Отмена заявки 34784620.
RS 03.01.2011 00:02:13.000 Отмена заявки 34784621.
RS 03.01.2011 00:02:13.000 OnOrderChanged id=34784620 state=Done canceled doNotSend=False balance=5
RS 03.01.2011 00:02:13.000 Buy-заявка отправлена 154940 5
RS 03.01.2011 00:02:13.000 [Canceled] Buy 34784610
RS 03.01.2011 00:02:13.000 [Canceled] Sell 34784611
RS 03.01.2011 00:02:13.000 [Canceled] Buy 34784612
RS 03.01.2011 00:02:13.000 [Canceled] Sell 34784613
RS 03.01.2011 00:02:13.000 [Canceled] Buy 34784614
RS 03.01.2011 00:02:13.000 [Canceled] Sell 34784615
RS 03.01.2011 00:02:13.000 [Canceled] Buy 34784616
RS 03.01.2011 00:02:13.000 [Canceled] Sell 34784617
RS 03.01.2011 00:02:13.000 [Canceled] Buy 34784618
RS 03.01.2011 00:02:13.000 [Canceled] Sell 34784619
RS 03.01.2011 00:02:13.000 [Canceled] Buy 34784620
RS 03.01.2011 00:02:13.000 [Canceled] Sell 34784621


Upd: Попробовал сейчас на тестовом счёте SmartCOM - поведение такое же. Т.е. эмулятор не причём.
Thanks:

Alexander

Avatar
Date: 7/26/2011
Reply


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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy