Новая заявка не попадает в Orders.ActiveOrders после ReRegisterOrder
Atom Ответить
04.09.2012


Новая заявка не попадает в 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, где ошибка повторяется во вложении.
SmaStrategy.cs 3,8KB (0) MainWindow.xaml.cs 11,4KB (1)

Теги:


Спасибо:




4 Ответов
PavelAd

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


Дополнение: в Strategy.Orders тоже не попадает
Автор топика
Спасибо:

Mikhail Sukhov

Фотография
Автор статей Программист Трейдер
Дата: 05.09.2012
Ответить


PavelAd Перейти
Новая заявка не попадает в Orders.ActiveOrders


Такого свойства нет.
Спасибо:

PavelAd

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


Mikhail Sukhov Перейти
PavelAd Перейти
Новая заявка не попадает в Orders.ActiveOrders


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


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

Alexander

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


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


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

loading
clippy