首先是行情数据: 1.数据服务端: 一、数据服务端负责历史数据的存放: 当客户端连接上服务器之后,首先是要告诉服务器,你需要的是哪些合约品种的行情,因为不同的交易者所需要的数据是不一样的,后续可能会把全市场的行情都传送,但就目前而言,这样的数据传输量较大,而且速度慢,如果是按流量计费的话,成本也高,所以目前来说,只针对主力合约或准主力合约的行情。 二、数据服务端的历史行情数据只提供1分钟K线数据,而且以当根Bar的开始时间作为记录(有些软件是以结束时间作为记录的)。 三、实时行情的传送也是按最新的1分钟K线数据来传送: 因为如果按Tick数据来传送的话,有可能会因为网络的问题或操作系统的问题等,如果丢失Tick数据,有可能会造成比较严重的问题,但是如果采用1分钟的K线数据,因为分钟数据本身包含的数据量是1分钟内的Tick数据的集合,所以丢失数据的严重性可能会稍轻一点。 是严格来说,数据服务器中的数据必须是最权威的,所以客户端可能需要定时同步一下服务器的行情行情数据。国内期货在日盘的10:15~10:30为休息时间,11:30或晚盘23:00或02:30的时间为收盘时间,可以选择这引起时间段,定时做一下数据更新的动作,而且客户端本身也应该建立成一个自有的数据中心。
2.客户端: 按前面所说的,第一,在休息或收盘后或开盘前,确定一个时间段,同步服务器行情数据。第二,建立自有数据中心。
配置文件: 1、数据服务器的配置(IP地址和端口) 2、交易账号信息的配置 3、交易品种的配置 4、策略元的配置
图表数据: 按我们平时使用的行情分析软件,一个图表中K线数据是必须的,但要做到即时调出指标数据的话,这个数据结构可能要妥善安排。另外,既然要做程序化的,那么一个策略加载到图表上面,应该还要把交易信号画在图表上,所以这个数据结构可能会是这个样子: struct ChartDat { BarData; //用于保存K线数据 Indicator[]; //指标数据数组 Signal[]; //策略信号 }; class BarData { float Open; //四价 float Close; float High; float Low; int Date; //日期时间交易量 int Time; int Vol; } class Indicator { string Name; //指标名称 int Range; //计算范围 Seri val; //指标值数组 } class Signal { int strategyID; //标示信号是哪个策略的 int SignalType; //标示信号类型(开/平/多/空) int SignalPosition; //标示信号的价格位置 }
|