Trade:交易;发生时机:当卖家同意以某个特定价格转移一定数量的股票(或有价证券)所有权给买家
Orders:买卖盘;买家和卖家如何实现Trade(交易),这就需要一个中心市场,Stock Market(股市),掮客们汇聚股市,然后对特定的股票叫买或叫卖,比如我想以¥35.50的价格买入500股东方科技的股票,以¥65.34的价格卖出中国石油的股票,这都是买卖盘
Buy Orders(Bid Orders):买盘
Sell Orders(Ask Orders或Offer Orders):卖盘
交易发生两种情形:当买盘价格高于或等于当前最低的卖盘价格的时候,或当卖盘价格低于或等于最高的买盘价时。这个过程又叫Match(撮合),关于撮合交易系统的设计,参考这个问答
如何设计一个证券期货撮合竞价引擎?
如果提交的Order(委托或报价)不能被撮合,会发生什么事情?它会被放入一个叫Order Book(委托记录或报价单)的地方,里面有一连串的Order,这些委托会一直保存到交易人员取消或交易过期(比如当日委托闭市后)
有些委托会在部分成交后立即过期,被称作'immediate or cancel' (IOC) 或'fill and kill' (FAK),就是
按最优报价最大限度成交,不成部分系统自动撤单
这部分过期的委托不会再次进入Order Book,不管它们是否Match
Order Book(委托记录或报价单)
Order Book记录了所有的未成交的股票买卖委托,它就像一个分类广告牌,任何人都可以看到所有的买卖信息,这些记录,可以被称作book,depth,queue
Order Book中的委托的只能与新出现的一条Order进行撮合,该Order必须在Book中的最优先位置上。
Order Book中的Order是以price-time priority(价格时间优先)排序的,先委托的最高买价优先级最高,先委托的最低卖价优先级最高
一个交易的实例
买价和卖价相交,交易系统检查相交的价格然后执行相交数量的交易,买价的全部100股与卖价150股当中的100股在23.34的价格处成交,卖价的50股重新放置到Book中,
Market Quotes(市场行情)
比如最高买入价,最低卖出价,以及有多少买入卖出
Spead(价差)
最高买价(Bid)与最低卖价(Ask)之间的差异被称作Spread
买卖的价格变动必须有一定的幅度(specified increments),股票交易中最小的价格变动称为tick size,因此每支股票的最小价差就由最小变动幅度tick size指示,国内的tick size为¥0.01元,其它国家的tick size可能是其它值
Market Data(市场数据)
有几种不同等级的市场数据,数据的质量取决于粒度Granularity与详情Detail
Granularity(粒度)
指的是可观测时间间隔内的数据,快照记录的是特定时间点,比如收盘价或一天内每一分钟的市场行情
基于事件的观测在每一次有相关字段更新时被记录,比如交易更新,委托记录变动
Detail
指的是数据集中包含何种信息,有三种等级的市场数据,分别是trades, quotes and depth
tick数据
交易所收到的是tick数据,也就是分笔行情数据,也可以被称为成交明细数据。一半每秒钟两次,但如果没有行情的话,也可能没有
Trade数据
也就是交易数据,每来一个tick数据,CTP插件就会检查该tick内是否有新的交易产生,如果有的话,则组合成一个新的trade数据,trade数据中主要包括:价格和成交量。
Quote数据
也就是行情数据,每来一个tick数据,CTP插件就会组合出一个quote数据,包括:买一,卖一相关数据。
Market Depth数据
深度行情数据,每来一个tick数据,CTP期货插件就会产生两条Market Depth数据,分别包括买一价,买一量;卖一价,卖一量。
Level1
以国内沪深股市为例,十几年来level1的即时行情始终保持了6秒一次的快照刷新频率(最近几年提升为3秒),提供的买卖挂盘信息从3档变更为5档。
通常把Trade和Quote数据的更新合称为Level1,而把Depth数据的更新称作Level2
Trade Update(交易更新)
交易价格形式的更新是最简单的一种,比如每日收盘价
下面是某股市上某支股票的日收盘价样本
Date Open High Low Close Volume
2013-02-05 37.80 37.94 37.68 37.92 5683782
2013-02-04 37.38 37.61 37.33 37.48 6140610
2013-02-03 37.50 37.64 37.42 37.62 6676410
2013-02-02 37.30 37.30 37.04 37.17 6936594
2013-02-01 37.25 37.27 36.95 37.10 13737522
2013-01-31 36.90 37.22 36.82 37.16 7174644
2013-01-30 37.00 37.15 36.86 37.06 9143136
2013-01-29 36.54 36.85 36.50 36.58 5569151
在日收盘价的基础上再往前一步就是盘中交易记录(又叫tick data),也就是说某支股票一系列的记录,包含每一笔交易的详情,大概包含如下字段
- Symbol - Security symbol (e.g. BHP)证券代码
- Exchange - Exchange the trade occurred on (e.g. ASX, CXA)交易所
- Price - Transaction price交易价
- Quantity - Transaction quantity交易量
- Time - Transaction date and time (this will be in milliseconds or microseconds if it's a good dataset)交易时间
- Trade Type (Condition Codes) - What type of trade it was (e.g. standard, off-market trade report, booking purpose trade)交易类型,标准,场外,预约
Date Time Symbol Exch Price Quantity Type
20110930 11:14:24.475 FMG ASX 4.62 1000
20110930 11:14:24.475 FMG ASX 4.62 5000 XT
20110930 11:14:24.475 FMG ASX 4.62 249
20110930 11:14:24.477 FMG ASX 4.62 25722
20110930 11:14:24.480 FMG ASX 4.62 1518 XT
20110930 11:14:24.482 FMG ASX 4.62 113 XT
20110930 11:14:25.046 FMG ASX 4.62 2702
盘中交易记录通常是第三方软件供应商制作盘中K线图和技术分析,有时候用来做回测
Tick数据是指:每秒两条的快照,国内期货最细粒度就是每秒两次,时间带毫秒。
Quote Updates
一个好的行情包含
- Symbol - Security symbol (e.g. BHP)股票代号
- Exchange - Exchange the quote is from交易所
- Time - Quote update time行情更新时间
- BidPrice - Highest market bid price最高买入价
- BidQuantity - Total quantity available at market bid price买入数量
- AskPrice - Lowest market ask price最低卖出价
- AskQuantity - Total quantity available at market ask price卖出数量
- BidOrders - Number of orders at market bid price
- AskOrders - Number of orders at market ask price
Adjusted Closing Price(Adj price)已调整收盘价,参看如何计算
14:57分收盘停止挂单,15:00正式停盘,但是还有没有完成的委托买进,卖出的交易还在进行.基本上15;01才结束。这时的收盘价才是标准的---已调整收盘价。 你看见的15:00的收盘价不一定就是完全正确的,15:03以后看见的产生准确的。
========================================================================================================================
数据库存储方案
参考一个国外的方案:
Securities Master Database with MySQL and Python
创建三个表;
table1:股票代码,存放市场所有的股票
table2:行情表,存放所有股票每天的行情数据
table3:关联表,创建一个id字典,同时在table1,table2中都添加对应的id,然后table1通过table3关联出table2相关的行情数据
至少两个:
1.股票代码表
如 股票代码:10000 股票名称:浦发银行 上市日期
2.股票行情表
代码 开盘价格 收盘价格 最高价格 最低价格 日期
3.股票公司表
如10000, 公司 ,F10信息
股票基本资料表(股票代码、股票名称、简写、类别<创业板、上证、深证等>) :股票代码作主键
交易行情表(交易日期、股票代码、收盘价、开盘价、最高价、最低价、平均价、振幅、换手率、成交量(手)、成交额......):交易日期、股票代码联合作主键
一个有问题的数据库设计
http://bbs.csdn.net/topics/340231949