在 Matlab 中處理 IQFeed 事件
我需要為我的研究獲取一些特定的市場數據,而對我來說,最方便的方法似乎是使用 IQFeed 數據饋送和 MATLAB。但不幸的是,由於我不是經驗豐富的 MATLAB 使用者,我無法將實時數據放入數組中以保存它們,同時我正在收聽實時函式。
所以你的問題是如何使用 MatLab(特別是 IQFeed)來處理實時數據?
我將假設您使用的 MatLab 版本早於 2011 / 2012,如果沒有發布任何問題/評論,我會看看我能做什麼。(您可以在此處找到大量使用此功能的文件)。一旦你習慣了 MatLab 語法,這並不是很困難。
API 的工作方式是在 IQF 函式中創建一個對象,該對象代表/處理 MatLab 的 IQFeed API(所有這些都在文件中提供)。該 API 提供盤中、報價、歷史數據以及主要的財經新聞(雖然我認為這個功能具體有點過時/差,你可以從其他 API 中找到更好的)。API 還提供1 級和 2 級市場數據。要初始化與預先存在的會話的連接,請使用以下命令。
c = iqf(username,password) c = iqf(username,password,portname)
我從未處理過 IQFeed,但它與將實時流數據儲存到數組中應該沒有什麼不同。使用離散/抽頭延遲框,您基本上可以限制採樣週期及其儲存方式。此外,使用該
To File
塊,將信號輸入並寫入文件到包含兩(或更多)行的矩陣中。MatLab 將為每個指定的數據樣本將一列寫入矩陣。這就是我將如何將實時 IQFeed 數據儲存到 MatLab 中的數組中。
作為 Trading Toolbox 的替代品,請嘗試使用 IQML(Matlab 連接到 IQFeed),它在 Matlab 中執行並直接連接到 IQFeed。
IQML 是一個獨立的第 3 方產品,適用於所有最新的 Matlab/IQFeed 版本和平台(Windows、Linux、Mac)。該連接器超級可靠、易於使用且速度極快(包括並行化)。它帶有詳細的使用者指南,其中包含使用範例、範例 Matlab 腳本和實施技巧。
IQML 只需要核心 Matlab 即可執行 - 不需要工具箱(並行化使用 Parallel Computing Toolbox,但即使沒有它,IQML 也能很好地執行)。
在回答 OP 問題時,這裡有一個使用 IQML 將實時 IQFeed 數據獲取到 Matlab 的範例:
>> data = IQML('quotes', 'Symbol','GOOG') data = Symbol: 'GOOG' Most_Recent_Trade: 1092.14 Most_Recent_Trade_Size: 1 Most_Recent_Trade_Time: '09:46:31.960276' Most_Recent_Trade_Market_Center: 25 Total_Volume: 113677 Bid: 1092.13 Bid_Size: 100 Ask: 1092.99 Ask_Size: 100 Open: 1099.22 High: 1099.22 Low: 1092.38 Close: 1090.93 Message_Contents: 'Cbaohlc' Message_Description: 'Last qualified trade; A bid update occurred, An ask update occurred; An open declaration occurred; A high declaration occurred; A low declaration occurred; A close declaration occurred' Most_Recent_Trade_Conditions: '3D87' Trade_Conditions_Description: 'Intramaket Sweep; Odd lot trade' Most_Recent_Market_Name: 'Direct Edge A (EDGA)'
IQML 支持整個 IQFeed API,包括:
- 阻塞(快照)和非阻塞(流)數據查詢
- 實時一級賬面市場數據(報價和交易)
- 實時 Level2 市場深度數據
- 歷史、日內和實時市場數據(單個分時或區間柱)
- 資產的基本資訊
- 期權和期貨鏈查詢(帶有最新市場數據和希臘人)
- 符號和市場程式碼查找
- 帶有使用者指定過濾器的新聞標題、故事計數和完整的新聞故事
- 能夠將使用者定義的 Matlab 回調函式附加到 IQFeed 消息和市場事件
- 使用者定義的關於流媒體市場事件的自定義警報(新聞/報價/間隔條/區域觸發器)
- 連接統計資訊和程式連接/斷開連接
使用者可以使用普通的 Matlab 將上述所有功能組合成一個成熟的端到端自動交易系統。
IQML 作為商業 3rd-party 產品獨立開發;它不隸屬於 MathWorks 或 DTN。作為與現有產品競爭的後來者,IQML 在功能、性能、可靠性、文件、支持和成本效益方面具有明顯的優勢。試一試,自己檢查一下。
亞爾奧特曼