Quantmod Tutorial:圖形分析(三)

圖形是對數據最直觀的展示,也為我們進一步的分析提供了詳細的可視化結果。今天我們主要學習使用quantmod包對獲取的金融數據進行可視化展示。

一、基本繪圖函數

1. chartSeries詳解

chartSeries()函數是quantmod包的主繪圖函數。該函數的主要參數有:

> chartSeries(x, TA=addVo(), type = c("auto", "candlesticks","bars","line", "matchsticks"), theme = chartTheme("black"),...) n# x:時序數據n# type:畫圖的類型n# TA:技術分析指標n# pars:圖形參數n# theme:主題n

> chartSeries(AAPL)n

這張圖上半部分是K線圖,下半部分是這段時間的交易量柱狀圖。

# 使用subset參數選取部分數據n> chartSeries(AAPL,subset = last 2 months)n

2. reChart函數

在chartSeries()函數繪圖的基礎上,quantmod包還提供了reChart()函數,用於進行繪圖各參數的調整。

> chartSeries(AAPL)n> reChart(major.ticks=months,subset=first 10 weeks)n

二、三種基本圖形

1. 條形圖

> barChart(AAPL,bar.type=hlc,subset=2017::2017-06)n

2. 蠟燭圖(K線圖)

> candleChart(AAPL,multi.col=TRUE,subset=2016::2017-06,theme = white) n

3. 線圖

> lineChart(AAPL,line.type=h,TA=NULL,subset=2014::2017-06)n

三、技術分析圖形

1. 平均趨向指標ADX:addADX()

ADX的特點:ADX無法告訴我們趨勢的發展方向,可是,如果趨勢存在,ADX可以衡量趨勢的強度。ADX上升,代表趨勢增強。

若ADX值超過30,則視為強勁趨勢;若在20與30之間,視為中性趨勢;若低於20,則表明行情來回遊走,沒有表現明顯的趨勢。

> chartSeries(AAPL,subset=2016::2017-06)n> addADX()n

2. 平均真實波幅指標ATR:addATR()

ATR表示真實波動幅度均值,是一個用來測量價格的波動性指標,即顯示市場變化率的指標。在早期多用於期貨市場,但現在也用於股票、外匯等。ATR指標越高,則價格趨勢逆轉的幾率就越大,反之成立。

> chartSeries(AAPL,subset=2016::2017-06)n> addATR()n

3. 布林線指標BBands:addBBands()

通常在股價盤轉的過程中,投資者最想知道的一定是股價票盤整到什麼時候,才會產生行情。因為如果太早買入股票,而股票不漲,資金的利用率就會降低,而且投資者還要承擔股價下跌的風險。而布林線指標恰好可以在這時發揮其神奇的作用,對盤整的結束給予正確的指示。

該指標在圖形上畫出三條線,其中上下兩條線可以分別看成是股價的壓力線和支撐線,而在兩條線之間還有一條股價平均線,布林線指標的參數最好設為20。一般來說,股價會運行在壓力線和支撐線所形成的通道中。

> chartSeries(AAPL,subset=2016::2017-06)n> addBBands()n

4. 順勢指標CCI:addCCI()

超賣超買指標:專門測量股價是否已經超出常態分布範圍。一般來說,CCI上升超過100時,買入;當CCI下降低於-100,賣出。

CCI計算公式如下:

CCI(N日)=(TP-MA)/ MD / 0.015nTP=(最高價+最低價+收盤價)/3nMA=近N日收盤價的累積之和/NnMD=近N日(MA-收盤價)的絕對值之和/Nn0.015計算係數,N為計算周期n

> chartSeries(AAPL,subset=2016::2017-06)n> addCCI()n

5. 相對強弱指標RSI:addRSI()

相對強弱指數RSI是一個測量速度和變化的價格變動的指標。並且在0到100之間的震蕩。一般情況下在RSI值超過70時買進,低於30時賣出。

> chartSeries(AAPL,subset=2016::2017-06)n> addRSI()n

6. 交易量指標Vo:addVo()

成交量指標Vo,顯示了投資者對市場的興趣大小,成交量大,表示投資者興趣大。

> chartSeries(AAPL,subset=2016::2017-06)n> addVo()n

7. 威廉指標WPR:addWPR()

威廉指數主要用於研究股價的波動,通過分析股價波動變化中的峰與谷決定買賣時機。它利用振蕩點來反映市場的超買超賣現象,可以預測循期內的高點與低點,從而顯示出有效的買賣信號,是用來分析市場短期行情走勢的技術指標。

威廉指標的基本使用方法如下:

當W&R高於80,即處於超賣狀態,行情即將見底,應當考慮買進。

當W&R低於20,即處於超買狀態,行情即將見頂,應當考慮賣出。

在W&R進入高位後,一般要回頭,如果股價繼續上升就產生了背離,是賣出信號。

在W&R進入低位後,一般要反彈,如果股價繼續下降就產生了背離。

W&R連續幾次撞頂(底),局部形成雙重或多重頂(底),是賣出(買進)的信號。

> chartSeries(AAPL,subset=2016::2017-06)n> addWPR()n

8. 拋物線指標SAR:addSAR()

拋物線指標也稱為停損點轉向指標,這種指標與移動平均線的原理頗為相似,屬於價格與時間並重的分析工具。

SAR指標的一般研判標準包括以下四方面:

  1. 當股票股價從SAR曲線下方開始向上突破SAR曲線時,為買入信號,預示著股價一輪上升行情可能展開,投資者應迅速及時地買進股票。
  2. 當股票股價向上突破SAR曲線後繼續向上運動而SAR曲線也同時向上運動時,表明股價的上漲趨勢已經形成,SAR曲線對股價構成強勁的支撐,投資者應堅決持股待漲或逢低加碼買進股票。
  3. 當股票股價從SAR曲線上方開始向下突破SAR曲線時,為賣出信號,預示著股價一輪下跌行情可能展開,投資者應迅速及時地賣出股票。
  4. 當股票股價向下突破SAR曲線後繼續向下運動而SAR曲線也同時向下運動,表明股價的下跌趨勢已經形成,SAR曲線對股價構成巨大的壓力,投資者應堅決持幣觀望或逢高減磅。

> chartSeries(AAPL,subset=2016::2017-06)n> addSAR()n

9. 區間震蕩線DPO:addDPO()

DPO是一個排除價格趨勢的震蕩指標。它試圖通過扣除前期移動平均價來消除長期趨勢對價格波動的干擾,從而便於發現價格短期的波動和超買超賣水平。DPO>0,表明目前處於多頭市場;DPO<0,表明目前處於空頭市場。

在0軸上方,設定一條超買線,當DPO波動至超買線時,股價會形成短期高點。

在0軸下方,設定一條超賣線,當DPO波動至超賣線時,股價會形成短期低點。

# 同時繪製WPR,SAR和DPO指標n> chartSeries(AAPL,subset=2016::2017-06,TA="addWPR();addSAR();addDPO()")n

10. 其他技術指標小結

  • Chaikin資金流量指標CMF:addCMF()
  • Chande動量擺動指標CMO:addCMO()
  • 指數平均數指標EMA:addEMA()
  • 包絡線指標Envelope:addEnvelope()
  • 彈性成交量加權移動平均線指標EVWMA:addEVWMA()
  • 移動平均收斂發散指標MACD:addMACD()
  • 動量指標Momentum:addMomentum()
  • 合約終止線Expiry:addExpiry()
  • 隨機動量指標SMI:addSMI()
  • 雙指數移動平均指標DEMA:addDEMA()
  • 變動率指標ROC:addROC()
  • 相對強弱指標RSI:addRSI()
  • 加權移動平均線指標WMA:addWMA()
  • 零滯後指數移動平均ZLEMA:addZLEMA()

11. 其他輔助函數

  • addTA()
  • newTA()
  • setTA(type = c("chartSeries", "barChart", "candleChart"))
  • listTA(dev)

四、圖形的縮放與修飾

1. 圖形縮放

當我們查看金融數據的圖形時,有時候會希望查看其中某個時段對應的圖形。這時,我們可以藉助zooom() 函數對chartSeries() 函數的繪圖結果進行縮放或者說截取圖形子集。

zooom()的用法很簡單,在現有繪圖基礎上,運行 zooom() 函數,然後,根據提示分別點擊結果區間對應的左邊界和右邊界即可。

> chartSeries(AAPL,subset=2016::2017-06)n> zooom(n=1,eps=2)n

原圖形:

放大局部後的圖像:

除此之外,我們還可以運行zoomChart()函數,這個函數可以通過設定圖形對應的時間區間來更精確的對圖形進行縮放:

> chartSeries(AAPL,subset=2016::2017-06)n> zoomChart("2017-05-01::2017-06-01", yrange=NULL)n

2. 圖形細節修改

我們可以通過chartTheme函數進行圖形的細節修改及自定義。通過chartTheme函數可以定製的元素可使用help(chartTheme)查詢。

# 查看wihte主題的參數n> chartTheme(white)nList of 24n $ fg.col : chr "#000000"n $ bg.col : chr "#F0F0F0"n $ grid.col : chr "#CCCCCC"n......n# 修改white主題的部分參數n> chartTheme(white,up.col=blue,dn.col=red)nList of 24n $ fg.col : chr "#000000"n $ bg.col : chr "#F0F0F0"n $ grid.col : chr "#CCCCCC"n......n> chartSeries(AAPL,subset=2016::2017-06,theme = white)n

# 修改技術指標對應的圖形元素n> chartTheme(addRSI.col=red)n

references:

1. Quantmod Tutorial

2. Quantmod | R-bloggers

3. Notes/charting.md at master · dengyishuo/Notes · GitHub

4. Quantmod/indicators.R at master · YasserZhang/Quantmod · GitHub

推薦閱讀:

一場用R語言打造的商務圖表視覺盛宴~
Excel繪製多種風格「柱形圖」
來來來,測試一下你的 Excel 水平,順便學會製作一個小模型
ICT 出口發展的趨勢

TAG:R编程语言 | 金融数据 | 数据可视化 |