Допустим мой алгоритм запущен в реальные торги с 1.12.2011.

Я хочу, чтобы при каждом перезапуске на очередном баре, я имел бы список сделок. Я делаю это так:

Code:
IEnumerator<IPosition> positionEnum = source.Positions.GetEnumerator();

while (positionEnum.MoveNext()) {
  if (
    positionEnum.Current.EntryBarNum > fromBar
    && positionEnum.Current.EntryBarNum <= toBar
    && !positionEnum.Current.IsActive
  ) {
    // do work here
  }
}


Но это работает почему-то только в лаборатории.
fromBar, toBar - просто небольшая оптимизация, чтобы не просматривать каждый раз весь список?

Для realtime нужно использоваться что-то другое?

update:
Точнее проблема похоже в методе Profit() у позиции. Оно почему-то возвращает иногда 0, вместо реальной цифры. А в лаборатории все ок.

Воспроизводится так. заводите боевой скрипт. Внутри цикла с барами пишите вышеозначенный код. И вывод positionEnum.Current.Profit() на в лог. Затем нажимаете "старт" в панели управления скриптами, в логе будут ноли.


Отредактировано Sherman81 (Wed Feb 29 2012 12:19 AM)