← Voltar

Стратегия из примера кидает ошибку

класс взят из примера

public class SmaStrategy : Strategy
{  
      private void ProcessCandle(Candle candle)
        {
            ...

            // добавляем новую свечку
            LongSma.Process(candle);
            ShortSma.Process(candle); // Здесь выкидывает ошибка, {"Коллекция была изменена; невозможно выполнить операцию перечисления."}

            // вычисляем новое положение относительно друг друга
            var isShortLessThenLong = ShortSma.GetCurrentValue() < LongSma.GetCurrentValue();

            ... 
        }
}

При том что лонг отрабатывает, а шорт выкидывает ошибку, не могу разобраться какая коллекция изменена и кем это происходит при чтении из квика. подскажите какая коллекция изменена?

Este tópico foi útil?

Compartilhar tópico

Comentários (7)

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

Andrii
Andrii Autor

Ошибка вылазит в других кусках, но в том же месте:

 //вычисляем значение лонга
var longValue = candle.State == CandleStates.Finished ? new ChartIndicatorValue(Strategy.LongSma, Strategy.LongSma.Process(candle)) : null;

ошибка: <mark>Collection was modified; enumeration operation may not execute.</mark>

здесь наверное баг, что-то идет не так, наверное буфер кидает или что-то не то, помогите разобраться, может слишком большая история, но оно не доходит до ограничения, всего 31 000

screen: http://prntscr.com/1cx4mx

duzers
duzers

У меня такая же проблема. Решили ли вы свою? Если да, то не могли бы подсказать?

Mikhail Sukhov
Mikhail Sukhov

duzers: У меня такая же проблема. Решили ли вы свою? Если да, то не могли бы подсказать?

Какая версия S#?

duzers
duzers

версия 4.2.1.3

Mikhail Sukhov
Mikhail Sukhov

Приведите текст ошибки

duzers
duzers

текст. таймфрейм 1 тик, если это важно

duzers
duzers

вроде решил задачу удалением из стратегии строчек LongSma.Process(candle); ShortSma.Process(candle);