Skip to content

Candlestick и OHLC

Финансовые серии: openField / highField / lowField / closeField. Ось X — ordinal-time: каждая точка занимает бэнд, выходные не оставляют дыр.

ts
import { getData } from './data';
import type { ChartOptions } from 'grafit-charts';

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'CHRT / USD' },
    series: [{ type: 'candlestick', xField: 'date', openField: 'open', highField: 'high', lowField: 'low', closeField: 'close' }],
    axes: [
      { type: 'ordinal-time', position: 'bottom' },
      { type: 'number', position: 'right' },
    ],
    zoom: { enabled: true },
    crosshair: { enabled: true },
    legend: { enabled: false },
  };
}
ts
export function getData() {
  const start = Date.UTC(2025, 8, 1);
  const day = 24 * 60 * 60 * 1000;
  const data: Array<{ date: Date; open: number; high: number; low: number; close: number }> = [];
  let price = 250;
  for (let i = 0; i < 45; i++) {
    const weekday = new Date(start + i * day).getUTCDay();
    if (weekday === 0 || weekday === 6) continue; // ordinal-time leaves no gaps
    const drift = Math.sin(i / 6) * 3 + ((i * 11) % 7) - 3;
    const open = price;
    const close = Math.round((price + drift) * 100) / 100;
    const high = Math.max(open, close) + ((i * 5) % 4) + 1;
    const low = Math.min(open, close) - ((i * 3) % 4) - 1;
    data.push({ date: new Date(start + i * day), open, high, low, close });
    price = close;
  }
  return data;
}

OHLC-бары

ts
import { getData } from './data';
import type { ChartOptions } from 'grafit-charts';

export function createOptions(): ChartOptions {
  return {
    data: getData(),
    title: { text: 'OHLC bars' },
    series: [{ type: 'ohlc', xField: 'date', openField: 'open', highField: 'high', lowField: 'low', closeField: 'close' }],
    axes: [
      { type: 'ordinal-time', position: 'bottom' },
      { type: 'number', position: 'right' },
    ],
    legend: { enabled: false },
  };
}
ts
export function getData() {
  const start = Date.UTC(2025, 10, 3);
  const day = 24 * 60 * 60 * 1000;
  const data: Array<{ date: Date; open: number; high: number; low: number; close: number }> = [];
  let price = 88;
  for (let i = 0; i < 30; i++) {
    const weekday = new Date(start + i * day).getUTCDay();
    if (weekday === 0 || weekday === 6) continue;
    const drift = Math.cos(i / 4) * 2 + ((i * 7) % 5) - 2;
    const open = price;
    const close = Math.round((price + drift) * 100) / 100;
    data.push({
      date: new Date(start + i * day),
      open,
      high: Math.max(open, close) + 1.5,
      low: Math.min(open, close) - 1.2,
      close,
    });
    price = close;
  }
  return data;
}

Опции

Общие опции всех серий (name, showInLegend, tooltip.renderer, …) — в разделе Общие опции серий.

ОпцияТипПо умолчаниюОписание
xFieldstringдата (Date / timestamp / строка)
openFieldcloseFieldstringчетыре ключа OHLC
widthpresetразмер и тема чарта в createFinancialChart
heightpresetразмер и тема чарта в createFinancialChart
themepresetразмер и тема чарта в createFinancialChart
containerpresetконтейнер и данные createFinancialChart
datapresetконтейнер и данные createFinancialChart
dateFieldpresetdate/OHLCполя данных пресета
openFieldpresetdate/OHLCполя данных пресета
highFieldpresetdate/OHLCполя данных пресета
lowFieldpresetdate/OHLCполя данных пресета
closeFieldpresetdate/OHLCполя данных пресета
chartType'candlestick' | 'ohlc''candlestick'тип серии пресета
titlepresetвкл.прокидываются в ChartOptions
navigatorpresetвкл.прокидываются в ChartOptions
zoompresetвкл.прокидываются в ChartOptions
annotationspresetвкл.прокидываются в ChartOptions
item.up.fillColorValueзелёный темызаливка растущих свечей
item.down.fillColorValueкрасный темызаливка падающих

Financial preset

Готовая сборка одним вызовом — candlestick + ordinal-time + zoom + navigator + crosshair

  • контекстное меню:
ts
import { Charts } from 'grafit-charts';

const chart = Charts.createFinancialChart({
  container,
  data, // [{ date, open, high, low, close }]
  title: 'CHRT / USD',
  chartType: 'candlestick', // | 'ohlc'
});

Ключи переопределяются (dateField, openField, …), navigator: false / zoom: false отключают блоки, annotations пробрасываются как есть.