【零基础】易盛9.0API入门三:下单并查询订单状态

一、前言

  前面我们搞定了系统环境和账户登陆,写的有点乱所以这里我们先把前面的梳理一遍,然后试试下个单并获取订单的成交情况。

二、环境安装回顾

  1、我们使用的是linux系统(centos6.5)

  2、安装gcc和gcc-c++(编译和运行C++)

  3、下载API包,iTapTradeApi是交易API,我们目前只需要交易API

  4、在你的项目目录里新建代码文件test.c(比如/root)

  5、在项目目录里新建一个API目录用于存放iTapTradeApi(交易API)的.so文件,并将其加入动态链接库

  6、将iTapTradeApi(交易API)的.h文件放到项目目录中

  7、新建一个MakeFile文件用以设置编译的参数

  最后的结果应该是下面这样:

 

 

 

二、账户登录回顾

  1、首先我们要继承ITapTradeAPINotify实现一个Trade类,这个类就是消息回调的接口。实现Trade类时需要按ITapTradeAPINotify的结构对所有消息回调接口进行实现。后面有消息触发就会执行对应消息接口内的代码,比如登陆成功就会执行OnRspLogin内的代码。

 

   2、使用CreateITapTradeAPI创建API实例

  3、将API实例与消息回调接口进行关联。

 

   4、后面使用pAPI做操作,objTrade处理回调的消息,就形成了完美的闭环。

三、登陆后立即下单并周期性查询订单状态

  1、状态判断

  登陆成功后先是触发OnRspLogin,接着触发OnAPIReady,这时API才真正准备好了。此时我们就可以用pAPI来下单了,但是我们晓得有消息回调时触发的是objTrade所以如何通知pAPI可以下单是个问题,办法很多,这里我们可以简单使用一个FLAG来识别API是否准备好。

  我在objTrade中定义了一个statusFlag,通过修改其值来记录当前的状态。

  statusFlag = 0 默认情况

  statusFlag = 1 API已准备好可以下单

  statusFlag = 2 已下单等待委托的成交回报

  statusFlag = 3 已成交

  statusFlag = 4 啥也不做

  statusFlag = -1 出现异常

  接着在while循环中判断statusFlag的状态即可。

  2、API准备就绪

  在objTrade中新增了statusFlag用来记录状态,在API准备好时修改值为1,while循环中查询到值变为1时就会发送订单。

 

 

  3、下单操作

  为了便于操作,我将pAPI传递给了objTrade,然后objTrade里新增了一个下单的函数SendOrder

 

 

 

  4、等待成交消息

  为了确保成交,我设置的价格比较高。成交消息是OnRtnFill,在里面将statusFlag设置为3即可。

 

  5、运行结果

 

 

 

  我使用的是自己的模拟账号,你们也可以换用自己的账号。不过只有模拟账号可以用,实盘需要另外申请授权才行。

四、总结

  从登录到下单其实都不难,真正有难度的是整个逻辑闭环如何整合起来,后面我会试试写一个完整的案例,从案例解析到代码实现搞一遍,这样大家搬运去用也不费力气了。本篇的完整代码:

https://share.weiyun.com/0I7HdB69

 

posted @ 2020-06-01 15:05  布兰姥爷  阅读(589)  评论(0编辑  收藏  举报