Skip to content

Серия Японские Свечи

Используйте представление серии свечей (CartesianCandlestickSeriesView) в контроле CartesianChart, чтобы создать финансовую диаграмму, которая показывает движение цены актива. Точки данных отображают максимальную, низкую цены открытия и закрытия ценной бумаги за определенный период.

chart-views-candlestick

Каждая точка данных отображается в виде подсвечника (или свечи), который состоит из сплошной панели и двух усиков, которые могут выходить за пределы сплошной панели. Верхнее и нижнее значения сплошной панели определяют цены открытия и закрытия, в то время как усики указывают высокие и низкие цены.

chart-candlestick-prices

Для рисовать свечи используются два цвета. Если цена закрытия выше цены открытия, свеча отрисована в один цвет. В противном случае свеча отрисована в другой цвет. Например, на картинке выше восходящая свеча отрисована зеленым цветом, а нисходящая свеча отрисована красным. С помощью представления серии свечей вы можете задать пользовательские цвета для восходящих и нисходящих свечей.

Следующий фрагмент кода из демонстрационного графика "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 — Указывает цвет, которым будут рисовать свечи, цена закрытия которых ниже цены открытия.

chart-candlestick-colors

Следующие свойства позволяют вам настроить толщину свечей:

  • CandleWidth — Двойное значение, определяющее толщину сплошной панели свечи. Значение свойства CandleWidth измеряется в единицах измерения по оси. В представлении серии свечей используется ось дата-время. Единица измерения его оси определяется свойством DateTimeScaleOptions.MeasureUnit. Например, если свойству MeasureUnit присвоено значение Day, единица измерения оси устанавливается равной расстоянию между двумя соседними днями вдоль оси дата-время. Когда свойству CandleWidth присвоено значение 0.5, ширина свечи устанавливается равной половине расстояния между двумя соседними днями.

  • Thickness — Двойное значение, которое определяет толщину "усиков" свечи. Значение этого свойства измеряется в пикселях.

chart-candlestick-widths

Оси

Как и в случае с другими представлениями рядов, вы можете настроить оси для типа свечного графика, используя свойства 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>

Обратитесь к следующему разделу для получения дополнительной информации о настройке диапазона осей, свойствах масштаба и метках: Декартова диаграмма - оси .



* Эта страница была создана автоматически с помощью сервиса машинного перевода Яндекс Переводчик.