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

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


Добрый день! Возмем индикатор SMA
Code
_sma = new SimpleMovingAverage() { Length = 10 };
....
var smaValue = _sma.Process(candle);

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

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

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



Thanks:


Support

Avatar
Date: 1/11/2018
Reply


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

Константин

Avatar
Date: 1/11/2018
Reply


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

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

Если значение IsFinal не работает в этом случае то для чего оно?
Вот код отрисовки:
Code
_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));

};
Thanks: Support

Support

Avatar
Date: 1/14/2018
Reply


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


Attach files by dragging & dropping, , or pasting from the clipboard.

loading
clippy