← Назад

Ошибка в примере SamplesSMA

в функции DrawSma будут рисоваться прямые линии, равные последнему значению индикатора.

Комментарии (9)

Вход или Создать аккаунт, Войдите или зарегистрируйтесь, чтобы оставить комментарий

Mikhail Sukhov
Mikhail Sukhov

Не понял. Можно рисунок?

Константин
Константин Автор

как прикрепить рисунок не знаю. вот код foreach (var candle in candles) { _longSmaSeries.DataPoints.Add(new DataPoint ); _shortSmaSeries.DataPoints.Add(new DataPoint );

_strategy.LongSma.Value и _strategy.ShortSma.Value всегда будут равны последнему значению индикатора. там нужно получать значение по дате-времени свечи. как это сделать я не знаю

Mikhail Sukhov
Mikhail Sukhov

Не должны они равняться последнему значению индикатора. Это значение, вычисляемое по формуле. Что-то не так. Видимо данные не заполняются из Квика. Посмотрите, правильные ли данные в Sma.Add

artemox
artemox

_strategy.LongSma.Value содержит последнее значение (т.е. значение последней добавленной свечи) поэтому надо заполнять _longSmaSeries по мере поступления свечей, предварительно пересчитав значение в индикаторе (SMA) т.е. так - добавил свечу в стратегию, затем добавил пересчитанное значение индикатора в longSmaSeries

Mikhail Sukhov
Mikhail Sukhov

Ок, понятно. Посмотрите в метод Sma.Add. По всей видимости туда приходит одно и то же значение.

Константин
Константин Автор

расчет SMA по историческим данным возможен только после загрузки текстового файла, из Квика данные, даже если есть, не используются. т.е. свечки отрисовались по квику, а данные для SMA из текстового файла. Если подождать н-цать минут линии конечно пойдут :(

Mikhail Sukhov
Mikhail Sukhov
  1. Так Вы не из текстового файла берете историю? А откуда берете?
  2. Какие данные из Квик не используются?
  3. Не, и свечки и линии берутся из файла + квика. Историия (все что до сегодняшнего дня) берется из файла. Начиная с текущей сессии - из Квика... Я не совсем понял. Вы нашли проблему? В чем она?
Константин
Константин Автор

Это в общем-то мои умозрительные заключения после беглого просмотра. Сейчас запустил, проверил что история подгружается - результат тот же. Единственное, сильно уменьшил период SMA что бы было видно

http://groups.google.ru/group/stocksharp/web/sma2.jpg

При запуске программы (старте обмена по DDE) рисуются только свечки, индикаторы не рисуются, т.к. переменная _isTodaySmaDrawn установлена в false. При загрузке истории из квика вот этот код sma тоже не рисует, т.к. _isTodaySmaDrawn == false

                           _candleManager.NewCandles += (token, candles) =>
                            {
                                    DrawCandles(candles.Keys);

                                   // если скользящие за сегодняшний день отрисованы, то рисуем в

реальном времени текущие скользящие if (_isTodaySmaDrawn) DrawSma(); };

Включается _isTodaySmaDrawn по кнопке запускающей стратегию. Но для "исторических" свечек значение индикатора уже будет равно значению в последней свечке! то о чем я и писал в третьем сообщении.