Серия Японские Свечи¶
Используйте представление серии свечей (CartesianCandlestickSeriesView
) в контроле CartesianChart
, чтобы создать финансовую диаграмму, которая показывает движение цены актива. Точки данных отображают максимальную, низкую цены открытия и закрытия ценной бумаги за определенный период.
Каждая точка данных отображается в виде подсвечника (или свечи), который состоит из сплошной панели и двух усиков, которые могут выходить за пределы сплошной панели. Верхнее и нижнее значения сплошной панели определяют цены открытия и закрытия, в то время как усики указывают высокие и низкие цены.
Для рисовать свечи используются два цвета. Если цена закрытия выше цены открытия, свеча отрисована в один цвет. В противном случае свеча отрисована в другой цвет. Например, на картинке выше восходящая свеча отрисована зеленым цветом, а нисходящая свеча отрисована красным. С помощью представления серии свечей вы можете задать пользовательские цвета для восходящих и нисходящих свечей.
Следующий фрагмент кода из демонстрационного графика "Candlestick" создает декартову диаграмму, отображающую последовательность свечей.
<mxc:CartesianChart>
<mxc:CartesianSeries AxisYKey="Price" DataAdapter="{Binding StockData}" SeriesName="Price">
<mxc:CartesianCandlestickSeriesView Color="#00787A" ReductionColor="#BD1436" />
</mxc:CartesianSeries>
</mxc:CartesianChart>
public partial class CartesianCandlestickSeriesViewViewModel : ChartsPageViewModel
{
[ObservableProperty] CandlestickDataAdapter stockData;
//...
}
Данные для просмотра серии свечей¶
Данные для любого представления рядов Картерса предоставляются с помощью адаптера данных , присвоенного свойству CartesianSeries.DataAdapter
. Адаптер данных предоставляет значения X и Y для диаграммы.
Для просмотра серии подсвечников доступны два адаптера данных:
CandlestickDataAdapter
SummaryCandlestickDataAdapter
Значения X в обоих адаптерах данных имеют тип DateTime. Выберите один из этих адаптеров данных в соответствии с типом имеющихся у вас значений Y.
CandlestickDataAdapter¶
Когда вы используете объект CandlestickDataAdapter
, вы предоставляете четыре значения Y типа Double, которые определяют цены открытия, закрытия, максимума и минимума для каждого аргумента X. Вы можете использовать конструктор CandlestickDataAdapter
для заполнения адаптера данными.
Следующий код из демонстрационного графика "Candlestick" демонстрирует инициализацию объекта CandlestickDataAdapter
.
[ObservableProperty] CandlestickDataAdapter stockData;
public CartesianCandlestickSeriesViewViewModel()
{
var data = CsvSources.Stock;
var arguments = new List<DateTime>(data.Count);
var open = new List<double>(data.Count);
var high = new List<double>(data.Count);
var low = new List<double>(data.Count);
var close = new List<double>(data.Count);
for (var i = data.Count - 1; i >= 0; i--)
{
arguments.Add(data[i].Date);
open.Add(data[i].Open);
high.Add(data[i].High);
low.Add(data[i].Low);
close.Add(data[i].Close);
}
StockData = new CandlestickDataAdapter(arguments, open, high, low, close);
}
Объект CandlestickDataAdapter
требует, чтобы вы установили единицу измерения времени (axis unit) для оси X, используя свойство DateTimeScaleOptions.MeasureUnit
.
В приведенном ниже фрагменте кода единица измерения оси установлена на Day
.
<mxc:CartesianChart.AxesX>
<mxc:AxisX ShowTitle="False">
<mxc:AxisXRange MinSideMargin="0.01" MaxSideMargin="0.01" VisualMax="" />
<mxc:AxisX.ScaleOptions>
<mxc:DateTimeScaleOptions MeasureUnit="Day" />
</mxc:AxisX.ScaleOptions>
</mxc:AxisX>
</mxc:CartesianChart.AxesX>
Аргументы X должны быть переданы адаптеру данных CandlestickDataAdapter
в соответствии с этим модулем axis. Например, если единица измерения оси установлена на Day
, значения X должны указывать отдельные дни.
SummaryCandlestickDataAdapter¶
Адаптер SummaryCandlestickDataAdapter
суммирует предоставленные вами данные и автоматически вычисляет цены открытия, закрытия, максимума и минимума за указанный промежуток времени (единицу времени) (например, за секунду, минуту, час, день, неделю и т.д. или кратные промежутку времени). Например, вы можете предоставлять данные с интервалом в одну секунду и разрешить SummaryCandlestickDataAdapter
автоматически суммировать эти данные, скажем, с интервалом в 5 секунд, минуту или час.
Значения X определяют различные значения даты и времени. Для каждого значения X укажите одно значение Y типа Double.
Чтобы указать временные рамки агрегации, используйте два свойства:
-
SummaryCandlestickDataAdapter.MeasureUnit
— Определяет базовый временной интервал агрегирования (миллисекунда, секунда, минута, Час, День, Неделя, месяц, квартал или год), для которого адаптер данных вычисляет цены открытия, закрытия, Максимума и минимума. -
SummaryCandlestickDataAdapter.MeasureUnitFactor
(целое значение; по умолчанию используется1
) — задает множитель для базового временного интервала для расчета фактического временного интервала. Фактическая длина временного интервала вычисляется с помощью выражения:MeasureUnit x MeasureUnitFactor
.
В следующем примере временные рамки устанавливаются равными "2 секундам".:
[ObservableProperty]
SummaryFinancialDataAdapter dataAdapter;
public CartesianSummaryCandlestickViewModel()
{
int dataCount = 100;
var xArgs = new List<DateTime>(dataCount);
var yArgs = new List<double>(dataCount);
//Populate the xArgs and yArgs lists
//...
dataAdapter = new SummaryFinancialDataAdapter(xArgs, yArgs);
dataAdapter.MeasureUnit = DateTimeUnit.Second;
dataAdapter.MeasureUnitFactor = 2;
}
Классы CandlestickDataAdapter
и SummaryCandlestickDataAdapter
предоставляют методы для удаления и добавления точек. Эти методы полезны, когда данные диаграммы необходимо обновлять в режиме реального времени.
Add
— Добавляет новую точку данных в конец массива данных.UpdateValue
— Изменяет точку данных в определенной позиции.RemoveFromStart
— Удаляет указанное количество точек данных с самого начала.Clear
— Очищает все данные.
Цвет и толщина свечей¶
Используйте свойства Color
и ReductionColor
в CartesianCandlestickSeriesView
, чтобы указать цвета свечей:
CartesianCandlestickSeriesView.Color
— Указывает цвет, которым будут рисовать свечи, цена закрытия которых выше или равна цене открытия.CartesianCandlestickSeriesView.ReductionColor
— Указывает цвет, которым будут рисовать свечи, цена закрытия которых ниже цены открытия.
Следующие свойства позволяют вам настроить толщину свечей:
-
CandleWidth
— Двойное значение, определяющее толщину сплошной панели свечи. Значение свойстваCandleWidth
измеряется в единицах измерения по оси. В представлении серии свечей используется ось дата-время. Единица измерения его оси определяется свойствомDateTimeScaleOptions.MeasureUnit
. Например, если свойствуMeasureUnit
присвоено значениеDay
, единица измерения оси устанавливается равной расстоянию между двумя соседними днями вдоль оси дата-время. Когда свойствуCandleWidth
присвоено значение0.5
, ширина свечи устанавливается равной половине расстояния между двумя соседними днями. -
Thickness
— Двойное значение, которое определяет толщину "усиков" свечи. Значение этого свойства измеряется в пикселях.
Оси¶
Как и в случае с другими представлениями рядов, вы можете настроить оси для типа свечного графика, используя свойства CartesianChart.AxesX
и CartesianChart.AxesY
. На оси X свечного графика отображаются значения даты и времени. Чтобы настроить свойства масштаба оси X, свойство AxisX.ScaleOptions
должно быть присвоено объекту DateTimeScaleOptions
.
Следующий фрагмент кода создает контрол CartesianChart
с представлением серии свечей и настраивает оси графика. Смотрите демонстрацию графика "Candlestick" для получения полного примера.
<mxc:CartesianChart Grid.Row="1" Classes="DemoChart" x:Name="DemoControl">
<mxc:CartesianSeries DataAdapter="{Binding StockData}">
<mxc:CartesianCandlestickSeriesView Color="#00787A" ReductionColor="#BD1436" />
</mxc:CartesianSeries>
<mxc:CartesianChart.AxesX>
<mxc:AxisX ShowTitle="False">
<mxc:AxisXRange MinSideMargin="0.01" MaxSideMargin="0.01" VisualMax="" />
<mxc:AxisX.ScaleOptions>
<mxc:DateTimeScaleOptions MeasureUnit="Day" />
</mxc:AxisX.ScaleOptions>
</mxc:AxisX>
</mxc:CartesianChart.AxesX>
<mxc:CartesianChart.AxesY>
<mxc:AxisY Title="Price" Position="Far" Key="Price">
<mxc:AxisYRange AlwaysShowZeroLevel="False" />
</mxc:AxisY>
</mxc:CartesianChart.AxesY>
</mxc:CartesianChart>
Обратитесь к следующему разделу для получения дополнительной информации о настройке диапазона осей, свойствах масштаба и метках: Декартова диаграмма - оси .
* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.