2010-10-11 74 views
0

我正在開發一個使用複雜事件處理的算法交易應用程序,並且正在研究Microsoft StreamInsight作爲CEP處理器。但是我不確定在StreamInsight中是否可以執行所有我想要做的事情。StreamInsight查詢中的代碼

特別是,我需要能夠動態地創建策略,然後將其作爲常規查詢插入到服務器中。例如,A人創建了一種策略,即當股票X的30天平均價格漲至一定價值以上時,必須下定單。這將不得不在StreamInsight查詢中進行翻譯並在運行時置於服務器上。

我可以在StreamInsight查詢中執行哪些代碼?我不確定是否可以在StreamInsight查詢中執行所有處理,因爲它們是linq查詢。我可以使用其他數據源的數據嗎?我可以在查詢中使用開關,循環,變量聲明等嗎?或者它只是一個單一的查詢,就像編譯查詢一樣?

這一切可能聽起來有點模糊,如果需要的話,我會嘗試進一步澄清。基本上,我的問題是,我可以編寫StreamInsight查詢有多複雜?我發現的樣本只顯示簡單的過濾,分組等。

對其他CEP服務器的建議也是受歡迎的,儘管我真的更喜歡留在我的專業領域,即.NET/C#。

回答

1

多種擴展點允許您嵌入您的StreamInsight查詢定製邏輯:

  • 用戶定義聚合和運算符(http://msdn.microsoft.com/en-us/library/ee842720.aspx )允許您對窗口內容執行任意計算。
  • 用戶定義的函數(http://msdn.microsoft.com/zh-cn/library/ee378928.aspx)支持「原始」類型(字符串,數字等)的自定義邏輯。

StreamInsight的適配器模型(http://msdn.microsoft.com/zh-cn/library/ee378877.aspx)允許您連接到任意數據源,無論它們是實時還是歷史數據源。

如果您對如何啓用特定功能有任何疑問,請告訴我們!

-Colin

1

您可以在StreamInsight服務器運行時創建查詢來完成新的事情。熟悉StreamInsight API後,執行起來並不困難,並且可以在StreamInsight服務器本地完成(如果您在進行託管)或使用管理服務進行遠程完成。正如Colin所說(上述),您可以將自定義代碼添加到您的查詢中以執行自定義評估。