Как правильно нарисовать гистограмму исходя из этих значений в окне шириной М пикселей (N != M).
Проблемы возникают когда N > M.
Надо получить масив длиною М, что-бы по одному пикселю на значение, и при этом сохранить кривизну исходного масива.
Как правильно усреднить значения из _values?
в идеале должна получится функция
List<double> CreateWindowedArray(IEnumerable<double> values, int valuesCount, int windowWidth)
{
List<double> res = new List<double>();
... // do here the mathif (valuesCount > windowWidth)
{
Debug.Assert(res.Count == windowWidth);
}
return res;
}
Здравствуйте, Holms, Вы писали:
H>Как правильно нарисовать гистограмму исходя из этих значений в окне шириной М пикселей (N != M). H>Проблемы возникают когда N > M.
В финансовом анализе, где очень важно знать пиковые значения котировок, при агрегации данных по временнОму интервалу используют "Open-High-Low-Close" диаграммы.
Конкретные реализации можно посмотреть в Excel (подгруппа "Биржевые диаграммы").
Но, поскольку в нашем случае вряд ли важны значения "открытия" и "закрытия", то можно вместо этого вычислять "среднее арифметическое" и как-то его помечать, например, подкрашенным пикселем.
A>В финансовом анализе, где очень важно знать пиковые значения котировок, при агрегации данных по временнОму интервалу используют "Open-High-Low-Close" диаграммы. здесь я работаю, что такое OHLC вроде знаю немного
A>Но, поскольку в нашем случае вряд ли важны значения "открытия" и "закрытия", то можно вместо этого вычислять "среднее арифметическое" и как-то его помечать, например, подкрашенным пикселем.
так в этом и проблема как правильно сгрупировать N/M в одну запись. Думал использовать SMA indicator, но он плохо подходит.
Для каждого пикселя окна (диапазон 0..M) линейно перевычисляем его координаты в (0..N). Получится дробное число, попадающее между двумя "столбцами" массива. Например, 3.23.
Округлим вниз, и вверх: это столбцы 3 и 4. Складываем их с коэфициентами: (0.23 * data[3] + (1-0.23)*data[4]). Вуаля!
Если окно очень уж маленькое — нужно ещё прикинуть как влить в эту формулу ещё несколько соседних столбцов, чтоб не было "отбрасываний"
H>Спасибо
Здравствуйте, Holms, Вы писали:
H>здесь я работаю, что такое OHLC вроде знаю немного
A>>Но, поскольку в нашем случае вряд ли важны значения "открытия" и "закрытия", то можно вместо этого вычислять "среднее арифметическое" и как-то его помечать, например, подкрашенным пикселем. H>так в этом и проблема как правильно сгрупировать N/M в одну запись.
Дык вроде особых проблем не должно быть: идём по горизонтальными пикселям (1 to M) и для каждого пикселя m вычисляем диапазон индексов n1..n2 попадающих в него исходных элементов (формула должна быть несложной). По этому диапазону вычисляем min, max, average и отображаем на графике.
Можно ещё, конечно, пытаться аппроксимировать крайние элементы, как предложили ниже, но ИМХО это сильно на графике не скажется. Хотя, это может помочь в случае, когда N < M и данные придётся растягивать по пикселям.