程式

如何使用 Bloomberg API 高效下載日內數據?

  • January 29, 2016

我正在使用 Bloomberg API 和 C# 下載日內柱數據。

我已經調整了官方的 Bloomberg c#“IntradayBarExample”來滿足我的需要。

但是下載真的很慢,我發現這篇文章建議使用專用而不是EventQueue呼叫對象。但是這種改進並不是真正可以檢測到的。NextEvent()``Session

例如,您可以下載 AAL UW 股票程式碼最近 100 天的 5Min Bar – Best Bid Event-,最終獲得的數據不多(< 1Mo)需要很長時間。

你有沒有遇到同樣的問題?

正如 assylias 所建議的,我已經修改了我的程式碼以在多個執行緒中執行請求。如果您需要這樣做,這些是一些有價值的資訊:

1-創建一個執行緒安全的請求過程並requestID為您的請求分配不同的內容。processResponseEvent通過函式將這些參數傳遞給eventloop。這將允許您使用一個簡單的條件來檢查您收到的消息:

           if (msg.CorrelationID != requestID)
           {
               System.Console.WriteLine("WRONG ID ");
               return;
           }

2-並行提出您的請求,這意味著您將上述請求包含在一個循環中,例如:

    WaitHandle[] waitHandles = new WaitHandle[numOfThreads];
       for (int i = 0; i &lt; numOfThreads; i++)
       {
           var j = i;
           var handle = new EventWaitHandle(false, EventResetMode.ManualReset);
           var thread = new Thread(() =&gt;
           {
                /// CALL HERE YOU REQUEST PROCEDURE FROM STEP 1

               handle.Set();
           });
           waitHandles[j] = handle;
           thread.Start();
       }
       foreach (var ee in waitHandles)
           ee.WaitOne();

最後,它不會增加每個請求的等待時間,但由於您正在一起執行一堆請求,您仍然可以節省大量時間。

Ps:您可以將變數i(來自 for (int i = 0; i &lt; numOfThreads; i++))用作 requestID

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