← Zurück

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

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

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

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

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

            ... 
        }
}

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

War dieses Thema hilfreich?

Thema teilen

Kommentare (7)

Anmelden oder Konto erstellen, Melden Sie sich an oder registrieren Sie sich, um einen Kommentar zu hinterlassen

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);