zoukankan      html  css  js  c++  java
  • 【零基础】易盛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

  • 相关阅读:
    与数学有关的几个猜成语
    tex 字体斜体设置
    Beamer中左边画图, 右边文字解释
    Beamer制作索引
    唐诗
    大学生数学竞赛试题荟萃2018-11-06更新
    浙江省2018年高等数学竞赛工科类试题
    读书笔记
    word中中文保持正体,英文用斜体的方法.
    山果(转载《人民日报》)
  • 原文地址:https://www.cnblogs.com/cation/p/13023128.html
Copyright © 2011-2022 走看看