Допустим мой алгоритм запущен в реальные торги с 1.12.2011.
Я хочу, чтобы при каждом перезапуске на очередном баре, я имел бы список сделок. Я делаю это так:
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() на в лог. Затем нажимаете "старт" в панели управления скриптами, в логе будут ноли.