MS Chart
Atom Ответить
23.08.2012


Как привязать реальные данные из Quik с MS Chart?
Переделал с CodePlex IndicatorsXaml вот таким образом:
Код
 [color=red]
_candleManager.Processing += (series, candle) =>  { DrawCandleMsChart(series, candle);}
_candleManager.Start(_series);
.....
private void DrawCandleMsChart(CandleSeries series, Candle candle)
        {            
            this.GuiAsync(() =>
            {                    
                var wnd = _msChartWindows.TryGetValue(series);                  
                if (wnd != null)             
                    wnd.MsChart.AddCandle(candle);
            });
        }
namespace IndicatorsXaml
{
......
public void AddCandle(Candle candle)
        {
            _seriesVolume.Points.Add(new DataPoint
            {
                XValue = candle.CloseTime.ToOADate(),
                YValues = new [] { candle.CloseVolume.To<double>() }
            });

            var candleSb = new StringBuilder();
            candleSb.Append(candle.LowPrice.ToString().Replace(',', '.')).Append(',');
            candleSb.Append(candle.HighPrice.ToString().Replace(',', '.')).Append(',');
            candleSb.Append(candle.OpenPrice.ToString().Replace(',', '.')).Append(',');
            candleSb.Append(candle.ClosePrice.ToString().Replace(',', '.'));
            var pointCandle = new DataPoint(candle.CloseTime.ToOADate(), candleSb.ToString());

            pointCandle["PriceUpColor"] = "Green";
            pointCandle["PriceDownColor"] = "Red";
            pointCandle.BorderColor = Color.DarkSlateGray;

            _seriesCandles.Points.Add(pointCandle);
}
...
}

НО MS Chart на часовом тайм-фрейме рисует все точки подряд, а не сумму за час.
Что за метод суммирует данные? В Am Chart всё делается автоматически и в исходниках нет никакого суммирования.
В общем что надо сделать? Заранее спасибо!

Теги:


Спасибо:




7 Ответов
Moadip

Фотография
Автор статей Программист
Дата: 23.08.2012
Ответить


Если в двух словах, вы каждый раз добавляете новую свечку, а надо в зависимости от состояния свечки или добавлять новую или перерисовывать старую.

Свое изобретать конечно интересно.Wink Но можно воспользоваться уже готовым.
В 4.1.4 для отрисовки графиков используется контрол на основе msChart.

Дока пока еще не обновлена, но примеры уже переписаны под новый контрол и по ним можно разобраться, как данный контрол использовать.
Спасибо: Кот Матроскин

Jeta

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


А что, от amCharts уже отказались?
Спасибо:

ra81

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


jTr Перейти
А что, от amCharts уже отказались?

Давненько уже в сторону других чартов смотрят. амЧартс уже пережиток.
Спасибо:

alex123456

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


MS Chart свечки строит хорошо, но вот индикаторы см. прикреплённый файл.
Почему нет объёмного графика.
Автор топика
Спасибо:

ra81

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


alex123456 Перейти
MS Chart свечки строит хорошо, но вот индикаторы см. прикреплённый файл.
Почему нет объёмного графика.


Необходима доработка видимо компоненты. Чтобы на графике не было дырок от пропущенных периодов например ночных, используются индексированные ряды данных. А они будут отображаться только когда число точек во всех рядах одинаковое. В этом и есть проблема. Свечек скорее всего больше чем точек индикатора. У меня например картинка с дырками, ибо я не стал заморачиваться с индексацией именно из за проблемы синхронизации рядов данных.
Спасибо:

alex123456

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


Задача с индексацией между рядами решилась вот так:
надо добавить два слова: IsIndexed="False" - тогда индексация выключится.
Код
<SX:Chart x:Name="_chart" IsIndexed="False" />

Но после этого на графике появяться пустые области, причём такие большие просто жуть(не говоря уж о времени загрузки).
например: в примере SMA появится область с 2010 по 2012 (каждый день, и час и минута).
А с индексацией индикатор не грузится.
AmChart вэтом отношении лучше(может пока только).
Автор топика
Спасибо:

alex123456

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


Есть ещё проблемы:
Заголовки не добавляются ни на график(Chart), ни на области(Area).
Подсказки(ToolTip) также не добавляются к индикаторам.
Подсказка в виде информации о свечке в примере работает, у себя не работает. Что надо включить?
Сделал такую вещь: сначала у меня рисуются свечки, а потом добавляется к нему индикатор.
Исторический индикатор рисуется нормально (т.е. по данным по которым уже построены свечки).
Но вот реальный отрисовывает один или два отрезка и выбрасывает следующее исключение см. файл.
Что надо сделать? Вроде индикатор не пустой, есть все данные см. файл.
Как будто количество свечек меньше, чем количество значений индикатора или наоборот.
Автор топика
Спасибо:


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

loading
clippy