TheorPriceQuotingStrategy не реагирует на событие новой сделки

TheorPriceQuotingStrategy не реагирует на событие новой сделки
Atom
11/17/2011
InsiderHSE


После исполнения котируемой заявки в TheorPriceQuotingStrategy стратегия не останавливается, а продолжает котирование.
Лог стратегии:
Code

14:26:17.722 |            | SOQS            | Стратегия запущена.
14:26:18.445 |            | SOQS            | Регистрация новой заявки на Sell с ценой 233 и объемом 1.
14:26:18.461 |            | SOQS            | Заявка 51668157 на Sell отправлена с ценой 233 объемом 1.
14:26:44.024 |            | SOQS            | Цена текущей 233 и лучшей 236.
14:26:44.024 |            | SOQS            | Лучший бид 220 и лучший аск 233.
14:26:44.025 |            | SOQS            | Котирование заявки 51668157 на Sell с ценой 233 объемом 1.
14:26:44.032 |            | SOQS            | Перекотирование зарегистрировано для заявки 51668158 на Sell с ценой 236 объемом 1.
14:29:22.051 |            | SOQS            | Цена текущей 236 и лучшей 239.
14:29:22.051 |            | SOQS            | Лучший бид 220 и лучший аск 236.
14:29:22.051 |            | SOQS            | Котирование заявки 51668158 на Sell с ценой 236 объемом 1.
14:29:22.052 |            | SOQS            | Перекотирование зарегистрировано для заявки 51668159 на Sell с ценой 239 объемом 1.
14:30:14.404 |            | SOQS            | Цена текущей 239 и лучшей 244.
14:30:14.404 |            | SOQS            | Лучший бид 224 и лучший аск 239.
14:30:14.404 |            | SOQS            | Котирование заявки 51668159 на Sell с ценой 239 объемом 1.
14:30:14.407 |            | SOQS            | Перекотирование зарегистрировано для заявки 51668160 на Sell с ценой 244 объемом 1.
14:30:32.645 |            | SOQS            | Новая Sell сделка 452914851 по цене 244 на 1 заявки 51668160.
14:32:36.471 |            | SOQS            | Цена текущей 244 и лучшей 251.
14:32:36.471 |            | SOQS            | Лучший бид 250 и лучший аск 258.
14:32:36.471 |            | SOQS            | Котирование заявки 51668160 на Sell с ценой 244 объемом 1.
14:32:36.472 |            | SOQS            | Перекотирование зарегистрировано для заявки 51668161 на Sell с ценой 251 объемом 1.
14:32:36.815 | Error      | SOQS            | Заявка 51668161 не была принята по причине System.InvalidOperationException: Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=51668161; CLASSCODE=SPBOPT; SECCODE=SR8250BL1; MODE=0; FIRST_ORDER_NUMBER=5904276069; FIRST_ORDER_NEW_PRICE=251; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".' по передвинутым заявкам..
14:32:38.634 | Error      | SOQS            | Котируемая заявка 51668161 не принята биржей по причине 'Сервер для транзакции 'ACTION=MOVE_ORDERS; TRANS_ID=51668161; CLASSCODE=SPBOPT; SECCODE=SR8250BL1; MODE=0; FIRST_ORDER_NUMBER=5904276069; FIRST_ORDER_NEW_PRICE=251; FIRST_ORDER_NEW_QUANTITY=1;' вернул неправильное сообщение 'Ошибка перестановки заявок. [FORTS] "Не найдена заявка для перестановки.".' по передвинутым заявкам.'.
14:32:38.635 |            | SOQS            | Регистрация новой заявки на Sell с ценой 251 и объемом 1.
14:32:38.636 |            | SOQS            | Заявка 51668162 на Sell отправлена с ценой 251 объемом 1.
14:32:48.379 |            | SOQS            | Цена текущей 251 и лучшей 255.
14:32:48.379 |            | SOQS            | Лучший бид 250 и лучший аск 251.
14:32:48.379 |            | SOQS            | Котирование заявки 51668162 на Sell с ценой 251 объемом 1.
14:32:48.380 |            | SOQS            | Перекотирование зарегистрировано для заявки 51668163 на Sell с ценой 255 объемом 1.
14:32:54.006 |            | SOQS            | Отмена заявки 51668160.
14:32:54.007 |            | SOQS            | Отмена заявки 51668163.
14:32:54.008 |            | SOQS            | Стратегия останавливается.
14:32:54.009 |            | SOQS            | Заканчиваем котирование с неисполненным объемом равный 1.
14:32:54.009 |            | SOQS            | Заканчиваем котирование с неисполненным объемом равный 1.
14:32:54.010 |            | SOQS            | Стратегия остановлена.


Вот то что я выводил в дебаггер. Событие новой сделки приходило, однако стратегия на нее не отреагировала

Code

Время: 14:26:18.426; Вызван NeedFinish; Цена БА: 7865.0; Результат: False.
Время: 14:26:18.440; Вызван GetNewPrice; Цена БА: 7865.0; Теор цена из таб: 230.0; Результат: 233.5.
Время: 14:26:18.442; Вызван GetNewVolume; Цена БА: 7865.0; Результат: 1.0.
Время: 14:26:18.443; Вызван NeedRegister; Цена БА: 7865.0; Результат: True.
Время: 14:26:18.444; Вызван NeedFinish; Цена БА: 7865.0; Результат: False.
Время: 14:26:18.446; Вызван RegisterQuotingOrder.
Время: 14:26:18.447; Вызван RegisterOrder.
Время: 14:26:18.462; Вызван NeedFinish; Цена БА: 7865.0; Результат: False.
Время: 14:26:18.737; Событие NewOrder; Цена БА: 7865.0; Цена заявки: 233.0; Объем заявки: 1.0.
Время: 14:26:18.941; Вызван NeedFinish; Цена БА: 7866.0; Результат: False.
***** удалено для экономии места
Время: 14:30:32.445; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:30:32.463; Вызван GetNewPrice; Цена БА: 7892.0; Теор цена из таб: 240.0; Результат: 243.6.
Время: 14:30:32.467; Вызван GetNewVolume; Цена БА: 7892.0; Результат: 1.0.
Время: 14:30:32.493; Вызван NeedRegister; Цена БА: 7892.0; Результат: False.
Время: 14:30:32.499; Вызван NeedReRegister с параметрами newBestPrice=244.0 и newVolume=1.0; Цена БА: 7892.0; Результат: False.
Время: 14:30:32.501; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Новая сделка
Время: 14:30:35.459; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:30:35.460; Вызван GetNewPrice; Цена БА: 7892.0; Теор цена из таб: 240.0; Результат: 243.6.
Время: 14:30:35.461; Вызван GetNewVolume; Цена БА: 7892.0; Результат: 1.0.
Время: 14:30:35.462; Вызван NeedRegister; Цена БА: 7892.0; Результат: False.
Время: 14:30:35.462; Вызван NeedReRegister с параметрами newBestPrice=244.0 и newVolume=1.0; Цена БА: 7892.0; Результат: False.
Время: 14:30:35.463; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:31:08.047; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:31:08.050; Вызван GetNewPrice; Цена БА: 7892.0; Теор цена из таб: 239.0; Результат: 242.6.
Время: 14:31:08.051; Вызван GetNewVolume; Цена БА: 7892.0; Результат: 1.0.
Время: 14:31:08.051; Вызван NeedRegister; Цена БА: 7892.0; Результат: False.
Время: 14:31:08.052; Вызван NeedReRegister с параметрами newBestPrice=243.0 и newVolume=1.0; Цена БА: 7892.0; Результат: False.
Время: 14:31:08.053; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:31:10.007; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:31:10.008; Вызван GetNewPrice; Цена БА: 7892.0; Теор цена из таб: 239.0; Результат: 242.6.
Время: 14:31:10.008; Вызван GetNewVolume; Цена БА: 7892.0; Результат: 1.0.
Время: 14:31:10.009; Вызван NeedRegister; Цена БА: 7892.0; Результат: False.
Время: 14:31:10.009; Вызван NeedReRegister с параметрами newBestPrice=243.0 и newVolume=1.0; Цена БА: 7892.0; Результат: False.
Время: 14:31:10.010; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:31:16.199; Вызван NeedFinish; Цена БА: 7889.0; Результат: False.
Время: 14:31:16.200; Вызван GetNewPrice; Цена БА: 7889.0; Теор цена из таб: 240.0; Результат: 243.6.
Время: 14:31:16.201; Вызван GetNewVolume; Цена БА: 7889.0; Результат: 1.0.
Время: 14:31:16.201; Вызван NeedRegister; Цена БА: 7889.0; Результат: False.
Время: 14:31:16.202; Вызван NeedReRegister с параметрами newBestPrice=244.0 и newVolume=1.0; Цена БА: 7889.0; Результат: False.
Время: 14:31:16.202; Вызван NeedFinish; Цена БА: 7889.0; Результат: False.
Время: 14:31:17.837; Вызван NeedFinish; Цена БА: 7889.0; Результат: False.
Время: 14:31:17.838; Вызван GetNewPrice; Цена БА: 7889.0; Теор цена из таб: 240.0; Результат: 243.6.
Время: 14:31:17.839; Вызван GetNewVolume; Цена БА: 7889.0; Результат: 1.0.
Время: 14:31:17.840; Вызван NeedRegister; Цена БА: 7889.0; Результат: False.
Время: 14:31:17.840; Вызван NeedReRegister с параметрами newBestPrice=244.0 и newVolume=1.0; Цена БА: 7889.0; Результат: False.
Время: 14:31:17.841; Вызван NeedFinish; Цена БА: 7889.0; Результат: False.
Время: 14:31:18.807; Вызван NeedFinish; Цена БА: 7889.0; Результат: False.
Время: 14:31:18.808; Вызван GetNewPrice; Цена БА: 7889.0; Теор цена из таб: 240.0; Результат: 243.6.
Время: 14:31:18.808; Вызван GetNewVolume; Цена БА: 7889.0; Результат: 1.0.
Время: 14:31:18.809; Вызван NeedRegister; Цена БА: 7889.0; Результат: False.
Время: 14:31:18.809; Вызван NeedReRegister с параметрами newBestPrice=244.0 и newVolume=1.0; Цена БА: 7889.0; Результат: False.
Время: 14:31:18.810; Вызван NeedFinish; Цена БА: 7889.0; Результат: False.
Время: 14:31:50.891; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
Время: 14:31:50.892; Вызван GetNewPrice; Цена БА: 7892.0; Теор цена из таб: 239.0; Результат: 242.6.
Время: 14:31:50.893; Вызван GetNewVolume; Цена БА: 7892.0; Результат: 1.0.
Время: 14:31:50.893; Вызван NeedRegister; Цена БА: 7892.0; Результат: False.
Время: 14:31:50.894; Вызван NeedReRegister с параметрами newBestPrice=243.0 и newVolume=1.0; Цена БА: 7892.0; Результат: False.
Время: 14:31:50.894; Вызван NeedFinish; Цена БА: 7892.0; Результат: False.
The thread '<No Name>' (0x1500) has exited with code 0 (0x0).
The thread '<No Name>' (0x1ed0) has exited with code 0 (0x0).
Время: 14:32:36.468; Вызван NeedFinish; Цена БА: 7901.0; Результат: False.
Время: 14:32:36.469; Вызван GetNewPrice; Цена БА: 7901.0; Теор цена из таб: 247.0; Результат: 250.7.
Время: 14:32:36.469; Вызван GetNewVolume; Цена БА: 7901.0; Результат: 1.0.
Время: 14:32:36.470; Вызван NeedRegister; Цена БА: 7901.0; Результат: False.
Время: 14:32:36.470; Вызван NeedReRegister с параметрами newBestPrice=251.0 и newVolume=1.0; Цена БА: 7901.0; Результат: True.
Время: 14:32:36.471; Вызван NeedFinish; Цена БА: 7901.0; Результат: False.
Время: 14:32:36.472; Вызван ReRegisterOrder.
Время: 14:32:36.473; Вызван NeedFinish; Цена БА: 7901.0; Результат: False.
Время: 14:32:38.631; Вызван NeedFinish; Цена БА: 7903.0; Результат: False.
Время: 14:32:38.632; Вызван GetNewPrice; Цена БА: 7903.0; Теор цена из таб: 247.0; Результат: 250.7.
Время: 14:32:38.633; Вызван GetNewVolume; Цена БА: 7903.0; Результат: 1.0.
Время: 14:32:38.633; Вызван NeedRegister; Цена БА: 7903.0; Результат: True.
Время: 14:32:38.634; Вызван NeedFinish; Цена БА: 7903.0; Результат: False.
Время: 14:32:38.635; Вызван RegisterQuotingOrder.
Время: 14:32:38.636; Вызван RegisterOrder.
Время: 14:32:38.636; Вызван NeedFinish; Цена БА: 7903.0; Результат: False.
Время: 14:32:38.688; Событие NewOrder; Цена БА: 7903.0; Цена заявки: 251.0; Объем заявки: 1.0.
Время: 14:32:38.910; Вызван NeedFinish; Цена БА: 7903.0; Результат: False.
**** далее идет котирование новой заявки


Код стратегии следующий
Code

class SingleOptionQuotingStrategy : TheorPriceQuotingStrategy
	{
		public SingleOptionQuotingStrategy(Order order, Unit betsPriceOffset, Unit theorpriceOffset)
			: base(order, betsPriceOffset, theorpriceOffset) { }
		public SingleOptionQuotingStrategy(OrderDirections dir, decimal vol, Unit theorpriceOffset)
			: base(dir, vol, theorpriceOffset) { }


		public Security UnderlyingSecurity { get; private set; }
		protected override decimal GetNewPrice()
		{
			var r = base.GetNewPrice();
			Debug.WriteLine("Время: {0}; Вызван GetNewPrice; Цена БА: {1}; Теор цена из таб: {3}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString("0.0"), Security.TheorPrice.ToString("0.0")));
			return r;
		}
		protected override decimal GetNewVolume()
		{
			var r = base.GetNewVolume();
			Debug.WriteLine("Время: {0}; Вызван GetNewVolume; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString("0.0")));
			return r;
		}

		protected override bool NeedFinish()
		{
			var r = base.NeedFinish();
			Debug.WriteLine("Время: {0}; Вызван NeedFinish; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString()));
			return r;
		}
		protected override bool NeedRegister()
		{
			var r = base.NeedRegister();
			Debug.WriteLine("Время: {0}; Вызван NeedRegister; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString()));
			return r;
		}
		protected override bool NeedReRegister(decimal newBestPrice, decimal newVolume)
		{
			var r = base.NeedReRegister(newBestPrice, newVolume);
			Debug.WriteLine("Время: {0}; Вызван NeedReRegister с параметрами newBestPrice={3} и newVolume={4}; Цена БА: {1}; Результат: {2}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
				UnderlyingSecurity.LastTrade.Price.ToString("0.0"), r.ToString(), newBestPrice.ToString("0.0"), newVolume.ToString("0.0")));
			return r;
		}

		protected override void RegisterOrder(Order order)
		{
			Debug.WriteLine("Время: {0}; Вызван RegisterOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.RegisterOrder(order);
		}

		protected override void RegisterQuotingOrder(Order order)
		{
			Debug.WriteLine("Время: {0}; Вызван RegisterQuotingOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.RegisterQuotingOrder(order);
		}

		protected override void ReRegisterOrder(Order oldOrder, Order newOrder)
		{
			Debug.WriteLine("Время: {0}; Вызван ReRegisterOrder.".Put(DateTime.Now.ToString("HH:mm:ss.fff")));
			base.ReRegisterOrder(oldOrder, newOrder);
		}

		protected override void OnStarting()
		{

			this.NewOrder += o => Debug.WriteLine("Время: {0}; Событие NewOrder; Цена БА: {1}; Цена заявки: {2}; Объем заявки: {3}.".Put(DateTime.Now.ToString("HH:mm:ss.fff"),
									this.UnderlyingSecurity.LastTrade.Price.ToString("0.0"), o.Price.ToString("0.0"), o.Volume.ToString("0.0")));
			this.NewMyTrades += t => Debug.WriteLine("Новая сделка");
			this.UnderlyingSecurity = this.Security.GetUnderlyingAsset();
			base.OnStarting();


		}


	}

Tags:


Thanks:


Mikhail Sukhov

Avatar
Date: 11/17/2011
Reply


Версия S#?
Thanks:

InsiderHSE

Avatar
Date: 11/18/2011
Reply


4.0.5
Thanks:

Mikhail Sukhov

Avatar
Date: 11/18/2011
Reply


InsiderHSE
4.0.5


Эта же ошибка http://stocksharp.com/fo...rabotaiet-kotirovaniie/
Thanks:


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

loading
clippy