← Voltar

Новая заявка не попадает в 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, где ошибка повторяется во вложении.

Este tópico foi útil?

Compartilhar tópico

Comentários (4)

Entrar ou Criar conta, Faça login ou cadastre-se para deixar um comentário

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.