行情数据举例
交易系统离不开行情数据。比如,如果访问新浪的股票数据接口:
http://hq.sinajs.cn/list=sh600133,sh601005
可能会得到如下的数据:
1 | 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"; |
每只股票返回一组数据。以第一组数据为例,各数据项的含义如下:
- 东湖高新 股票名称
- 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 时间
价格和成交
上述的查询结果包含了两种不同的数据:价格(Price)和成交(Transaction)。
价格是实时数据,记录了某一时点的当前价格(price)和一系列(上面的例子中是五组)的报价(Quote)数据;其中报价又包含了买方的出价(bid)和卖方的要价(offer),通常可能表示为“0.6712/5”、“0.2345/”,“/0.4352”等。
成交是阶段数据,记录了某一个时段(上面的例子中是一天)内的开盘价(open),收盘价(close),最高价(high),最低价(low);
以及该段时间内总的成交量(volume)和成交价格(amount)。由于(开盘价,收盘价,最高价,最低价)是很常用的一种结构,比如画蜡烛图时就会使用这种结构,所以将其封装为一个值对象: OHLC 。
不管是价格信息还是成交信息,都关联到某一证券(Security)。
场景
在上面的模型中,价格和成交直接关联到时点。
实际应用中,经常会需要将一些价格或成交聚合在一起。比如,某个市场、某个板块的所有股票的价格。而这种聚合通常要指定到某个时间点才有意义。
可以把这种聚合叫做场景(Scenario),场景关联到某一时间点(TimePoint)。一个场景可以有多个场景元素(ScenarioElement),场景元素作为证券和其他因素之间的关联,聚合到与时点相关的场景中。
场景提供了一个把所有因素综合在一起的基础,从而可以很方便的在不同的情况之间进行比较。这就有较高的实用性。
比如,在跨市场套利中,可以针对不同的市场定义不同的场景,并将场景关联到指定的市场,从而在不同市场之间进行比较。
在比如在交易系统的风险管理中,可以在多种可能的情况之间进行对比分析。
有了场景和场景元素的定义,则价格和成交都是场景元素的一种实现:
多数据源
实际应用中,可能需要从多个数据源获取数据。
价格指标
通过其他场景元素计算获取