← Zurück

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

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (8)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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?

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