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


Выставляю 2 заявки - buyOrder и sellOrder. Затем ставлю обработчик:

this.When(buyOrder.Canceled())
				.Do(() => {
				    	log("buy canceled");
				    	buyOrder = null;
				    });

и

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


Теги:


Спасибо:


Alexander

Фотография
Дата: 25.07.2011
Ответить


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

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

Спасибо:

romanick

Фотография
Дата: 25.07.2011
Ответить


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

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

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

Спасибо:

Alexander

Фотография
Дата: 26.07.2011
Ответить


romanick:

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

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

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

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

Спасибо:

romanick

Фотография
Дата: 26.07.2011
Ответить


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

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


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

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

По нижеследующим логам получается, что обработчик вызывается для всех отменённых ордеров, в том числе и для тех, которые были уже отменены ранее. На мой взгляд это не верно. Ожидал, что обработчик будет вызван только для ордера, который отменён.

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 - поведение такое же. Т.е. эмулятор не причём.

Спасибо:

Alexander

Фотография
Дата: 26.07.2011
Ответить


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

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy