← Zurück

Новая заявка не попадает в Orders.ActiveOrders после ReRegisterOrder

Новая заявка не попадает в Startegy.ActiveOrders после ReRegisterOrder в случае когда перерегистрируемая заявка была OrderTypes.Conditional, а новая заявка OrderTypes.Limit.

добавил в SampleSma след. код:


private void ProcessCandle(Candle candle)
{
  if (ProcessState == ProcessStates.Stopping)
  {
    CancelActiveOrders();
    return;
  }
  var stopOrder = CreateStopLimit();

  this.AddInfoLog("ActiveOrders (Count={0}): {1}", ActiveOrders.Count(), ActiveOrders.Aggregate("", (current, o) => current + ", " + o.Id));

  stopOrder.WhenRegistered().Do(oldOrder => {
    var newOrder = oldOrder.Clone();
    newOrder.Type = OrderTypes.Limit;
    newOrder.Price = newOrder.Direction == OrderDirections.Buy ? Security.GetCurrentPrice().Value - 200 : Security.GetCurrentPrice().Value + 200;
    newOrder.WhenRegistered().Do(OrderRegistered).Apply(this);
    ReRegisterOrder(oldOrder, newOrder);
  }).Apply(this);

  stopOrder.WhenRegistered().Do(OrderRegistered).Apply(this);

  RegisterOrder(stopOrder);
}
    private Order CreateStopLimit() {
      return new Order {
        Type = OrderTypes.Conditional,
        //Type = OrderTypes.Limit,
        Volume = 1,
        Price = Security.GetCurrentPrice().Value + 100,
        //Price = Security.GetCurrentPrice().Value - 200,
        Security = Security,
        Direction = OrderDirections.Buy,
        StopCondition = new QuikStopCondition {
          Type = QuikStopConditionTypes.StopLimit,
          StopPrice = Security.GetCurrentPrice().Value - 250,
        },
      };
    }

    private void OrderRegistered(Order order) {
      this.AddInfoLog("Заявка {0} зарегистрирована Id={1}", order.Type, order.Id);
    }

Лог:

16:06:42.843 | | SS_RIU2@RTS_SPBFUT010Lt | ActiveOrders (Count=0): 16:06:43.453 | | SS_RIU2@RTS_SPBFUT010Lt | Заявка Conditional зарегистрирована Id=148380 16:06:44.125 | | SS_RIU2@RTS_SPBFUT010Lt | Заявка Limit зарегистрирована Id=1774649150 16:07:25.734 | | SS_RIU2@RTS_SPBFUT010Lt | ActiveOrders (Count=0): 16:07:26.375 | | SS_RIU2@RTS_SPBFUT010Lt | Заявка Conditional зарегистрирована Id=148382 16:07:26.671 | | SS_RIU2@RTS_SPBFUT010Lt | Заявка Limit зарегистрирована Id=1774652285

Если обе заявки типа Limit, то все корректно. Измененный SampleSma, где ошибка повторяется во вложении.

War dieses Thema hilfreich?

Thema teilen

Kommentare (4)

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

PavelAd
PavelAd Autor

Дополнение: в Strategy.Orders тоже не попадает

Mikhail Sukhov
Mikhail Sukhov

PavelAd: Новая заявка не попадает в Orders.ActiveOrders

Такого свойства нет.

PavelAd
PavelAd Autor

Mikhail Sukhov:

PavelAd: Новая заявка не попадает в Orders.ActiveOrders

Такого свойства нет.

Исправляюсь: не попадает в свойство Startegy.ActiveOrders Поправлено в первом посте

Alexander
Alexander

Проверьте на последней версии из codeplex.