Financial Chart
Financial Chart 金融图表
金融图表用于证券、期货、交易监控和行情分析场景。当前公开控件类为 UIGQFinancialChart,支持 K 线、分时走势和成交量三种显示模式。
类继承关系
QWidget
└─ QOpenGLWidget
└─ UIGQChartBase
└─ UIGQFinancialChart + IUIGQWidgetBase
UIGQFinancialChart 继承 ChartKit 的主题、动画、图例、tooltip 和 hover 能力,并通过 IUIGQWidgetBase 接入 Qt-UI 控件体系。
图表类型
| 类型 | 枚举 | 说明 |
|---|---|---|
| K 线图 | kFinancialCandlestick |
展示开盘、收盘、最高、最低价格。 |
| 分时图 | kFinancialTimeSharing |
展示盘中价格走势和均价参考线。 |
| 成交量图 | kFinancialVolume |
展示成交量柱图,并使用涨跌方向色。 |
数据结构
struct UIGQFinancialKLineData
{
QString time;
double open;
double close;
double high;
double low;
double volume;
};
struct UIGQFinancialMinuteData
{
QString time;
double price;
double averagePrice;
double volume;
};
常用接口
| 方法 | 说明 | 参数 | 返回值 |
|---|---|---|---|
setChartType(UIGQFinancialChartType type) |
设置金融图表显示类型。 | type:K 线、分时或成交量枚举。 |
void |
getChartType() |
读取当前金融图表类型。 | 无。 | UIGQFinancialChartType |
setKLineData(const QVector<UIGQFinancialKLineData>& data) |
设置 K 线和成交量数据。 | data:OHLCV 数据数组。 |
void |
getKLineData() |
读取当前 K 线数据。 | 无。 | QVector<UIGQFinancialKLineData> |
setMinuteData(const QVector<UIGQFinancialMinuteData>& data) |
设置分时走势数据。 | data:分时价格和成交量数据。 |
void |
getMinuteData() |
读取当前分时数据。 | 无。 | QVector<UIGQFinancialMinuteData> |
setMovingAverageVisible(bool visible) |
控制均线显示。 | visible:是否显示。 |
void |
setMovingAveragePeriods(const QVector<int>& periods) |
设置均线周期。 | periods:如 {5, 10, 20}。 |
void |
setRangeSliderVisible(bool visible) |
控制底部范围选择器显示。 | visible:是否显示。 |
void |
setVisibleRange(double startRatio, double endRatio) |
设置可见数据范围。 | startRatio/endRatio:0 到 1 的比例。 |
void |
K 线图示例
using namespace UIGQtLib;
auto* chart = new UIGQFinancialChart(parent);
chart->setTitle("SSE 50 K Line");
chart->setChartType(kFinancialCandlestick);
QVector<UIGQFinancialKLineData> data;
data << UIGQFinancialKLineData{ "06-20", 2890.0, 2912.0, 2920.0, 2886.0, 235000 };
data << UIGQFinancialKLineData{ "06-21", 2912.0, 2905.0, 2928.0, 2898.0, 198000 };
chart->setKLineData(data);
chart->setMovingAverageVisible(true);
chart->setMovingAveragePeriods({5, 10, 20});
chart->setTooltipMode(kChartTooltipItem);
chart->setRangeSliderVisible(true);
chart->setThemePreset(kChartThemeDark);
分时图示例
auto* chart = new UIGQFinancialChart(parent);
chart->setTitle("Intraday Price");
chart->setChartType(kFinancialTimeSharing);
QVector<UIGQFinancialMinuteData> minuteData;
minuteData << UIGQFinancialMinuteData{ "09:30", 2910.2, 2910.2, 120000 };
minuteData << UIGQFinancialMinuteData{ "09:35", 2914.8, 2912.5, 180000 };
chart->setMinuteData(minuteData);
chart->setTooltipVisible(true);
chart->setHoverEnabled(true);
使用建议
- K 线图和成交量图使用
setKLineData(...)。 - 分时图使用
setMinuteData(...)。 - 实时行情刷新时重新设置数据后调用
restartAnimation()。 - 数据量较大时建议开启范围选择器,只显示当前分析窗口。