交易相关论文范文检索 跟数据和交易独立的期货程序化交易系统设计有关论文范文检索

此文是一篇交易论文范文,为你的毕业论文写作提供有价值的参考。

数据和交易独立的期货程序化交易系统设计

一、概述

程序化交易在国外金融市场中已经不是新鲜产物,2010年沪深300 股票指数期货合约在中金所的上市[1],标志着我国的程序化交易环境起步.之后的几年间,程序化交易在我国得到极大发展,尤其是在期货市场,由于其T+0 的交易周期和允许双向买卖等特性,已经有很多成熟的程序化交易系统在运行.其中有采用第三方平台的,也有独立开发系统的.当前期货市场中存在的各种程序化交易系统,整体可分为通用型和专用型两大类.通用型交易系统是指由专业软件公司开发的,供各类用户使用的程序化交易系统.这类系统可以提供给用户比较基础的功能,例如行情数据获取、行情的图形化显示、用户的维护等等.另外这类系统一般都提供专用的策略编写语言,让用户可以根据自己的思想编写特定的交易策略,并最终提交系统来完成交易行为.这类系统目前在国内市场比较流行的有文华财经的赢智、开拓者的Tradeblazer、新博庭的King Trader 等.专用型系统,指的是根据用户的需要,从底层开发一套完全独立的完整系统,能实现用户非常独特的交易策略和操作需求.两类系统各有优缺点,也有各自的适用范围.

本文讨论了一种结构新颖,功能完善的期货程序化交易平台的设计.该平台结合了上述两类系统的优点,应用范围更加广泛,不同用户可在该平台之上部署各自开发的不同类型交易策略,尤其适合于日内交易.该交易平台最大的特点是其行情数据的获取和交易操作行为彼此独立,其中行情数据由第三方通用平台获取,而交易行为则由专门开发的专用程序进行.该平台第二个特点是模块化,整体分为三大模块:数据端、交易端和通信模块.

数据端负责从第三方通用平台获取行情数据,交易端负责进行行情数据的分析判断,产生交易信号,执行交易动作等.交易端又可细分为数据管理、交易管理、风险管理、日志管理等几大模块,分别完成不同的功能.数据端和交易端之间有独立的通信模块,负责完成两者之间的数据通信.目前该平台已经开发完成,其上运行着作者团队开发的若干策略,实际运行效果良好.

从软件的扩展性、易获得性、数据的准确性、性价比等方面考虑,本文以King Trader 作为第三方通用系统数据源.当然我们的系统具有很强的扩展性,可以很容易的移植到别的第三方行情软件中.

二、基本结构

本系统整体上包括数据端模块,交易端模块两个核心模块,和辅助的通讯模块.

系统最大的特点就是行情数据的获取和交易行为两者之间的独立,这种结构是精心设计,并有很强优点的.这种划分可以让系统的两大模块彼此独立,极大的提高了程序的可扩展性.行情数据的获取,可以通过任何一种第三方通用软件获得,也可以采用某些柜台商直接提供的行情数据接口获得.而交易端,考虑到交易策略的复杂性和多样性,本系统采取了单独开发的独立程序完成所有交易行为.

系统中采用King Trader 作为第三方数据源,一个重要原因是该软件提供很强大的公式脚本语言“金语言”[2],以及对应的开发环境“金魔方”.我们可以利用金语言完成策略的编写和测试工作,这样就在真正开发策略之前,有机会进行策略的分析 和检讨.甚至可以直接利用其提供的“金魔方”编译平台进行策略的运行和交易.当然,金语言进行策略编写的能力有限,不能完全满足用户的个性化要求,因此我们有必要单独开发独立的交易端.但是作为数据端,KingTrader 还是足够优秀的.

使用King Trader 的另外一个原因是,他对dll 控件的支持性较好,这就给我们提供了利用dll 开发通信模块的可能性.King Trader 运行用户安装第三方dll 动态链接库控件,并提供MYMACLOSE 和my_ma2 两个dll 回调函数接口.我们可以在dll 中完成数据通信功能的编写.

在交易端,我们采用了量投科技有限公司提供的QDP作为底层的API 接口.首先,QDP 提供完备的行情数据接口和交易接口,并默认支持C++ 语音.这给交易系统的开发带来极大的便利.其次,QDP 具有很多其他优点,例如低延迟、交易所内部直连、开发接口等等.使用QDP 不但能满足当前系统的需求,也为今后开发完全独立的交易平台打下基础.

三、数据端模块

King Trader 提供一种强大的公式脚本语言“金语言”,我们可以利用金语言编写小程序,进行策略的测试工作.金语言编写的小程序称为“指标”,指标可以在King Trader 程序中直接加载到某个期货合约的K 线图上运行,并根据实时行情进行判断,产生交易信号,进而进行交易行为.当然,在我们真实系统中,交易信号的产生和交易行为的实际运行都是在交易端进行的.

与“金语言”配套使用的开发环境称为“金魔方”,这也是一个功能很强大的策略编写、模拟、评测、运行的综合平台.金魔方中提供的最小行情单位为tick 数据,即每0.5秒推送一条行情数据.为了获得更精确的行情数据,金魔方还提供插值算法,模拟分笔数据,因此在金魔方中可以评测短线策略、K 线内策略,甚至高频策略,达到媲美实战的效果.

“金语言”对dll 控件的支持性顾非常好,因此具有和很强的扩展性.市场上一些其他交易软件也能支持dll 控件,但是一般都会预先限定DLL 的输入参数.而金语言则同时支持限定输入参数的方式,也支持用户描述的方式.也就是说,用户只需在金语言编写的指标中,写清dll 回调函数的原形声明,就能使用任意形式的DLL 回调函数,甚至包括Windows Api 中的函数.

四、交易端模块

交易端模块整体开发采用C++ 语言,并选择QDP 作为底层API 接口.QDP 同时提供行情数据接口和交易接口,每种接口提供两个封装好的类,分别命名为API 类和SPI 类.其中API 类封装了一系列函数,允许用户在代码中调用,以完成不同的操作.例如调用ReqOrderInsert 方法可以完成报单的录入操作,调用ReqOrderAction 方法可以完成撤单操作等.而在SPI 类中则封装了一系列回调函数,这些函数不允许用户代码调用,而是被QDP 的服务器自动调用,以完成对用户不同操作请求的响应.例如, OnRspOrderInsert 方法被QDP 服务器回调,用来响应用户的ReqOrderInsert 报单操作,OnRspOrderAction 方法被QDP 服务器回调,用来响应用户的ReqOrderAction 撤单操作等.用户可以通过继承SPI 类,并重写所需的回调函数的方式,来完成用户特定的需求.

下面分别讨论一下交易端模块的几个重要子模块.

策略管理子模块的最核心功能就是执行用户编写的策略,并产生交易信号.本系统允许用户编写不同的策略,并同时运行.因此,策略管理子模块很显然需要支持多线程.每条线程首先都要接受从数据端传过来的实时行情数据,并按照策略算法进行判断,判断买入点和卖出点,进而产生交易信号.策略管理子模块还应该允许用户对策略进行历史数据回测,这也是一个核心功能.历史数据回测的结果会作为策略评测的重要组成部分.另外该子模块还应该提供策略存档、发布、加密等功能,以便实现投资产品的规模化运行.

交易管理子模块的主要功能,是根据从策略管理子模块传过来的交易信号进行交易行为,具体包括:报单录入、报单撤销、报单查询等操作.该模块是整个系统中真正进行交易行为的模块,要具有很高的抗风性性能.另外很多策略的性能好坏与交易动作的执行效率密切相关,尤其是高频策略,所以本模块的具体执行算法很大程序决定了策略的盈利性能.

数据管理也是非常重要的功能之一.首先,任何一种交易软件都需要维护本地行情数据,这是一笔宝贵的财富,可以进行各种策略的测试.其次在系统运行过程中还有很多重要数据需要维护,例如各个合约的持仓数据,已经撤单数量,账户资金数据等等.

风险管理是系统必不可少的环节,可以说,所有的交易系统风险控制是底线.任何一种策略,无论盈利能力多高,回撤率高的话,也很有可能造成一次亏损就会让一年的盈利化为泡影,所以风险管控非常重要.风险管控整体可以分为两大类,第一类是交易所层面的限制,例如每秒最多允许的报单数,每个品种最多允许的撤单数等等.一旦违背这些规则,轻则禁止交易,重则停业整顿,所以万不可大意.第二类重要的风险则来之于不同的策略本身.例如对于日内策略,一般在停盘前一段时间(例如5 分钟)禁止进行开仓操作,或者要进行强制的平仓操作等等.

五、总结

本文总结了一种行情数据的获取和交易行为独立的期货程序化交易平台的设计,该平台最大的优点是具有很强的灵活性.数据端可以选择不同的第三方软件,甚至可以同时选择不同软件作为备份.交易端则是利用C++ 开发的独立程序,可以完成任意用户独特的策略需求.第二个重要优势则是具有很强的安全性,这对于资金量大的组织而言非常重要.所有交易行为在独立的交易端中进行,不会与行情软件发生关系,不会被第三方获取.行情数据可以同时连接多个接口,如果数据出错,会有天然的备份.这些都带来了极大的安全性.当然,本系统也有一定的局限性,这些都有待后续工作中改善.例如数据获取也可以用QDP 编程实现,这样可以进一步提高系统的安全性.另外现在策略编写使用的是C++语言,具有一定的技术门槛.今后为了更好的推广本系统的使用范围,应该提供一种简易语言,使非程序员客户也能顺利的使用本系统.

交易论文范文结:

适合交易论文写作的大学硕士及相关本科毕业论文,相关交易开题报告范文和学术职称论文参考文献下载。