離譜的臭蟲-Chrom 與 MS Office DDE 間的衝突

最近又想要把金融報價看盤軟件,透過 DDE 方式,傳給 Excel 2010 接收即時資料,並利用 VBA 作些較簡單的處理,以及圖形的展現。

結果從報價軟件直接複製 DDE 連線字串後,它會自動啟動 Excel。但就在此時,Excel 程式就當掉了,並出現 "沒有回應" 的字樣,必須透過工作管理員硬砍掉該程序才行,屢試不爽。

這個問題困擾許久,原以為是 Excel 選項內設定的問題。包括「信任中心」、「DDE 啟動」等選項設定,都一一試過卻仍一樣的現象,就只差在要不要考慮重新安裝 Office。

透過 Google 爬文查了好多篇文章,幾乎就繞在上述設定的問題 (無效,沒有解決)。就在快放棄之餘,不經意看到一篇文章,有國外網友分享說,只要關掉 Google Chrome 瀏覽器,就可以正常啟動 DDE 連結。

有這麼簡單? 結果還真的,一關掉 Chrome,再試著從報價軟體複製 DDE 連線字串並啟動 Excel,馬上就啟動成功,相當順暢! 然後我再加上 "Chrome Excel DDE Hang" 等關鍵字,證實就是有這個相當離譜的現象。底下就節錄兩篇討論串:
 o Chrome - MS Office DDE conflict
 o Excel 2010 and TOS DDE Problems

所以,到底有沒有根本性的解決方案? 沒有,目前唯一的方法 (截至 2011/12/05)就是:要啟動 DDE 連線字串前,請先把 Google Chrome 瀏覽器 (v10~v15 都一樣)給關掉。

真的很離譜的臭蟲,打開 IE 或 Firefox 倒是不會有這樣的問題發生,可以與 Office DDE 和平相處。

到底是 Chrome 還是 Office DDE 的問題呢? 我也不想追究了。只是我都已經習慣使用 Chrome 作為個人關於電子郵件/RSS Reader,還有工作事項管理等平台,若是看盤期間都不能打開那可怎麼辦?

我的作業系統環境是 Windows 7 x64,現在的折衷解決方式就是,打開 Windows XP Mode (虛擬機器),將 Google Chrome 瀏覽器複製進去並啟動執行。因為 "看來" 是兩個不同的作業系統環境,所以總算兩者不會衝突了。

這樣的怪現象難得一見,特此記錄下來。

{點子} Universal DDE Server 商品化?

為了方便建立自己的交易分析模型,相關於 Excel, Tradestation, Amibroker 等交易軟件透過 DDE 連結國內盤商的 DDE Server(同時也是看盤軟件),個人算是蠻熟悉的了,自己也寫了許多範例。 況且,我也算是對股票、期貨等金融商品的買賣規則與術語都有一定程度的了解,算是半個 "領域專家 (Domain Expert)" 了 (可不是投機專家< :( )。 乾脆,就委請我們內部團隊開發一個小型的交易商品,就暫名為 "Uni-Data Transfer Server"?

(*** 這些想法目前僅限於個人的紙上紀錄,算是先作個點子註記備忘 ***)

定位與功能:

  • 這算是一種 "中繼 (intermediate)" 類型的應用伺服器。 以連接國內盤商所提供的報價資料,並可以 "餵給" 包括 Excel、交易分析軟體等可以處理交易資料的統計與圖形展現。
  • 可以連接國內主要盤商的報價資料。 初期以最普遍的 DDE 為主,慢慢地要能支援較特別的傳輸協定,例如 Office Quote 等 COM-based 的傳輸元件。
  • 前端連結的資料分析軟體,若為 DDE 傳輸,則幾乎所有交易分析軟件均支援;而為了能更讓資料傳輸更形穩定,打算採 "Plugin" 的方式,直接支援包括 Amibroker, Tradestation 等所自己提供的傳輸協定。
  • 提供 "容錯 (fault-tolerance)" 的功能,可以動態切換至備援的報價資料源。
  • 簡單的示意呈現就是:
    1. Yeswin → DDE 傳輸→ Uni-Data Server → DDE 傳輸 → Excel
    2. 台証OfficeQuote → COM 傳輸→ Uni-Data Server → Data Adapter(By C++) → Amibroker
  • 除了資料的傳遞處理外,也期能提供 "應用" 層面的擴展介面。 可以以 "Plugin" 的方式,讓用戶自行擴展,或由開發廠商以附加套件的方式另行販售。
    例如,可以提供即時分析期貨的買/賣價量的對比數據。單一功能,即可製作成附加套件。
  • 總之,目的就是提供給 "散戶" 以低廉的成本,將手中已有的報價資料源 (From 看盤軟件),透過該商品,轉遞至自行可以撰寫交易分析與統計的應用軟件上,讓其交易策略更能自行具擴展的彈性。
  • 自動下單? 這應該是需要的機制,而前提則是盤商需提供自動下單的呼叫介面。 考慮作成 "Plugin",提供如達成從 AmiBroker 自動下單至各盤商的交易伺服器。

販售與服務方式:

  • 採網路線上訂購。 刷卡或 ATM 轉帳,確認訂購即以 Email 寄送 License Key 與 下載網址。
  • 購買軟件含一年期免費更新。 一年後則付較低廉的升級費用即可持續更新。
  • 使用相關問題與售後服務則以 Email 作技術支援。
[Tradestation 8.x] DDE 即時連結大盤江波買賣資訊

構成「江波圖」大盤的買賣資訊,必要的欄位資料有 委買/委賣/成交 張數/筆數 共六個欄位。

Tradestation 8.x 是否可以透過 DDE 連結至 報價伺服器取得江波的大盤買賣資訊? 答案是 Yes!

Tradestation 8.x/Multicharts 的外部資料源管理 QuoteManager,透過 DDE 可以指定對應的欄位共有 Trade/Ask/Bid Price/Volume 共六個欄位。 雖然一般來說,匯入的資料為 價與量,但是可以先不用管這些對應關係,直接就是把江波的六個欄位任意對應至 QuoteManager 的六個欄位內。

雖然爾後透過 Tradestation "Chart Analysis" 觀看 價格/成交量 的二維圖形會亂七八糟,但沒有關係,可以把開啟的 Main Chart 圖表隱藏 (hide)起來,然後再透過自行撰寫的指標 (Indicator) ,運算處理這些欄位的關聯性,即可產出想要的圖形。

這裡的 DDE 資料源係以 Yeswin 為操作示範。 (永豐 eLeader 似乎沒有提供 江波的 DDE 連結)

先確實瞭解 Yeswin 的江波大盤買賣 DDE 連結字串。 這個可以透過觀察 Yeswin 提供的 「YesDDE 使用範例」Excel 檔案,即可得知,參考如下圖。
Yeswin 大盤買賣 DDE 公式@Excel

然後再打開 QuoteManager (可以參考原來寫的一篇:「QuoteManager DDE 設定 for YesWIN」), Clone 複製 DDE Data Source,DataSource Name 設定為 YesWin DDE2, 縮寫設為 YS2。 (可任意指定,不過爾後在 Tradestaion 的 Symbol 設定會用到。)

繼續閱讀 »

[TradeStation 8.x] 大盤與台指期即時 1分K 價差柱量圖

一大早就試著透過 QuoteManager 的 DDE Adapter 連接至 YesWin,再打開 Tradestation 接收即時 (real-time) 的 DDE 報價 from 元大 YesWin。 因為是第一次設定接收,所以尚未到 AM 8:45 開盤時 (接收台指期近月份),Chart 視窗是顯示 receiving Data...,會以為好像當掉一般。

但一開盤時,Chart 視窗馬上出現 Tick 跳動畫面了。 此時才能再新增 Symbol 在同一 Chart 視窗內,參考: [TradeStation 8.x] 實現大盤與台指期價差柱量圖

從早盤到下午收盤,整個接收狀況相當穩定正常,而且可以在盤中隨時切換 Tick, 1分, 3分, 5分 至 各時間格局,參考如下圖,這是今日 (20090903) 台指期疊大盤的 1分K 價差柱量圖,藉此可觀察正或逆價差時的放大與收斂情形。

對於運作的情況相當滿意!

20090903 大盤_台指期 1分K價差柱狀圖

QuoteManager DDE 設定 for YesWIN

MultiCharts → QuoteManager (Tradestation 8.x → OwnData2, QuoteManager=OwnData2)
→ DDE Real-time DataSource → DDE 看盤程式 (YesWin, eLeader ...)

在 QuoteManager [Tools] Menu → [Data Sources...] → 選擇 Universal DDE,按下 [Clone] (複製),DataSource Name 設定為 YesWin DDE, 縮寫設為 YES。 (縮寫比較重要,原因在於爾後透過 MultiCharts 取得資料源時,需打上 縮寫:Symbol_name,例如 YES:TWF1)

設定 DDE 資料源。 這裡係連接 YesWin 的相關參數設定,每一個 DDE 報價資料源基本上只要設定一條 DataSource 即可,再以 * 萬用字元為變數,替代 Symbol Name。參考下圖。
QuoteManager 的 DDE 設定 for YesWin

設定完成後,可按下最下面 [Ttest] 按鈕,並輸入欲測試的 Symbol,觀察視窗是否有出現數據 (一般來說,還是需要等報價 Server 有 Tick 跳動時測試才準)。

新增 Symbol Name,可參考: [設定備忘] Import Ascii Data from QuoteManager

這裡要注意的是,由於 DDE 資料源的設定視窗是以 * 取代了 Symbol Name,所以新增 Symbol 時,Name 欄位要輸入 YesWin 的 Symbol 代號名稱。 例如 台灣加權指數的代號為 $TWT;台指期近月份的代號為 TXF1。 關於 YesWin 的 DDE 設定注意事項,可參考看盤軟體 HELP 選單內的 YESDDE 使用說明。

這裡方便的就是,如果想要觀察 個股或期貨金融商品等,只要 QuoteManager 主視窗新增該 Symbol,例如 2330 (台積電), EXF1 (電指期) 等。 並將 DataSource 指定原來所設定的 DataSource (如 YesWin) 即可。

[TradeStation 8.x] 實現大盤與台指期價差柱量圖

短線台指期交易,觀察加權指數與台指期的價差變化,包括正或逆價差,以及價差的收斂變化情形,也是一個重要的參考指標。

不過永豐 eLeader 只有 期貨疊大盤 的量價走勢圖 [5002],但並沒有兩者價差的柱狀圖表。 所以個人就以 Tradestation 8.x 的 Chart Analysis 把兩者 Symbol 匯入同一個 Chart 視窗內,然後再利用 EasyLanguage 寫一個相當簡單的指標: PriceDiff。 程式碼如下:

Value1 = Close of data1 ;
Value2 = Close of data2 ;

Value3 = Value2 - Value1;

Plot1( Value3, "Price Diff" ) ;

呈現的效果如下圖:

Tradestation 8.x 大盤與台指期價差圖表

這裡匯入的資料是透過 eLeader 所下載兩者的 3分線歷史資料,只有約 5 天的資料,僅是作為實現該價差指標的測試而已。

爾後則是需要透過 DDE 連結,再以即時資料 (real-time) 連結至 Tradestation,再透過該價差指標,即可在盤中觀察價差的柱量圖。

Page 1 of 180123456789101112...203040...Last »