什麼是 SP Native API

SP Native API 是一個由 Sharp Point Limited 提供的動態連結庫 ( dynamic-link library,dll) 檔案. 作為一個自動交易軟件平台, 它代替了上一代的 Trader API (SPTrader API). SP Native API 現支援 32位元 和 64位元的WINDOWS 及 64 位元的LINUX. 只要是支援的電腦平台, 任何程式也能使用這dll檔案提供的功能。例如, 你可以使用它連接到你的經紀行的交易伺服器來落交易單(落盤) 和取得實時期貨/期權價格。但它不提供歷史數據.

並非所有提供SPTrader的證券商也支持SP Native API。證券行的公司必須設置專門的伺服器電腦才能支援SP Native API。而有些證券行的SP Native API只提供給自己員工使用, 普通的街客是用不到的.  現在已經愈來愈多證券行開始提供這服務平台。 

當您登錄SP Native API時,您需要提供平時SPTrader的使用者ID和密碼以及名為“APP ID”和“API LICENSE”的特定字符串。 一些經紀行會為此收取你一些費用, 而另一些(像華富嘉洛)則免費提供。 使用這個dll檔案時,你的程式必須提供一些回叫的函數(call back functions)地址,以便當伺服器傳送實時價格和交易狀態給你的程式時, 予之執行。這些都是普通的 C , C++程式回叫模式. 如要使用 SP Native API 你的程式必須不停的輪詢(poll)一個特定函數.這個函數會替你接收實時價格再把數據放到你的回叫函數(call back functions)裡.  這個(poll)函數也負責把伺服器的狀態和回覆交到你的回叫函數(call back functions)裡. 如果你的程式有使用者介面(User Interface)的話, 那你便一定要寫一個多線程(multi-threaded)的程式. 否則當你的程式在畫介面或處理用家輸入時, 實時價格和伺服器的回覆便回被延誤, 甚至令到連線被中斷.

在新版的SP Native API 輪詢(poll)已經被取代。所以無論你的程式有沒有使用者介面(User Interface),也必須使用多線程(multi-threaded)的程式。而你回叫函數(call back functions)裡用到的資料 必須用Critical Section鎖起,以避免衝突。 例如你 SPAPI_RegisterApiPriceUpdate 登記了 Queue_QuoteUpdate_ 這個回叫函數(call back functions 來收集每次的產品BID/ASK報價 並把它放入一個array 中。 那在這回叫函數和你主程式中所有的地方, 凡是使用這個array 前便一定要用Critical Section鎖起,使用後亦要釋放會這Critical Section。這是因為SP Native API 會在它自己的多個線程中呼叫你的Queue_QuoteUpdate_ 而當時有可能你的程式剛剛在使用那個array.

我們知道編寫一個多線程(multi-threaded)的程式並不容易. 要協調用家輸入/介面線程(UI Thread) 和 SP Native API呼叫的回叫函數 更是複雜和花時間. 雖然在Sharp Point 網站上有一些程式的範例,但那兒沒有一個是多線程的。如果你想編寫一個能代替SPTrader的程序, 則必須使用多線程。 如果你沒有時間來編寫自己的自動交易程式,試試這個Spark 自動交易軟件吧,它正是使用了SP Native API 來提供多種技術分析和自動交易策略。