【零基础】易盛9.0API入门一:搞定开发环境(linux)

一、前言

  开始研究API了,远期目标是实现极星量化(python)运行策略,但下单通过API(C++)下单,在API上做一些简单的功能,比如条件单、止盈止损、套利等,极星量化跑策略向API下指令交易。这样做似乎有点脱了裤子放屁的感觉,但不失为一种新的尝试。

  本篇就先搞定开发环境的问题,由于一个很奇葩的原因,这里就只研究linux下的开发环境,我使用的是centos6.7。

  (因为我电脑上开发工具是VC++6.0只支持32位,但API开发包说是有32和64,实际运行发现只有64位的,所以干脆到linux环境下开发好了,反正早晚都是linux跑)

二、API开发包

  易盛API分为内盘、外盘两类,又有行情和交易两种。下载地址为:

  http://www.esunny.com.cn/index.php?a=lists&catid=49

  

  乍一看有点懵啊,实际上最上面两个“8.0API、启明星API”是内盘使用的,“3.0、9.0”是外盘使用的。9.0API又分为行情和交易两个包,都下载下来先。

  

   tradeapi是交易包、TapQuoteAPI是行情包,我们先看看交易包。

  

   第一个目录“9.0apidemo”是官方的示例代码,第二个目录“iTapTradeApi9.3.3.2”是API的lib目录,开发时就要把lib目录下的.so文件引入到工程里就可以使用API了。 

  在“iTapTradeApi9.3.3.2”目录内有.h文件和.so文件,.h文件是代码中需要include的(申明了哪些函数可以使用),而.so文件就是lib文件(里面是函数的具体实现)。

三、准备测试代码

  我们先写一段测试代码

  引入的头文件中,“stdio.h”、“string.h”、“iostream”是系统自带的库用以做字符输入输出、字符串处理等。“iTapTradeAPI.h”、“iTapAPIError.h”就是易盛API的头文件了。

  using namespace std是为了使用字符串处理函数,而using namespace ITapTrade则是要使用易盛API内的一些函数,using namespace后用起来便捷。

  代码里主要就是使用了一个GetITapTradeAPIVersion()函数,这个函数在API内有定义,如果能正常使用则开发环境就准备好了。

四、准备开发环境

  1、安装gcc-c++

  yum install -y gcc

  yum install -y gcc-c++

  2、准备lib

  在任意目录下新建一个API目录(我的是/root/API),将前面提过的.so文件全部放进去

  我这个目录里多了一些文件不用关心,确保下面这几个文件放进去了就行。

   然后在“/etc/ld.so.conf.d”新建api.conf文件,写入下面的内容:

   这一步的作用是将.so文件加入到动态链接库内,接着执行“/sbin/ldconfig”使配置生效。

五、测试代码

  将前面说的测试代码写到任意文件内,我这里是“test.c”,然后将API的.h文件跟test.c放一起。

  接着写“Makefile”的内容

  vi Makefile

  其中-L指明了.so文件的目录,-l指明了编译时引入的库

   而后直接在test.c所在目录执行“make”即可

   上述步骤只是编译出了可执行文件“test”,接着执行./test即可

   测试成功

六、回顾

  这里一定要注意的是lib的使用,在linux环境下编译和运行的lib是分开的,在g++指令中使用-L、-l参数可以指明编译的lib,但运行时的lib却在/etc/ld.so.conf.d中指明。如果出现 error while loading shared libraries很可能就是这个问题。

  关注公众号“零基础爱学习”获取更多文章。

猜你喜欢

转载自www.cnblogs.com/cation/p/12508999.html