1. 程式人生 > WINDOWS開發 >【零基礎】易盛9.0API入門三:下單並查詢訂單狀態

【零基礎】易盛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、執行結果

技術分享圖片

技術分享圖片

  我使用的是自己的模擬賬號,你們也可以換用自己的賬號。不過只有模擬賬號可以用,實盤需要另外申請授權才行。

四、總結

  從登入到下單其實都不難,真正有難度的是整個邏輯閉環如何整合起來,後面我會試試寫一個完整的案例,從案例解析到程式碼實現搞一遍,這樣大家搬運去用也不費力氣了。本篇的完整程式碼可以關注公眾號“零基礎愛學習”回覆“LH16”獲得。

技術分享圖片