iTP开发手册.docx
- 文档编号:18134525
- 上传时间:2023-08-13
- 格式:DOCX
- 页数:13
- 大小:348.33KB
iTP开发手册.docx
《iTP开发手册.docx》由会员分享,可在线阅读,更多相关《iTP开发手册.docx(13页珍藏版)》请在冰点文库上搜索。
iTP开发手册
iTP策略开发手册
1概述
1.1编写目的
制定本手册的主要目的是规范iTP策略开发流程和规范,提高生成策略模块接口实现、数据交换的一致性,减少因为模块工程参数设置引起的问题,从而提高策略开发的效率。
1.2开发环境
开发工具:
MicrosoftVisualStudio系列
开发语言:
C++
策略模块:
动态库
加载方式:
动态加载策略动态库
1.3接口文件
其中,基础策略开发接口为ITPInterface.h和IiTPUnknown.h两个文件,iTPDataType.h是相应的数据定义,而StrategyBase.h和StrategyBase.cpp文件是对接口文件进行简单封装,便于策略开发者实现接口。
1.4其他说明
本文档是采用VisualStudio2008英文版环境进行截屏处理的,而开发插件本身跟VisualStudio的版本并无太大关系。
策略发布时,需要带上环境对应的库文件(系统库文件以及策略模块直接使用的库文件)即可。
由于智能交易系统是在VisualStudio2008+SP1环境下,采用多字节方式进行发布,因此如果策略是在该环境下发布的,则只需要直接将策略动态库本身以及其直接使用的动态库放到运行目录下即可,不需要再携带系统库文件。
2导出接口
创建策略实例接口
导出接口
IStrategyInterface*WINAPICreateStrategyObj()
接口描述
由iTP引擎负责调用,企图从模块中获取对应的策略实例操作接口。
该策略实例类必须继承IStrategyInterface。
获取模块名称接口
导出接口
UINTWINAPIGetStrategyName(char*pszName,UINTnLen)
接口描述
pszName:
存储操作成功后返回的策略模块名称信息内存块地址
nLen:
内存块的有效长度
由iTP引擎负责调用,企图从模块中获取该模块的唯一名称。
获取模块作者接口
导出接口
UINTWINAPIGetStrategyAuthor(char*pszName,UINTnLen)
接口描述
pszName:
存储操作成功后返回的策略模块作者信息内存块地址
nLen:
内存块的有效长度
由iTP引擎负责调用,企图从模块中获取该模块的作者信息
获取模块版本接口
导出接口
UINTWINAPIGetStrategyVersion(char*pszVersion,UINTnLen)
接口描述
pszVersion:
存储操作成功后返回的策略模块版本信息内存块地址
nLen:
内存块的有效长度
由iTP引擎负责调用,企图从模块中获取该模块的版本信息
获取模块描述信息接口
导出接口
UINTWINAPIGetStrategyInstruction(char*pszInstruction,UINTnLen)
接口描述
pszInstruction:
存储操作成功后返回的策略模块文字描述信息内存块地址
nLen:
内存块的有效长度
由iTP引擎负责调用,企图从模块中获取该模块的文字描述信息
获取模块唯一ID接口
导出接口
UINTWINAPIGetStrategyIdentifier(char*pszIdentifier,UINTnLen)
接口描述
pszInstruction:
存储操作成功后返回的策略模块唯一ID信息内存块地址,ID编码规则一般建议是用GUID形式,可以用VS的GUIDGenerator创建。
nLen:
内存块的有效长度
由iTP引擎负责调用,企图从模块中获取该模块的唯一ID信息
回测开关接口
导出接口
UINTWINAPIEnableBackTest()
接口描述
由iTP引擎负责调用,查询模块是否支持回测。
返回0表示不支持,非0表示支持回测。
3开发步骤
3.1搭建开发环境
1.安装最新版本投资赢家智能交易版本终端,例如安装到D:
\投资赢家金融理财终端5.0(智能交易版)。
2.通过VisualStudioIDE新建开发解决方案。
建立解决方案的目的是统一管理后续的策略动态库,并提高编写代码的复用性。
也可以跳过这一步直接建立项目。
3.将iTP对外导出接口复制到开发解决方案所在的文件夹内
3.2建立策略动态库
1.在解决方案中添加一个新的项目,选择MFCDLL,输入项目名称
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策略运行常见的回调接口
策略启动时的回调,用户可以在这个函数里完成一些策略启动时需要的工作
virtualintStrategy_OnStart(IiTPInterface*piTP);
策略停止是的回调,用户可以在这个函数里完成一些策略停止时所需的工作,
例如保存状态、保存数据等。
virtualintStrategy_OnStop(IiTPInterface*piTP);
行情回调接口,所有的行情数据到达时都会调用这个接口
virtualintStrategy_OnBar(IiTPInterface*piTP,IiTPKLineList*plstKLines);
委托应答回调
virtualintStrategy_OnOrder(IiTPInterface*piTP,IiTPTradeSignal*pSignal);
异步查询回调
virtualintStrategy_OnNotify(IiTPInterface*piTP,intnNotifyID,intParam);
打开策略参数界面时回调的接口
virtualintStrategy_SetParam(IiTPParam*pParam);
修改策略参数后,点击确定,关闭策略参数界面时回调的接口
virtualintStrategy_GetParam(IiTPParam*pParam);
获取账户类型信息的回调接口
virtualintStrategy_GetAccountInfo(IiTPAccountCollect*pCollect);
具体的实现和用法,可以参考范例程序Example,建议在微软VisualStudio2008及更新的版本中用调试模式单步执行范例策略Example,获取更多策略接口调用相关的信息。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- iTP 开发 手册