简要背景:
我正在尝试使用QCustomPlot 1.3 beta 版绘制股票烛台图。我跳过了库的代码,发现对于时间序列,它使用了 type-def (qcustomplot.h:line 3140)
typedef QMap<double, QCPFinancialData> QCPFinancialDataMap;
QCPFinancialData在哪里(qcustomplot.h:line 3124)
class QCP_LIB_DECL QCPFinancialData
{
public:
QCPFinancialData();
QCPFinancialData(double key, double open, double high, double low, double close);
double key, open, high, low, close;
};
因此,OHLC 数据显然在那里,并且该类使用 QMap 中使用的键来索引时间序列条目。
因此,显而易见的关键是日期时间(我正在绘制日终图表,所以每个条目只是一个日期,没有使用时间)。在我的解析代码中,我使用过
boost::gregorian::date
因为它有很多优点(从字符串转换、计算经过的日期时间等)。
问题是,我是否应该继续简单地将 boost::gregorian::date 转换为 unix 时间戳,然后将该时间戳记录为双精度?我在 github 上找到了一个小模板函数,可以将其转换为time_t类型,但我猜在这种情况下 double 应该不是问题,或者这是一个潜在的错误?AFAIK,Unix时间戳表示自1970年1月1日以来的秒数,当表示为双精度时,对于键来说应该绰绰有余?
在 QCustomPlot 的示例中,它们从时间序列序列(例如,开始日期)开始使用累加器/计数器,而不是时间戳。