Проблема с Canceled()
Atom Ответить
23.07.2011


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

Теги:


Спасибо:




5 Ответов
Alexander

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


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

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

romanick

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


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

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


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

Alexander

Фотография
Дата: 25.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