前言
非常感谢 景色 的ctp 封装包。用java 调用ctp 相关的接口 主要还是参考 景色的 两个文章。
这里只是记录下,在使用的过程中遇到的问题与自己踩过的坑。
https://blog.csdn.net/pjjing/article/details/53186394
https://blog.csdn.net/pjjing/article/details/85063988
1、 dll 或者so 不能找到
dll与so 文件需要放置到 jre 目录中,不建议放到其他的位置。
window: %JAVA_HOME%\jre\bin
eg: D:\Program Files\Java\jdk1.8.0_211\jre\bin
linux : $JAVA_HOME/jre/lib/amd64
eg: /usr/java/jdk1.8.0_212-amd64/jre/lib/amd64/
dll 文件与so 文件直接复制到上述的地址总,不要修改文件名,不要新建目录。
2、window下 加载wrap.dll 文件的时候 没有找到 依赖库
安装 vs_redist
vs_redist 合并包: [MSVBcrtAio_v20190720.zip](http://8dx.pc6.com/xjq6/MSVBcrtAio_v20190720.zip)
3、front url 地址:
1、simnow 地址
---simnow地址---:
第一组:Trade Front:180.168.146.187:10100,Market Front:180.168.146.187:10110;电信 (看穿式前置,API同生产v6.3.15_20190220)
第二组:Trade Front:180.168.146.187:10101,Market Front:180.168.146.187:10111;电信 (看穿式前置,API同生产v6.3.15_20190220)
第三组:Trade Front:218.202.237.33 :10102,Market Front:218.202.237.33 :10112;移动 (看穿式前置,API同生产v6.3.15_20190220)
"7*24小时"环境(不一定真的7*24):Trade:180.168.146.187:10130,market:180.168.146.187:10131 (看穿式前置,API同生产v6.3.15_20190220)
2、 ctp 地址
可以下载ctp 的官方软件,在软件中找到broker.xml 文件。
4、CThostFtdcMdApi 问题需要使用单独的线程启动,并且在该线程中init and join。
**具体的demo ,参见 景色 的demo **
demo 中的启动方式是挂起了主线程,在实际的项目中不能适用,在项目中需要单独启动一个线程,并且
CThostFtdcMdApi mdApi = CThostFtdcMdApi.CreateFtdcMdApi("md");
Thread thread = new Thread(() -> {
MdspiImpl mdspiImpl = new MdspiImpl(mdApi);
mdApi.RegisterSpi(mdspiImpl);
mdApi.RegisterFront("tcp://218.202.237.33:10112");
mdApi.Init();
mdApi.Join();
});
thread.setName("CTP-MD-API");
thread.start();
5、 运行的过程中,出现崩溃, 或者是 null upcall object 等错误
参见问题4 。
6、其他
要保证所有的OnRsp 的回调中不能出错。 最后是try{ } catch(Throwable e){}