Giter Site home page Giter Site logo

java-ctpapi's Introduction

一、简介

此JAVA-CTPAPI是用swig方法在官方C++ API上编译得到,完全开源,有兴趣可以参考笔者文章《CTP JAVA API(JCTP)编译(利用Swig封装C++动态库)windows版》或文章《CTP JAVA API(JCTP) 64位 2in1及CTP JAVA订阅全市场行情DEMO》自行编译实现。此方法编译得到的API在数据结构,参数名,函数名及用法上与C++版API完全一致,可以参考官方开发文档,十分容易上手。 编译维护不易,欢迎大家star, fork鼓励。

二、文件清单

  • 6.3.13_20181119
    穿透式评测版,用于正式生产接入前期货公司评测,和官方C++ API一一对应。穿透式流程详见文章《什么是穿透式监管,需要投资者做什么?》
  • 6.3.13_20181119_2_in_1
    官方C++ API分为行情API和交易API两个,有一些共同的头文件,单独封装后java文件有不少重复。这个版本将两个API封装到一个jar包中,去除了重复文件。
    如果需要单独使用交易或者行情API,可以用上个文件夹中的单独版本。如果交易行情都需要用,可以考虑使用这个版本。
  • 6.3.15_20190220 及 6.3.15_20190220_2_in_1
    文件夹的区分同上面6.3.13版本。这个版本是最新的穿透式生产版本,正式接入交易使用。对接simnow也使用此版本
  • v6.6.1_P1_20210406 及 v6.6.1_P1_CP_20210406 是最新版本的生产及测试API,会比上面老版本API新增一些函数(具体见官方chm文档),当然老版本API依然兼容可以正常使用。
  • demo
    使用6.3.15_20190220版本,是windows下eclipse工程。
    mdapi中提供了链接,登录,订阅1个合约,收取行情功能。
    tradeapi中提供了链接,认证(即穿透式监管),登录,确认结算单,下单功能。
  • 2in1demo
    使用6.3.15_20190220_2_in_1版本,是windows下eclipse工程。
    demo提供了交易api认证登录,查询全部合约,行情api订阅全部合约行情,收取行情的功能。
    注意:demo使用时需要正确替换demo中userid,password等信息。

三、常见问题

1. "java.lang.UnsatisfiedLinkError: no thostmduserapi in java.library.path"

将动态库拷贝到你电脑环境变量path路径底下,如果自己不清楚,可以在Java中用如下代码获得

System.out.println(System.getProperty("java.library.path"));

2. "UnsatisfiedLinkError: ...thostmduserapi_wrap.dll: Can't find dependent libraries"

windows下wrap.dll本身依赖vs再编译时的一些dll,可以使用dll依赖工具看下依赖下载,一般是缺msvcr120.dll。或者直接百度搜索"微软常用运行库合集64位"安装。

3."UnsatisfiedLinkError: ... .thosttradeapiJNI.swig_module_init()V"

swig命令生成时指定的jar包路径要与实际使用中,java工程中jar包import路径一致。

4.订阅成功但是没收到行情

参见《CTP程序化交易入门系列之四:行情订阅常见问题解答》

四、欢迎交流

欢迎扫二维码关注或者搜索程序化交易入门(QuantRoad2019),一起学习程序化交易! image

QQ交流群(767101469),一起讨论程序化交易!
image

java-ctpapi's People

Contributors

nicai0609 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

java-ctpapi's Issues

打jar包失败

idea开发环境,idea运行正常,打jar包时报错:程序包ctp.thostmduserapi不存在

makefile

能不能把交易、行情的包打一块的Makefile发一下

Demo启动即报错 java.lang.NoSuchMethodError

Exception in thread "main" java.lang.NoSuchMethodError: SwigDirector_CThostFtdcMdSpi_OnRspQryMulticastInstrument
at ctp.thostapi.thosttraderapiJNI.swig_module_init(Native Method)
at ctp.thostapi.thosttraderapiJNI.(thosttraderapiJNI.java:10453)
at ctp.thostapi.CThostFtdcTraderApi.CreateFtdcTraderApi(CThostFtdcTraderApi.java:35)
at ctpapi.ctpdemo.main(ctpdemo.java:214)

查询结算单会丢失部分数据

查询结算单ReqQrySettlementInfo的响应OnRspQrySettlementInfo中,一般会拆成多份,最后 一个的bIsLast是true其它的是false。

但是每次都有一些内容为空。比如有5个响应,本来是想将这5个响应的Content拼成一个,但是一般总是有几个Content为null。拼出来的结算单与其它第三方软件(比如金字塔)中看到的不一样。一般会丢失第2个或第3个。

按理说其它第三方软件也是用的这个接口,既然它们能显示正常的结算单,说明证券公司返回的是没有问题的。

不会C++,不知道原始的C++接口中会不会有这种情况。

SWIG 回调Java每次都创建新线程

示例跑的的就是自带demo,加了Auth验证,用的6.3.13二合一办测试的,6.3.15也一样,如下log所示,每次回调都会创建新线程,请问有什么好办法解决么?
Thread-0: On Trade Front Connected
Send auth ok
Thread-1:Auth success, continue do login.
Send login ok
Thread-2:Login ErrorID[3] ErrMsg[CTP:不合法的登录]
Thread-3:On MD Front Connected
Thread-4:Brokerid[]

Aborted (core dumped) 问题

docker 环境,jdk1.8 api6.3版本,经常宕机。
log:

A fatal error has been detected by the Java Runtime Environment:

SIGSEGV (0xb) at pc=0x00007f8324000108, pid=7, tid=0x00007f8478dfa700

JRE version: Java(TM) SE Runtime Environment (8.0_112-b15) (build 1.8.0_112-b15)

Java VM: Java HotSpot(TM) 64-Bit Server VM (25.112-b15 mixed mode linux-amd64 compressed oops)

Problematic frame:

C 0x00007f8324000108

Core dump written. Default location: /root/core or core.7

An error report file with more information is saved as:

/root/hs_err_pid7.log

If you would like to submit a bug report, please visit:

http://bugreport.java.com/bugreport/crash.jsp

Aborted (core dumped)

行情价格多出小数部分

某些合约如ru2305,买1卖1最新价,会多出小数部分。
之后使用c++的行情工具去验证发现并无此情况。
`
instrumentid,last_price,bid_price1,ask_price1

ru2305,12910.000000000002,12910.000000000002,12915.000000000002
`

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.