заявка не попала в стратегию.
Atom Ответить
17.01.2012


4.0.14
информация о заявке присутсвует в логе шлюза, но не пристутвует в логе стратегии.

NewOrders Id- 2639482994
NewOrders TransactionId- 0
NewOrders Direction- Sell
NewOrders Volume- 5
NewOrders Price- 18100
NewOrders Time- 16.01.2012 21:30:53

OrdersChanged Id- 2639482994
OrdersChanged TransactionId- 0
OrdersChanged Direction- Sell
OrdersChanged Volume- 5
OrdersChanged Price- 18100
OrdersChanged Time- 16.01.2012 21:30:53

OrdersChanged Id- 2639482994
OrdersChanged TransactionId- 75370390
OrdersChanged Direction- Sell
OrdersChanged Volume- 5
OrdersChanged Price- 18100
OrdersChanged Time- 16.01.2012 21:30:53

Проблема была в том, что я отображаю в окне робота только активные заявки, а эта 2639482994, осталась висеть, хотя была снята. Связано ли то, что она осталась висеть, с тем, что информации о ней нет в логе стртегии?

Теги:


Спасибо:




8 Ответов
Alexander

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


Что такое лог шлюза, а что такое лог стратегии?
Как заявка снималась?
Спасибо:

Alexander

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


Где печатается NewOrders? Крайне подозрительно, что её TransactionId == 0.
Спасибо:

vader

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


Лог шлюза
Код

trader.NewOrders += ex1 =>  {
				lock(sync){
					foreach(Order p in ex1){
                        _bigLog.WriteLine("NewOrders Security- " + p.Security.ToString());
						_bigLog.WriteLine("NewOrders Id- " + p.Id.ToString());
						_bigLog.WriteLine("NewOrders TransactionId- " + p.TransactionId.ToString());
						_bigLog.WriteLine("NewOrders Direction- " + p.Direction.ToString());
						_bigLog.WriteLine("NewOrders Volume- " + p.Volume.ToString());
						_bigLog.WriteLine("NewOrders Price- " + p.Price.ToString());
						_bigLog.WriteLine("NewOrders Time- " + p.Time.ToString());
                        _bigLog.WriteLine("NewOrders State- " + p.State.ToString());
                        _bigLog.WriteLine("NewOrders Status- " + p.Status.ToString());
                        _bigLog.WriteLine(" ");
					}
					_bigLog.Flush();
				}
			};
trader.OrdersChanged += ex1 =>  {
				lock(sync){
					foreach(Order p in ex1){
                        _bigLog.WriteLine("OrdersChanged Security- " + p.Security.ToString());
						_bigLog.WriteLine("OrdersChanged Id- " + p.Id.ToString());
						_bigLog.WriteLine("OrdersChanged TransactionId- " + p.TransactionId.ToString());
						_bigLog.WriteLine("OrdersChanged Direction- " + p.Direction.ToString());
						_bigLog.WriteLine("OrdersChanged Volume- " + p.Volume.ToString());
						_bigLog.WriteLine("OrdersChanged Price- " + p.Price.ToString());
						_bigLog.WriteLine("OrdersChanged Time- " + p.Time.ToString());
                        _bigLog.WriteLine("OrdersChanged State- " + p.State.ToString());
                        _bigLog.WriteLine("OrdersChanged Status- " + p.Status.ToString());
                        _bigLog.WriteLine(" ");
					}
					_bigLog.Flush();
				}
			};


Лог стратегии
Код

strategy.NewOrder += OnNewOrder;
private void OnNewOrder(Order order)
		{
			this.GuiAsync(() => this.Orders.Add(order));
			RefreshOrders();
			_strategyLog.WriteLine("NewOrder Id- " + order.Id.ToString());
			_strategyLog.WriteLine("NewOrder TransactionId- " + order.TransactionId.ToString());
			_strategyLog.WriteLine("NewOrder Direction- " + order.Direction.ToString());
			_strategyLog.WriteLine("NewOrder Volume- " + order.Volume.ToString());
			_strategyLog.WriteLine("NewOrder Price- " + order.Price.ToString());
			_strategyLog.WriteLine("NewOrder Time- " + order.Time.ToString());
            _strategyLog.WriteLine("NewOrder State- " + order.State.ToString());
            _strategyLog.WriteLine("NewOrder Status- " + order.Status.ToString());
            _strategyLog.WriteLine(" ");
			_strategyLog.Flush();
		}

strategy.OrderChanged += OnOrderChanged;
private void OnOrderChanged(Order order)
		{
			this.GuiAsync(() =>
			              {
			              	int ind = this.Orders.IndexOf(order);
			              	if(ind != -1){
			              		//this.Orders[ind].Balance = TraderHelper.GetMatchedVolume(order);
			              	}
			              });
			RefreshOrders();
			_strategyLog.WriteLine("OnOrderChanged Id- " + order.Id.ToString());
			_strategyLog.WriteLine("OnOrderChanged TransactionId- " + order.TransactionId.ToString());
			_strategyLog.WriteLine("OnOrderChanged Direction- " + order.Direction.ToString());
			_strategyLog.WriteLine("OnOrderChanged Volume- " + order.Volume.ToString());
			_strategyLog.WriteLine("OnOrderChanged Price- " + order.Price.ToString());
			_strategyLog.WriteLine("OnOrderChanged Time- " + order.Time.ToString());
            _strategyLog.WriteLine("OnOrderChanged State- " + order.State.ToString());
            _strategyLog.WriteLine("OnOrderChanged Status- " + order.Status.ToString());
            _strategyLog.WriteLine(" ");
			_strategyLog.Flush();
		}


Шлюз работает в синхронном режиме.
снималась - вот так.
this.Trader.CancelOrder(order);
Автор топика
Спасибо:

Alexander

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


Распечатайте для неверной заявки строку транзакции + покажите для неё скриншот квика - что туда приходит.
Спасибо:

vader

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


Строку транзакции отправить к сожалению не могу т.к. робот запускался 4 дня назад, и таких функций в нем не было.
В таблице заявок проблемная заявка выделена. Хотя, я так понимаю, без транзакций это не поможет в решении проблемы.
Автор топика
Спасибо:

Alexander

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


Да, верно.
Строка транзакции нужна + order.GetHashCode() после вызова Register и в событии NewOrders
Спасибо:

vader

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


А в событии OnOrderChanged?
Автор топика
Спасибо:

Alexander

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


vader Перейти
А в событии OnOrderChanged?


ну можно и туда. только не обязательно
Спасибо:


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

loading
clippy