Excel圖表工具,可以很容易的畫出股票的日K線,但想切換不同股票或是改變顯示的天期,必須重新選取資料範圍,又或著是,想為股票圖加上均線的效果,必須一條一條設定,相當的麻煩,這時可以利用Excel VBA來達成如影片所展示一樣的效果,只需要一鍵即可切換股票代號及資料範圍,並且同時為股票K線圖加上均線
檔案下載:XQ DDE用VBA取得k線資料及K線圖
前幾天的影片,分享了如何從XQ 全球贏家的DDE伺服器取得歷史日線數據,以此來代替股市資料庫,如果還沒看過的朋友,請點上方資訊欄前去觀看,但取得的數據就是一長串的數字,可讀性相當的差,人都是視覺化的動物,都喜歡看美美的圖(放個美女圖….逼….),不是這種圖,是K線圖才對,今天就來分享如何用Excel的圖表工具,制造出帶有成交量及均線的股票K線圖吧。
我們先手動操作一次,先手動選取一個範圍,打開上方的插入選項=>建議圖表=>所有圖表=>股票圖,選第四個,帶有成交量的股票圖,按確定後,會發現出來的圖都變成長條圖了,原因是帶有成交量的股票圖對欄位的順序有特定的要求,必須依照:成交量-開盤-最高-最低-收盤的順序才能畫出帶有成交量的股票圖。
那我們先在旁邊新增一些資料列,把數據修改到如Excel圖表工具所要求的順序一樣。
在[G4]儲存格依序輸入日期-成交易-開盤-最高-最低-收盤,日期=[A5],成交量=[F5],開盤=[B5],在儲存格右下方的一個小點點按住左鍵,先往右拉,再選取[G5]到[L5]的範圍,往下拉,再來選取剛剛做出來的範圍,再重新插入一次帶成交量的股票圖,這樣子Excel就幫我們畫出一個醜醜的股票圖了,先把圖表拉大一點,再來美化一下,先找到上漲橫條圖,點二下,填滿色彩改紅色,框線也改成紅色,再來下跌橫條圖點二下,填滿色彩改綠色,框線也改成綠色,接下來成交量跟K棒都擠在一起也不好看,在成交量的座標軸點二下把最大值直接*3倍,再來點成交量的格線,按[DEL]刪除,接下來點一下圖表,新增圖表項目=>趨勢線,移動平均,收盤,對出現的線點二下,週期改成5,線條改成自已想要的顏色,虛線類型改為實線,如果要再加一條,就重復相同的操作,這次週期改成10,這樣子就有二條均線了,想要均量也可以做相同的操作,只要數列改成成交量就可以了。
到目前為止是不是相當的麻煩呢,不過目前可以直接切換股票代號了,但是今天當你要改變資料的天期時,完全要重新操作一次,相當的不方便,那接下來我們就用Excel VBA來處理這些繁瑣的操作吧。
我們先把之前的DDE陣列公式刪掉,把標題往下移到第29列,選取[A3]-[P28]的範圍,把背景改成全黑,並在[G3]儲存格的字體及顏色改成白色,大小改18。
接下來打開VBA,為了節省時間,我先把程式碼都打好了,那我們開始一行一行的說明程式碼的功能吧。
之前寫好的程式要修改一下報價輸出的位置,我們先拉下來看修改圖表天期的程式,先宣告天期的變數為整數,指定intDay的值就是[B2]+29,宣告成交量的變數為長整數,再選告一個成交量的範圍變數,先指定成交量的範圍,要給Range變數一個範圍的話,記得要用Set,接下來這一句,就是用WorksheetFunction.Max這個函數取得VolR這個範圍區間內的最大值,也就是取出最大成交量的值,再*3,再來宣告一個要放圖表的範圍變數,之後可以在Range內自行修改圖表的大小,再來宣告公式列的最後一列的變數,End(lxUp)就是說,我在G欄的最後一列,第1048576列按[Ctrl]+上,就會跑到有資料的最後一列,最後的.Row,就是取得列號,並把這個結果的值指定給intG。
這邊先用一個判斷式把公式跟天期對齊,如果公式>天期,那我們就把多出來的公式列刪掉,如果公式<天期,那我們就要往下補上公式,(Excel展示)這邊就是說,我們第一次取得30天的日K資料,第二次改成20天,那取得報價後,要把這邊多出來的十列公式刪掉,那如果我們再重新取得一次40天的日K資料,公式這邊會少20列,我們就選取範圍,在右下的點點按2下補齊公式。
接下來我們開始在畫表格,
最後這一行,為什麼要把股票代號放在儲存格,不直接顯示在圖表上,因為我們取得日K資料後,這裡的判斷式,如果[G3]有資料,代表現在有圖表,那我們要先刪掉之前的圖表,並把[G3]的資料刪掉,如果沒有,代表沒圖表,等待2秒才呼叫修改圖表天期,因為有時報價更新要重新讀取DDE伺服器,所以會比較慢一點,加上這個等待2秒的功能就是避免報價還沒讀到就新增表格,這樣子的話會出錯。
這邊要補充一下,因為XQ 全球贏家的DDE伺服器是免費的服務,所以無法在短時間內大量取得新的報價資料,所以有時連續切換股票或天期,會出現400的錯誤訊息,很可能是這張圖片上的原因,但不影響取得報價,只要按掉就可以了。
張貼留言