Matlab

在 Matlab 中處理 IQFeed 事件

  • December 27, 2018

我需要為我的研究獲取一些特定的市場數據,而對我來說,最方便的方法似乎是使用 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 在功能、性能、可靠性、文件、支持和成本效益方面具有明顯的優勢。試一試,自己檢查一下。

亞爾奧特曼

IQML.net, https://UndocumentedMatlab.com/IQML

引用自:https://quant.stackexchange.com/questions/14280