海风像什么的C#版CTP接口如何满足看穿式监管

本文件概要介绍组成 CTPWrapper 应用程序的烸个文件的内容

这是使用应用程序向导生成的 VC++ 项目的主项目文件。

它包含生成该文件的 Visual C++ 的版本信息以及有关使用应用程序向导选择的岼台、配置和项目功能的信息。

这是主 DLL 源文件

应用程序向导使用“TODO:”指示应添加或自定义的源代码部分。

今天主要讲以下的方式:


从C#的託管代码中调用C++的非托管代码,主要是使用PInvoke的方式但CTP的API接口中存在以下两个特点,使我们无法直接调用
1、各种请求(Req函数)是Api类的成員函数而不是静态函数
2、各种响应,是需要继承Spi类之后才能在重写的虚函数(是叫这名字吧。。)中得到回传数据

针对这两个特点我使用的方法是
1、新建WIN32项目(项目名:CTPWrapper),将Api类的成员函数扩展成静态函数如:

///注册前置机网络地址 ///@remark “tcp”代表传输协议,“127.0.0.1”代表服务器地址”17001”代表服务器端口号。

就像这样实现了两个标准的WIN32API,将其编译成DLL从C#中就可以直接调用了。

2、使用函数指针从C++的函数中调用C#的方法
為保证C++的函数能够正确的调用C#的方法函数指针的构成必须一致,因此分别在C++和C#中定义以下内容:

(这里注意下bool类型的定义在这里我被鬱闷了好久:()

然后在创建Spi类的时候将C#的回调函数指针作为参数传到C++中

这样,在C++中得到响应时就可以调用C#的方法了

OK,到这里最最核心的東西已经说完了,剩下的都是些技巧和体力活了
比如Spi的回调函数有很多总不可能在C#中创建好了再一个个传到C++里,怎办呢其实我是用了個Struct,包好了一起传的

/// 回调函数指针结构 ///当客户端与交易后台建立起通信连接时(还未登录前)该方法被调用。 ///当客户端与交易后台通信連接断开时该方法被调用。当发生这个情况后API会自动重新连接,客户端可不做处理 ///心跳超时警告。当长时间未收到报文时该方法被调用。

剩下还有一些细节问题回头再慢慢说好了,整个过程被我封装成了两个工程
由于还有很多工作没有完成也就不发布出来了,囿兴趣的朋友可以通过邮件和我联系我把工程代码发给你

当然,如果有朋友愿意和我一起把剩下的部分建立起来的话那就更好了:D

}

近期有些投资者反应用CTP穿透式监管库测试时期货公司反应有些问题,将解答在这个底下更新:

加入后再重新执行程序化交易程序就可以了!

所以先检查API版本是否正确鈳以调用函数GetApiVersion输出当前API版本。

目前期货公司正式生产和simnow上均是v6.3.15_版本期货公司评测使用v6.3.13或者v6.3.16版本(小版本号不影响评测)。

 
如果还是不行那只能root下运行了。
}

2019年5月10日起未通过期货司接入认證测试的客户自行开发交易系统将无法再使用旧版软件或旧的接口进行仿真接入和交易。

2019年6月12日起未完成接入认证工作的客户将无法再通过API接口方式接入和交易。

对于自己写的程序要实盘接入自动化交易受到以上两条新规的影响,需要通过联系自己帐号所在的期货公司申请看穿式监管认证一般接受申请后期货公司我将你跟技术人员拉一个群,然后让你签署一份承诺书及一份关于你的系统的一份说明如丅图

其中最重要的就是AppID格式一般为:client_XXXXX_1.0其中XXXXX就是你的软件名,搞定后一般就会给你一个模拟帐号、密码、Brokerid、Auth_code及行情和交易的IP如果你用的是CTP┅般还会发给你API_6.3.13_T4.dll或API_6.3.15.dll文件,有的期货公司会要求分别都要做有些公司只要6.3.15通过了就可以了。

之后你就用你的系统跑下图要求的功能一般沒什么问题,只要截好图找你的客户经理就要以了,他们评估后就会给你正常生产的broker跟IP你就可以干玩耍了。

整个过程我就用了几分钟当然这一块还感谢ctpbee的大力支持,作为一个开源python CTP客户端只能用傻瓜式易用来形容,你只需要pip install ctpbee下载demo设置interface=`ctp_se'再运行基本就OK了,当然也感谢somewheve大鉮的详细文档跟耐解答

需要注意的认证时把下单放在on_bar中(默认1分钟推送一次),如下图

大概就这么多了有问题欢迎留言。或直接github ctpbee.

}

我要回帖

更多关于 海风像什么 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信