Отрисовка индикаторов на истории и онлайн.

Отрисовка индикаторов на истории и онлайн.


Добрый день! Возмем индикатор SMA

 _sma = new SimpleMovingAverage() { Length = 10 };
....
var smaValue = _sma.Process(candle);

Далее если указать для smaValue.IsFinal = true то текущее значение будет браться за расчет и фиксироваться по оси x. То есть можно указать вот так:

smaValue.IsFinal = candle.State == CandleStates.Finished;

Это будет логично. Если свеча закрыта то рассчитываем индикатор и фиксируем на оси x.

От сюда вопрос: Почему это не работает при загрузке истории? Ведь у исторических свечей так же есть состояние Finished и Active. Если не отфильтровывать историю от реалтайма то индикатор убегает вперед свечек.




Спасибо:


Support

Фотография
Дата: 11.01.2018
Ответить


В хранилище хранятся только сформированные свечи.

Спасибо:

Константин

Фотография
Дата: 11.01.2018
Ответить


Здравствуйте. История приходит из Quik'а. Если исторические свечи имеют статус Finished то smaValue.IsFinal будет всегда true так как:

smaValue.IsFinal = candle.State == CandleStates.Finished;

Соответственно если мы явно указываем какое значение брать за расчет то все должно рисоваться нормально, но рисуется вот так: Если значение IsFinal не работает в этом случае то для чего оно? Вот код отрисовки:

            _candleManager.Processing += (series, candle) =>
            {
                if (series != _series)
                    return;

                // Рассчитываем значение индикатора
                var smaValue = _sma.Process(candle);
                //Если свеча закончена то берем текущее значение за расчет и фиксируем по оси X
                smaValue.IsFinal = candle.State == CandleStates.Active;

                // Создаем экземпляр класса ChartDrawData - класс, где группируются данные для отрисовки  
                var data = new ChartDrawData();

                // chartItem - набор элементов, привязанных к одной точке на шкале X
                var chartItem = data.Group(candle.OpenTime).Add(_candleElement, candle);
                chartItem.Add(_indicatorElement, smaValue);

                // Безопасно отрисовываем элементы на графике
                this.GuiSync(() => Chart.Draw(data));

            };

Спасибо: Support

Support

Фотография
Дата: 14.01.2018
Ответить


Спасибо информация передана.

Спасибо:


Добавить файлы через драг-н-дроп, , или вставить из буфера обмена.

loading
clippy