Python

使用說明

交易 API

你需要 spdOrderAPI 來取得交易相關的服務,使用 spdOrderAPI 的程式需要有下列的程式片段

步驟1, 在 .py 開頭的地方有
from pySpeedy.spdOrderAPI import spdOrderAPI
步驟2, 會有一個 class (假設名稱是 testPyOrderAPI ) 的樣板如下
class testPyOrderAPI(spdOrderAPI):
    def __init__(self):
        super().__init__()
        # 你可以在這邊初始化任何你會用到的變數            

    def OnConnected(self):
        # 你用來處理交易主機連線成功的程式碼
        # 通常我們在這時候嘗試登入交易主機如下
        self.LogonProxy('your_id', 'your_pwd', 'your_account')                         

    def OnDisconnected(self):
        # 你用來處理交易主機連線中斷的程式碼

    def OnLogonResponse(self, IsSucceed, ReplyString):
        # 你用來處理交易主機登入成功or失敗的程式碼 

    def OnReplyNewOrder(self, NID, UDD, Symbol, Price, Side, OrderQty, OrderType, TimeInForce, OrderID):
        # 你用來處理委託回報的程式碼

    def OnReplyCancelOrder(self, NID, UDD, Symbol, Price, Side, OrderID):
        # 你用來處理刪單成功的程式碼

    def OnReplyReplaceOrder(self, NID, UDD, Symbol, Price, Side, OrderQty, OrderType, TimeInForce, OrderID):
        # 你用來處理改單成功的程式碼

    def OnRejectOrder(self, NID, UDD, ActionFrom, ErrCode, ErrMsg):
        # 你用來處理新/刪/改單失敗的程式碼

    def OnFill(self, NID, UDD, OrderID, ReportSequence, FillPrice, FillQty, FillTime):
        # 你用來處理成交回報的程式碼
步驟3, 產生一個類別為 testPyOrderAPI 的物件,假設物件的名稱是 ObjOrder
if __name__ == '__main__':
    ObjOrder = testPyOrderAPI()
步驟4, 透過物件 ObjOrder 使用 spdOrderAPI 的函式 EnableMEGACA 來設定下單所用來產生簽章的憑證
ObjOrder.EnableMEGACA("xxxxxx.pfx","id","password")
步驟5, 透過物件 ObjOrder 使用 spdOrderAPI 的函式 Connect 來連線交易主機
ObjOrder.Connect('交易主機IP', 交易主機 listen port, 視為逾時的秒數)
步驟6, 繼續透過物件 ObjOrder 使用 spdOrderAPI 的其他函式來下單。可用函式列表請參閱「class spdOrderAPI」。

行情 API

你需要 spdQuoteAPI 取得行情相關的服務,使用 spdQuoteAPI 的程式需要有下列的程式片段

步驟1, 在 .py 開頭的地方有
from pySpeedy.spdQuoteAPI import spdQuoteAPI
步驟2, 會有一個 class (假設名稱是 testPyQuoteAPI ) 的樣板如下
class testPyQuoteAPI(spdQuoteAPI):
    def __init__(self):
        super().__init__()
        # 你可以在這邊初始化任何你會用到的變數

    def OnConnected(self):
        # 你用來處理行情主機連線成功的程式碼
        # 通常是不需要特別的處理

    def OnDisconnected(self):
        # 你用來處理行情主機連線中斷的程式碼             

    def OnLogonResponse(self, IsSucceed, ReplyString):
        # 你用來處理行情主機登入成功的程式碼
        # 通常是登入失敗才需要處理

    def OnContractDownloadComplete(self):        
        # 你用來處理商品資料下載成功的程式碼
        # 通常是在這時候訂閱商品
        # self.Stocks 會存放下載下來的股票商品基本資料
        # self.Futures 會存放下載下來的期貨商品基本資料              

    def OnOrderBook(self, Exchange, Symbol, MsgTime, Msg):
        # 你用來處理收到委託簿的程式碼              

    def OnTrade(self, Exchange, Symbol, MatchTime, MatchPrice, MatchQty, IsTestMatch):
        # 你用來處理收到成交訊息的程式碼
步驟3, 產生一個類別為 testPyQuoteAPI 的物件,假設物件的名稱是 ObjQuote
if __name__ == '__main__':
    ObjQuote = testPyQuoteAPI()
步驟4, 透過物件 ObjQuote 使用 spdQuoteAPI 的函式 Logon 來連線行情主機
ObjQuote.Logon('行情主機IP', 行情主機 listen port, '登入帳號', '登入密碼', 是否下載商品資料(True/False))
步驟5, 繼續透過物件 ObjQuote 使用 spdQuoteAPI 的其他函式來訂閱/解訂閱。可用函式列表請參閱「class spdQuoteAPI」。