2012年3月3日 星期六

VBA建立股票分析環境-1

用VBA劃出股票圖
最近開始想利用EXCEL來研究建立股票回測環境,當然第一步便是劃出股票圖,經網路不斷爬文,深知爬文之苦,故把一些心得分享在此網誌。
如果你有資料長得像這樣...(從證交所抓的)


利用VBA劃出股票圖像這樣...


  • 新增模組,然後撰寫下列程式碼
  1. Sub DrawkOHLC(ByVal DataRng As Range, ByVal TitleName As String, ByVal ChartName As String)

  2. '===建立K線圖
  3. Dim ChtObj As ChartObject 'Chart物件

  4. '會建立新的內嵌圖表Left, Top, Width, Height(相對A1儲存格)
  5. Set ChtObj = ActiveSheet.ChartObjects.Add(0, 0, 1200, 400) '建立圖表大小位置
  6. With ChtObj.Chart
  7. .SetSourceData Source:=DataRng '資料來源
  8. .ChartType = xlStockOHLC '股票圖:日期、開、高、低、收
  9. .Axes(xlCategory).CategoryType = xlCategoryScale '座標軸類型:文字座標軸;避免斷續日期
  10. .Axes(xlCategory).TickLabels.NumberFormatLocal = "m/d" 'X軸顯示為月/日
  11. .HasTitle = True '顯示標題
  12. .HasLegend = False '不顯示圖例
  13. .ChartTitle.Text = TitleName  '標題文字
  14. .Parent.Name = ChartName '設定圖表物件名稱
  15. '===更改Y軸刻度
  16. .Axes(xlValue).MajorUnit = 100 '主要刻度
  17. .Axes(xlValue).MinorUnit = 50 '次要刻度
  18. .Axes(xlValue).MajorGridlines.Format.Line.DashStyle = msoLineSysDash '格線為虛線
  19. '更改X軸格式
  20. '.Axes(xlCategory).HasMajorGridlines = True '新增主要格線
  21. '.Axes(xlCategory).MajorGridlines.Format.Line.DashStyle = msoLineSysDash '格線為虛線
  22. ''==調整X軸格線的顏色
  23. '.Axes(xlCategory).MajorGridlines.Format.Line.ForeColor.ObjectThemeColor = msoThemeColorAccent2
  24. '.Axes(xlCategory).MajorGridlines.Format.Line.ForeColor.Brightness = 0.400000006
  25. '===設定K線顏色
  26. .ChartGroups(1).HasUpDownBars = True
  27. .ChartGroups(1).UpBars.Interior.ColorIndex = 3'上漲為紅色
  28. .ChartGroups(1).UpBars.Border.ColorIndex = 3
  29. .ChartGroups(1).DownBars.Interior.ColorIndex = 10'下跌為綠色
  30. .ChartGroups(1).DownBars.Border.ColorIndex = 10
  31. End With

  32. Set ChtObj = Nothing'釋放資源
  33. End Sub
新增一個CommandButton,然後輸入下列程式碼

Private Sub CommandButton1_Click()
Dim xRng As Range
Set xRng = Sheets("加權指數").Range("A2:E30") 'K線起始範圍
Call DrawkOHLC(xRng, "加權指數", "TWSE_K")
End Sub
建立一個DrawOHLC副程式輸入參數:
DataRng:資料範圍
TitleName:圖表抬頭
ChartName:內嵌圖表名稱(方便以後選取)
====================================大功告成
PS:第一次寫網誌,說明不清還請告知
下一步建立捲軸:移動檢視;建立縮放功能
程式碼下載:
VBA劃K線圖-1

沒有留言:

張貼留言