[備忘] 創建 Excel 動態圖表的步驟

何謂動態圖表 (Dynamic Chart)?

亦即所接收的數據是會持續成長的。例如每分鐘 (或每30秒, etc...)接收即時的台灣加權成交價/量 數據。

創建動態圖表的重點:
  1. 利用「名稱管理員 (Name Manager)」創建具名 (named)可擷取動態資料範圍 (range)的公式 (formula)。
  2. 新增圖表,指定類型與相關屬性,並指定資料來源 (Data Sources)。
一、利用名稱管理員創建具名的公式
  1. (Option) 下載並安裝更好用免費的 NameManager Add-in (原來 Excel 內建的難用)。
     o Name Manager: Range names made easy

    Excel 2010 安裝 3rd party Name Manager

  2. Excel (2010)選單,[公式] → [Name Manager] 啟動。
  3. 測試資料欄位:

    Excel 盤中接收台指期即時數據

    閱讀全文 »

離譜的臭蟲-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 瀏覽器複製進去並啟動執行。因為 "看來" 是兩個不同的作業系統環境,所以總算兩者不會衝突了。

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

利用 LINQ 實現期指Tick檔彙整為K棒

參考這一篇:「How to group a time series by interval (OHLC bars) with LINQ」。

我這裡使用 C#.NET 實作,並作了一些小小的修正,使之確實可以執行,並可從期交所所下載的原始 Tick 資料檔,經由前置的解壓縮、轉換為 Tick 物件型態,再透過該實作邏輯,就可以將 Tick 物件依所指定的時間週期 (time-interval),群組為所謂的「分K棒」(其實,正確的稱呼應該為 OHCK Bar)。

這裡也不禁對 LINQ 實作技術感到讚嘆! 它讓中間層 (middleware)的物件結構與資料來源 (data-sources)的存取,變得更為簡單太多了,所以也使得 Tick 轉K棒 的轉換邏輯,可以利用相當簡潔的語法 (類 SQL 語法),而達成該功能的實現。

底下的程式碼並未包含前述所提包括解壓縮、轉換為 Tick 物件等邏輯,只從一群已有 Tick 資料的 Collection 集合 (型態為 IEnumerable),依據所指定的 Interval 時間間隔,轉換為 K棒 (含開、高、收、低、量)的實作邏輯。

Tick 與 OHLC-Bar(K棒) 物件結構為:

    public class Tick
    {
        public string Symbol { get; set; }     //商品代號        
        public DateTime Timestamp { get; set; }  //成交日期時間
        public decimal Price { get; set; }     //成交價格
        public uint volume { get; set; }       //成交量
    }
 
    public class OHLCBar
    {
        public string Symbol { get; set; }  //商品代號
        public decimal OPEN { get;set; }  //開盤價
        public decimal CLOSE { get; set; }   //收盤價
        public decimal HIGH { get; set; }  //最高價
        public decimal LOW { get; set; }   //最低價
        public uint VOLUME { get; set; }   //成交量
        public DateTime BeginTime { get; set; } //開始時間
        public TimeSpan Interval { get; set; }   //時間區間
    }

閱讀全文 »

[備忘] Amibroker 匯入 Yahoo 美股盤後資料

因為台灣股市的趨勢,從中長期來看,幾乎是跟隨著美股大盤,包括 道瓊、那斯達克、S&P-500 等指數連動。所以,簡單的一個想法就是,利用 60日均線 (季線)觀察上述美股大盤指數的多空方向。

首先當然是要下載上述美股大盤的歷史盤後資料。可以利用我先前介紹的:抓美股歷史資料的好幫手—免費的 YGQD。另外,因為我早已在去年就購買這一套:Amibroker 套件,內附了一個小工具:AmiQuote (購買註冊後永久免費使用),可以下載包括 Yahoo, Google, Msn 等 Internet-based 的各國主要股市大盤期貨等歷史資料。並且與 Amibroker 整合,下載的資料馬上就可以在 Amibroker 的圖表分析視窗上顯示。

首先當然是分別下載與安裝好 Amibroker (目前版本為 5.30)與 AmiQuote,下載位置為 Amibroker 官方下載區。執行 AmiQuote,選單上選擇 [Edit] → [Add tickers...],在出現的對話文字框內填入欲下載的主要指數代號 (Symbol),我這裡只想下載 道瓊、那斯達克、S&P-500,其代號為 ^DJI, ^GSPC, ^IXIC。更多相關國外股市的代號,可查詢這裡: Yahoo! Finance!
AmiQuote 匯入美股大盤 Symbol

閱讀全文 »

差勁不懂得反思改善的 eLeader 交易系統 (~20091206)

忍受 eLeader 系統的不穩定已有 1年多了,此時真的是不吐不快!

只要是台指期在某個點位造成大幅的滑價,eLeader 系統鐵定如同造成當機現象,閃電下單的畫面會凍住,價位不動。 等到競價搓合完畢後,價位早已不知跑到那裏去了。 對於極短線投機者,可說是會造成許多傷害,包括追價不及、或要遞出停損單也無法及時送出。

這是即時性 (Real-time)的效能處理問題,相當不容易解決。 但是,作為用戶,使用這一年多來,竟然沒有得到任何改善。 我真的很難以想像,如果,我是他們負責系統維護開發的資訊主管,對我而言,這不就是最優先首要處理克服的工作目標? 最大隻的青蛙總要最優先吃掉,如此睡覺也才能安穩,不是嗎?

好吧,這真的很困難,但主管也自己覺得有在持續改善,只是時間還未到,也只好請用戶諸多包涵了。 那麼,我再提及另外一個相當顯而易見、我不知道向她們客服單位反映過多少次、甚至也曾與該資訊單位在正式(與非正式)場合中,多次提及到的一個設定問題。 這可以說是只要有心,絕對花不了多少時間就可以解決的問題。

舉個例子,假如我打開一個代號為 [4306] 的技術分析視窗,每一個視窗可以有多個 [TAB]。 這個編號視窗我準備用來觀看 近月份台指期,所以 [TAB1] 我開為台指期1分K、[TAB2] 開為 5分K、[TAB3] 開為 15分K、[TAB4] 開為 60分K ‧‧‧ 然後,我再 Clone(複製) 另一個同為代號 [4306] 的技術分析視窗;這次我想觀查的是金融期指,然後也如上述開不同時間格局 (Time-Frame)的 TAB。

每一個技術分析視窗、每一個 TAB,都有各自使用不同的指標,如均線、KD、布林通道等。 然後我把這些設定都儲存成設定檔 (*.XML 檔案格式),然後關掉 eLeader,然後重新打開。 再來然後呢? 所有原來辛苦作的設定全都不見了,只會遺留下來最後一個的設定,也就是說,若是開了兩個技術分析視窗、各四個 TAB,共有 8 個設定,只會有一個設定被 eLeader 儲存下來。

夠離譜吧!? 我用過的交易系統,也只有 eLeader 系統會有這種蠢事,然後一年多來的反映,沒有作任何改善。 最最令人生氣的就是這一點! 當你知道了顯而易見的問題,卻從來沒有想辦法去解決它,這不是麻木不仁是甚麼?

事實上,這問題還真是相當容易解決,就看有沒有心而已。 一個基本的設計解決方案,我就放到後續的文章另行討論吧。

抱怨了這麼多,那麼換掉交易系統不就好了? 是啦,受這種鳥氣,還倒不如早換掉投靠其它系統。 只是現實的問題是,我這邊的交易手續費實在相當低,這也是讓我一再抱怨卻沒有實際付出行動: 喔,再則,老實說一句話,我不曉得是否是因為這些交易看盤系統是免費(有開戶就可以用)的關係,普遍穩定度與功能都不佳 (eLeader 只是更離譜罷了)。 (嗯嗯,最近總算透過朋友的關係,在其它盤商也找到足夠低的手續費,近期內應該就要轉移陣營了。)

喔,eLeader 倒是有個相當不錯的設計,這點還是要給人家相當的肯定。 那個台指期權值成份股的報價視窗,可以動態依 Column 欄位(如成交價、最高價、漲跌幅、權重等)排序:除此之外,每一檔權值股的第一個欄位會顯現出一個 迷你K線 走勢圖,對於一日的高低走勢,一目了然,而這是我在其它看盤軟體沒有看到的創新功能。

有問題其實還好;而可氣的是,知道問題卻不想辦法去解決它。 用心一些、積極一點,對業者自己、對用戶,才能創造雙贏的機會。

{點子} 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 作技術支援。
軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal