← Atrás

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

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, осталась висеть, хотя была снята. Связано ли то, что она осталась висеть, с тем, что информации о ней нет в логе стртегии?

¿Le resultó útil este tema?

Compartir tema

Comentarios (8)

Iniciar sesión o Crear cuenta, Inicie sesión o regístrese para dejar un comentario

Alexander
Alexander

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

Alexander
Alexander

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

vader
vader Autor

Лог шлюза


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
Alexander

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

vader
vader Autor

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

Alexander
Alexander

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

vader
vader Autor

А в событии OnOrderChanged?

Alexander
Alexander

vader: А в событии OnOrderChanged?

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