首先是行情数据:
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; //标示信号的价格位置
}