0%

证券行情数据模型

行情数据举例

交易系统离不开行情数据。比如,如果访问新浪的股票数据接口:

http://hq.sinajs.cn/list=sh600133,sh601005

可能会得到如下的数据:

1
2
var hq_str_sh600133="东湖高新,6.01,6.01,5.91,6.07,5.80,5.92,5.93,8947052,52872049,2000,5.92,57704,5.91,191500,5.90,75000,5.89,142800,5.88,19700,5.93,43750,5.94,51600,5.95,17299,5.96,11445,5.97,2013-12-18,13:56:49,00";
var hq_str_sh601005="重庆钢铁,2.50,2.50,2.49,2.51,2.48,2.49,2.50,1505600,3764816,448800,2.49,110600,2.48,132500,2.47,206500,2.46,150300,2.45,95501,2.50,447100,2.51,110600,2.52,110800,2.53,136400,2.54,2013-12-18,13:56:49,00";

每只股票返回一组数据。以第一组数据为例,各数据项的含义如下:

  1. 东湖高新 股票名称
  2. 6.01 今日开盘价(元)
  3. 6.01 昨日收盘价(元)
  4. 5.91 当前价格(元)
  5. 6.07 今日最高价(元)
  6. 5.80 今日最低价(元)
  7. 5.92 买一(元)
  8. 5.93 卖一(元)
  9. 8947052 成交量(股)
  10. 52872049 成交金额(元)
  11. 2000 买一申报量(股)
  12. 5.92 买一出价(元)
  13. 57704 买二申报量(股)
  14. 5.91 买二出价(元)
  15. 191500 买三申报量(股)
  16. 5.90 买三出价(元)
  17. 75000 买四申报量(股)
  18. 5.89 买四出价(元)
  19. 142800 买五申报量(股)
  20. 5.88 买五出价(元)
  21. 19700 卖一申报量(股)
  22. 5.93 卖一报价(元)
  23. 43750 卖二申报量(股)
  24. 5.94 卖二报价(元)
  25. 51600 卖三申报量(股)
  26. 5.95 卖三报价(元)
  27. 17299 卖四申报量(股)
  28. 5.96 卖四报价(元)
  29. 11445 卖五申报量(股)
  30. 5.97 卖五报价(元)
  31. 2013-12-18 日期
  32. 13:56:49,00 时间

价格和成交

上述的查询结果包含了两种不同的数据:价格(Price)和成交(Transaction)。

价格是实时数据,记录了某一时点的当前价格(price)和一系列(上面的例子中是五组)的报价(Quote)数据;其中报价又包含了买方的出价(bid)和卖方的要价(offer),通常可能表示为“0.6712/5”、“0.2345/”,“/0.4352”等。

成交是阶段数据,记录了某一个时段(上面的例子中是一天)内的开盘价(open),收盘价(close),最高价(high),最低价(low);
以及该段时间内总的成交量(volume)和成交价格(amount)。由于(开盘价,收盘价,最高价,最低价)是很常用的一种结构,比如画蜡烛图时就会使用这种结构,所以将其封装为一个值对象OHLC

不管是价格信息还是成交信息,都关联到某一证券(Security)。

场景

在上面的模型中,价格和成交直接关联到时点。

实际应用中,经常会需要将一些价格或成交聚合在一起。比如,某个市场、某个板块的所有股票的价格。而这种聚合通常要指定到某个时间点才有意义。

可以把这种聚合叫做场景(Scenario),场景关联到某一时间点(TimePoint)。一个场景可以有多个场景元素(ScenarioElement),场景元素作为证券和其他因素之间的关联,聚合到与时点相关的场景中。

场景提供了一个把所有因素综合在一起的基础,从而可以很方便的在不同的情况之间进行比较。这就有较高的实用性。

比如,在跨市场套利中,可以针对不同的市场定义不同的场景,并将场景关联到指定的市场,从而在不同市场之间进行比较。

在比如在交易系统的风险管理中,可以在多种可能的情况之间进行对比分析。

有了场景和场景元素的定义,则价格和成交都是场景元素的一种实现:

多数据源

实际应用中,可能需要从多个数据源获取数据。

价格指标

通过其他场景元素计算获取