【零基礎】易盛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”獲得。