文档介绍:iTP 策略开发手册 1概述 编写目的制定本手册的主要目的是规范 iTP 策略开发流程和规范,提高生成策略模块接口实现、数据交换的一致性,减少因为模块工程参数设置引起的问题,从而提高策略开发的效率。 开发环境开发工具: Microsoft Visual Studio 系列开发语言: C++ 策略模块:动态库加载方式:动态加载策略动态库 接口文件其中,基础策略开发接口为 和 两个文件, 是相应的数据定义,而 StrategyBase. h和 文件是对接口文件进行简单封装,便于策略开发者实现接口。 其他说明本文档是采用 Visual Studio 2008 英文版环境进行截屏处理的,而开发插件本身跟 Visual Studi o 的版本并无太大关系。策略发布时,需要带上环境对应的库文件(系统库文件以及策略模块直接使用的库文件)即可。由于智能交易系统是在 Visual Studio 2008 + SP1 环境下,采用多字节方式进行发布,因此如果策略是在该环境下发布的,则只需要直接将策略动态库本身以及其直接使用的动态库放到运行目录下即可,不需要再携带系统库文件。 2 导出接口创建策略实例接口导出接口 IStrategyInterface * WINAPI CreateStrategyObj () 接口描述由 iTP 引擎负责调用,企图从模块中获取对应的策略实例操作接口。该策略实例类必须继承 IStrategyInterface 。获取模块名称接口导出接口 UINT WINAPI GetStrategyName ( char * pszName, UINT nLen) 接口描述 pszName: 存储操作成功后返回的策略模块名称信息内存块地址 nLen: 内存块的有效长度由 iTP 引擎负责调用,企图从模块中获取该模块的唯一名称。获取模块作者接口导出接口 UINT WINAPI GetStrategyAuthor ( char * pszName, UINT nLen) 接口描述 pszName: 存储操作成功后返回的策略模块作者信息内存块地址 nLen: 内存块的有效长度由 iTP 引擎负责调用,企图从模块中获取该模块的作者信息获取模块版本接口导出接口 UINT WINAPI GetStrategyVersion (char* pszVersion, UINT nLen) 接口描述 pszVersion: 存储操作成功后返回的策略模块版本信息内存块地址 nLen: 内存块的有效长度由 iTP 引擎负责调用,企图从模块中获取该模块的版本信息获取模块描述信息接口导出接口 UINT WINAPI GetStrategyInstruction ( char * pszInstruction, UINT nLen) 接口描述 pszInstruction: 存储操作成功后返回的策略模块文字描述信息内存块地址 nLen: 内存块的有效长度由 iTP 引擎负责调用,企图从模块中获取该模块的文字描述信息获取模块唯一 ID接口导出接口 UINT WINAPI GetStrategyIdentifier ( char * pszIdentifier, UINT nLen) 接口描述 pszInstruction: 存储操作成功后返回的策略模块唯一ID信息内存块地址, ID编码规则一般建议是用 GUID 形式,可以用 VS的 GUID Generator 创建。 nLen: 内存块的有效长度由 iTP 引擎负责调用,企图从模块中获取该模块的唯一 ID信息回测开关接口导出接口 UINT WINAPI EnableBackTest () 接口描述由 iTP 引擎负责调用,查询模块是否支持回测。返回 0表示不支持,非0表示支持回测。 3 开发步骤 搭建开发环境 ,例如安装到 D:\ 投资赢家金融理财终端 ( 智能交易版)。 Visual Studio IDE 新建开发解决方案。建立解决方案的目的是统一管理后续的策略动态库, 并提高编写代码的复用性。也可以跳过这一步直接建立项目。 iTP 对外导出接口复制到开发解决方案所在的文件夹内 建立策略动态库 ,选择 MFC DLL ,输入项目名称 “ Next ”,设定动态库的相关属性从图中我们可以看到动态库类型选项主要分为 MFC 规则动态库和 MFC 扩展动态库。其中 MFC 规则动态库又分为动态链接到 MFC 和静态链接到 MFC 两大类。因为我