iTP开发手册.docx_第1页
iTP开发手册.docx_第2页
iTP开发手册.docx_第3页
iTP开发手册.docx_第4页
iTP开发手册.docx_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

iTP策略开发手册1 概述1.1 编写目的制定本手册的主要目的是规范iTP策略开发流程和规范,提高生成策略模块接口实现、数据交换的一致性,减少因为模块工程参数设置引起的问题,从而提高策略开发的效率。1.2 开发环境开发工具:Microsoft Visual Studio系列开发语言:C+策略模块:动态库加载方式:动态加载策略动态库1.3 接口文件其中,基础策略开发接口为 ITPInterface.h和IiTPUnknown.h两个文件,iTPDataType.h是相应的数据定义,而StrategyBase.h和StrategyBase.cpp文件是对接口文件进行简单封装,便于策略开发者实现接口。1.4 其他说明本文档是采用Visual Studio 2008 英文版环境进行截屏处理的,而开发插件本身跟Visual Studio的版本并无太大关系。策略发布时,需要带上环境对应的库文件(系统库文件以及策略模块直接使用的库文件)即可。由于智能交易系统是在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 开发步骤3.1 搭建开发环境1. 安装最新版本投资赢家智能交易版本终端,例如安装到D:投资赢家金融理财终端5.0(智能交易版)。2. 通过Visual Studio IDE新建开发解决方案。建立解决方案的目的是统一管理后续的策略动态库,并提高编写代码的复用性。也可以跳过这一步直接建立项目。3. 将iTP对外导出接口复制到开发解决方案所在的文件夹内3.2 建立策略动态库1. 在解决方案中添加一个新的项目,选择MFC DLL,输入项目名称2. 直接点击“Next”,设定动态库的相关属性从图中我们可以看到动态库类型选项主要分为MFC规则动态库和MFC扩展动态库。其中MFC规则动态库又分为动态链接到MFC和静态链接到MFC两大类。因为我们制作的策略动态库不需要提供MFC类给其他用户使用,所以我们这里选择了MFC规则动态库动态链接到MFC,其他保持默认。点击“Finish”结束向导设置工作。3. 加入iTP导出接口文件4. 设定策略测试输出目录,输出到投资赢家智能交易版安装目录下iTPStrategy文件夹内5. 设定调试运行工作目录,设定为投资赢家只能交易版安装目录6. 编写实现导出函数,导出函数和接口参见导出接口。7. 修改项目中的def文件,设定必要的导出函数接口 8. 执行编译,确定编译无误后,运行投资赢家智能交易版,加载新生成的策略模块,确认模块生成无误。注意:1. iTP智能交易系统采用多字节编译方式生成,因此为了减少编码转换性能消耗,建议策略也采用多字节编译方式生成。2. 动态库模块导出API函数是必需的,不然会导致策略模块不能被正确加载。3. 策略导出接口CreateStrategyObj()函数可能会被引擎多次调用,而引擎不负责策略对象的释放,因此需要策略开发者自己维护策略对象的释放。3.3 开发策略实现策略的实现主要分成两类: 提供给iTP引擎调用的策略事件回调接口(IStrategyInterface) iTP引擎提供给策略开发调用的各种数据、信息查询接口所以策略开发实现主要分成回调接口实现和策略本身算法实现两方面。策略事件回调接口实现1. 通过IStrategyInterface:Strategy_GetAccountInfo()接口确定本次策略支持的账户类型。账户类型参见 ITP_ACCOUNT_*宏定义。目前版本不支持一个策略实现中重复添加多个同类型帐号。添加类型代码示例:2. 通过IStrategyInterface:Strategy_OnInit()接口实现策略初始化时需要的工作。本接口仅在策略被初始化时调用。3. 通过IStrategyInterface:Strategy_OnStart()接口实现策略实例启动时必需的工作,例如注册订阅行情、初始化配置等。可以通过IiTPInterface接口获取相关信息。本接口仅在策略被启动时调用。4. 通过IStrategyInterface:Strategy_OnStop()接口实现策略被停止时必需的工作。本接口仅在策略被停止时调用。5. 通过IStrategyInterface:Strategy_OnDestory()接口实现策略被卸载时需要做的工作。本接口仅在策略被卸载时调用。6. 引擎通过IStrategyInterface:Strategy_OnBar()接口,将策略订阅的行情主推数据推送给策略。策略在该函数中可以通过计算产生交易信号,从而执行各种动作,例如计算数据、下单、撤单等。7. 引擎通过IStrategyInterface:Strategy_OnOrder()接口,将策略中委托下单后委托单的状态、信息等推送给策略。策略自己需要过滤收到的信息,仅处理由自己发起的委托单。8. 完成以上几个基础接口后,一个策略的基础功能已经具备,更多详细的功能需要参考ITPInterface.h中的各类接口进行组合使用。策略开发接口组成关系图具体的接口声明,参考ITPInterface.h中的注释和实现。4 接口说明参见ITPInterface.h文件注释4.1 范例代码的简要说明以行情订阅接口为例,进行简要说明,相应的代码在策略范例Example中。先通过QueryInterface()函数获取相应的功能接口指针,再执行相应的功能。IiTPSubscribe* pSubscribe = NULL;if (0 = m_piTPInterface-QueryInterface(ID_ITP_SUBSCRIBE, (IiTPUnknown*)&pSubscribe)if(pSubscribe)/ 增加订阅pSubscribe-Subscribe_Add(IF1212, ITP_MARKET_CFFE, ITP_KLINE_PERIOD_MINUTE1);pSubscribe-Subscribe_Add(IF1303, ITP_MARKET_CFFE, ITP_KLINE_PERIOD_MINUTE5);/ 提交pSubscribe-Subscribe_Submit();/ 订阅多个期货合约/股票代码,一次提交类IiTPUnknown,函数QueryInterface()在IiTPUnknown.h文件中定义。类IiTPSubscribe,接口ID字符串 ID_ITP_SUBSCRIBE在文件iTPInterface.h文件中定义。市场分类ID值ITP_MARKET_CFFE ,K线时间周期ITP_KLINE_PERIOD_MINUTE1在 iTPDataType.h 文件中定义。4.2 策略运行常见的回调接口策略启动时的回调,用户可以在这个函数里完成一些策略启动时需要的工作virtual int Strategy_OnStart(IiTPInterface* piTP);策略停止是的回调,用户可以在这个函数里完成一些策略停止时所需的工作,例如保存状态、保存数据等。virtual int Strategy_OnStop(IiTPInterface* piTP);行情回调接口, 所有的行情数据到达时都会调用这个接口virtual int Strategy_OnBar(IiTPInterface* piTP, IiTPKLineList* plstKLines);委托应答回调virtual int Strategy_OnOrder(IiTPInterface* piTP, IiTPTradeSignal* pSignal);异步查询回调virtual int Strategy_OnNotify(IiTPInterface* piTP, int nNotifyID, int Param);打开策略参数界面时回调的接口virtual int Strategy_SetParam(IiTPParam* pParam);修改策略参数后,点击确定,关闭策

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论