金融數據分析與挖掘具體實現方法 -2

貌似三個月沒有更新博客園了,當時承諾的第二篇金融數據分析與挖掘這幾天恰好又作了總結,在國內經濟不景氣的如今來對這個話題結個尾。python

一、(量化)投資的方法基礎分析

1.1 投資的兩種方法

  • 技術分析

    • 技術分析是指研究過去金融市場的資訊(主要是經由使用圖表)來預測價格的趨勢與決定投資的策略。技術分析師相信有所謂的價格趨勢,K線圖、移動平均線以及技術指標應用於股票或期貨投資當中數組

      注:一些機構中經驗豐富的技術分析師(交易員),可能會得到很好的收益。不少我的投資者也比較多技術分析,但缺少豐富的經驗等安全

  • 基本面分析

    • 基本面分析又稱基本分析,是以證券的內在爲依據,着重於對影響證券價格及其走勢的各項因素的分析,宏觀數據、市場行爲、企業財務數據、交易數據等進行分析,以此決定投資購買何種證券及什麼時候購買。主要是用利用數學、統計技術、機器學習技術得到投資機會。機器學習

      注:大型的基金、券商、投資機構大多數投資股票使用基本面分析方式。量化投資中基本面分析得益於一些市場模型理論的提出。ide

二、趨勢追蹤

         趨勢追蹤,就是假設以前價格的上漲預示着以後一段時間內也會上漲,不少交易都是圍繞着趨勢追蹤模型。好比各類突破的信號等。 趨勢追蹤屬於技術分析。

經常使用的技術指標:

  • MACD

  • RSI

  • BOLL

接下來咱們挨個分析,首先要了解一下什麼是雙均線策略

雙均線策略是量化策略中經典的策略之一,其屬於趨勢跟蹤策略,實現思想以下:

  • 預設兩條均線一條長均線、一條短均線。好比一個ma=5,一個ma=60, 5的均線被稱做快線,60的均線被稱做慢線

  • 買入策略中當快線上穿慢線(ma5上穿ma60)稱爲造成金叉買點信號,買入股票

  • 賣出策略中當快線下穿慢線(ma5下穿ma60)稱爲造成死叉賣點信號,賣出股票

分析

  • 當快線穿過慢線的時候,表明最近價格已經上漲,以前的價格已經下跌一段時間

做用

  • 好比macd,kdj等等依賴均線的技術指標,其核心思想都差很少,做爲其餘趨勢策略的基礎。

2.1 MACD分析

第一個問題,什麼是什麼是MACD指標,請看下圖:函數

        指數平滑異同移動平均線(Moving Average Convergence /Divergence, MACD)是股票交易中一種常見的技術分析工具,由Gerald Appel於1970年代提出,用於研判股票價格變化的強度、方向、能量,以及趨勢週期,以便把握股票買進和賣出的時機。工具

2.1.1 MACD的原理以及計算公式

原理:MACD的意義和雙移動平均線基本相同,即由快、慢均線的離散、聚合表徵當前的多空狀態和股價可能的發展變化趨勢,但閱讀起來更方便。

計算公式:

  • 一、MACD首先行計算出快速(通常選12日)移動平均值與慢速(通常選26日)移動平均值

  • 二、12日EMA數值減去26日EMA數值獲得,差離值DIF

  • 三、根據離差值計算其9日的EMA,即離差平均值,是所求的MACD值。爲了避免與指標原名相混淆,又名DEA或DEM(訊號線)

  • 四、DIF與DEA的差值,爲MACD柱狀圖

交易信號種類:

  • 差離值(DIF值)與訊號線(DEA值,又稱MACD值)相交;

  • 差離值與座標軸相交;

  • 股價與差離值的背離。

交易信號分析:

  • 差離值和訊號線

    • 差離值(DIF)造成「快線」(短時間線),訊號線(DEM)造成「慢線」(長期線)。
      當差離值(DIF)從下而上穿過訊號線(DEM),爲買進訊號(金叉);相反若從上而下穿越,爲賣出訊號。(死叉)
  • 差離值(MACD柱狀圖)

    • 一、當紅柱狀持續放大時,代表投資市場處於牛市行情中,價格走勢將繼續上漲,這時應持倉待漲或短線買入投資品種,直到紅柱沒法再放大時才考慮賣出

    • 二、當綠柱狀持續放大時,代表投資市場處於熊市行情之中,價格走勢將繼續下跌,這時應持幣觀望或賣出投資品種,直到綠柱開始縮小時才能夠考慮少許買入投資品種。

    • 三、當紅柱狀開始縮小時,代表投資市場牛市即將結束(或要進入調整期),價格走勢將大幅下跌,這時應賣出大部分投資品種而不能買入投資品種。

    • 四、當綠柱狀開始收縮時,代表投資市場的大跌行情即將結束,價格走勢將止跌向上(或進入盤整),這時能夠少許進行長期戰略建倉而不要輕易賣出投資品種。

    • 五、當紅柱開始消失、綠柱開始放出時,這是投資市場轉市信號之一,代表投資市場的上漲行情(或高位盤整行情)即將結束,價格走勢將開始加速下跌,這時應開始賣出大部分投資品種而不能買入投資品種。

    • 六、當綠柱開始消失、紅柱開始放出時,這也是投資市場轉市信號之一,代表投資市場的下跌行情(或低位盤整)已經結束,價格走勢將開始加速上升,這時應開始加碼買入投資品種或持倉待漲。

2.1.2 TA-Lib庫進行指標運算

2.1.3 接下來咱們本身動手一步步計算MACD指標、而後畫出圖形

效果圖:

第一步:導入包

import pandas as pd
import talib
import matplotlib.pyplot as plt
import numpy as np
from mpl_finance import candlestick_ochl

第二步:獲取股票日線數據

實現思路和步驟是:

  1. 從文件讀取股票數據

  2. 按照日期索引排序

  3. 增長一列index索引數據, 後續不須要日期索引

  4. 抽取index, open, close, high, low五列數據, 後續用來計算MACD值, 其餘的值不須要

# 讀取日線的數據
stock_day = pd.read_csv("./data/stock_day/stock_day.csv")
stock_day = stock_day.sort_index()[:200]
stock_day['index'] = [i for i in range(stock_day.shape[0])]
arr = stock_day[['index', 'open', 'close', 'high', 'low']].values

第三步:分析

  • 計算MACD值的TA-Lib函數

  • 傳入的參數序列必須是Numpy序列

  • 返回的值

    • macd:差離值
    • macdsignal:信號線
    • macdhist:MACD柱狀圖值

方法: 使用股票的收盤價格(close)去計算MACD指標數據 快速移動週期爲12,慢速移動週期爲26,DIF的移動平均線的週期爲9日

# dif: 12, 與26日的差異
# dea:dif的9日以移動平均線
dif, dea, macd_hist = talib.MACD(stock_day['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
  • 經過畫圖展現MACD值

  • 步驟:

    • 構造畫布,裏面包含了一個axes

    • 產生一個x的單維數組

    • 畫出DIF差離值線

    • 畫出MACD柱狀圖

    • 顯示一下K線圖對比MACD指標圖

# 構造畫布,裏面包含了一個axes
fig, axes = plt.subplots(nrows=1, ncols=1, figsize=(20, 8), dpi=100)

# 產生一個x的單維數組
index = [i for i in range(200)]

# 畫出dif這根差離值線
plt.plot(index, dif, color='y', label="差離值 DIF")
plt.plot(index, dea, color='b', label="訊號線 DEA")

# 畫出MACD柱狀圖
# 分開正負的柱狀圖去畫出來
# 畫第一個bar, macd_hist,若是大於0, 保留當前值,若是小於0,變爲0,得出一個red_hist
# 畫出第二個bar,macd_hisr,若是小於0, 保留當前值,若是大於0,直接變爲0
red_hist = np.where(macd_hist > 0 , macd_hist, 0)
green_hist = np.where(macd_hist < 0 , macd_hist, 0)

plt.bar(index, red_hist, label="紅色MACD值", color='r')
plt.bar(index, green_hist, label="綠色MACD值", color='g')

# 顯示一下K線圖對比MACD指標圖
candlestick_ochl(axes, arr, width=0.2, colorup='r', colordown='g')

plt.legend(loc="best")
plt.show()

    瞭解一下背離分析,若是解釋得不全面能夠自行百度:當股價創新低,但MACD並無相應創新低(牛市背離或頂背離),視爲利多訊息,股價跌勢或將完結。相反,若股價創新高,但MACD並無相應創新高(熊市背離或底背離),視爲利空訊息。 

咱們對MACD作個總結

      MACD是一種中長線的研判指標。當股市強烈震盪或股價變化巨大(如送配股拆細等)時,可能會給出錯誤的信號。因此在決定股票操做時,應該謹慎參考其餘指標,以及市場情況,不能徹底信任差離值的單一研判,避免形成損失。

2.2 RSI分析

  什麼是RSI?

2.2.1 RSI相對強弱指數

相對強弱指數(RSI)是經過比較一段時期內的平均收盤漲數和平均收盤跌數來分析市場買沽盤的意向和實力,從而做出將來市場的走勢。

注:RSI在1978年6月由WellsWider創制的一種經過特定時期內股價的變更狀況計算市場買賣力量對比,來判斷股票價格內部本質強弱、推測價格將來的變更方向的技術指標。

2.2.2 RSI原理和計算方法

  • 一、相對強弱指標的區間段

    • RSI6通常是6日相對強弱指標
    • RSI12 通常是12日相對強弱指標
    • RSI24通常是24日相對強弱指標
  • 二、強弱指標的計算公式以下

    • RSI=100×RS/(1+RS) 或者 RSI=100-100÷(1+RS)
    • RS=X天的平均上漲點數/X天的平均下跌點數
  • 三、RS計算方式

    • RS=14天內收市價上漲數之和的平均值/14天內收市價下跌數之和的平均值

爲了更好的理解上面的公式,經過下面的計算案例:

2.2.3 RSI交易信號判斷

RSI值的意義

  • (1)受計算公式的限制,不論價位如何變更,強弱指標的值均在0與100之間。

  • (2)強弱指標保持高於50表示爲強勢市場,反之低於50表示爲弱勢市場。

  • (3)強弱指標多在70與30之間波動。當六日指標上升到達80時,表示股市已有超買現象,若是一旦繼續上升,超過90以上時,則表示已到嚴重超買的警惕區,股價已造成頭部,很可能在短時間內反轉回轉。

  • 好比:在牛市時,一般藍籌股的強弱指數如果80,便屬超買,如果30便屬超賣,至於二三線股,強弱指數如果85至90,便屬超買,如果20至25,便屬超賣。所以咱們對一隻股票採起買/賣行動前,必定要先找出該只股票的超買/超賣水平。至於衡量一隻股票的超買/超賣水平,咱們能夠參考該股票過去12個月之強弱指標記錄。

長短線結合來判斷交易

  • 1.白色的短時間RSI值在20如下,由下向上交叉黃色的長期RSI值時爲買入信號。

  • 2.白色的短時間RSI值在80以上,由上向下交叉黃色的長期RSI值時爲賣出信號。

2.2.4 RSI指標計算以及交易判斷實現

  • RSI指標計算

  • 傳入的參數序列必須是Numpy序列

  • real:返回固定區間內的柱狀圖值

# 經過taLib計算出RSI的指標值
# 斷線RSI
short_rsi = talib.RSI(stock_day['close'].values, timeperiod=6)
# 長線RSI
long_rsi = talib.RSI(stock_day['close'].values, timeperiod=12)

  交易判斷實現

  • 賣出信號:在交叉點以前,短線< 長線,交叉點以後:斷線 >長線

  • 交易信號,賣出的判斷:在交叉點以前,短線 > 長線,交叉點以後:短線 <長線

# 進行交易的一個判斷
for i in range(1, 200):
    # 取出短線RSI
    s = short_rsi[i]

    # 取出長線的RSI值
    l = long_rsi[i]

    # 交易信號信號輸入
    # 賣出信號:在交叉點以前,短線< 長線,交叉點以後:斷線 >長線
    if s < 45 and short_rsi[i-1] < long_rsi[i-1] and short_rsi[i] > long_rsi[i]:

        # 進行買入
        print("買入某某股票多少股")

    # 交易信號,賣出的判斷:在交叉點以前,短線 > 長線,交叉點以後:短線 <長線
    if s > 65 and short_rsi[i-1] > long_rsi[i-1] and short_rsi[i] < long_rsi[i]:

        print("賣出的某某股票多少股")

  咱們對RSI作個總結

    尤爲在市場劇烈震盪時,還應參考其它指標進行綜合分析,不能簡單地依賴RSI的信號來做出買賣決定,能夠和MACD結合一塊兒使用。

2.3 布林線分析

2.3.1 BOLL指標

布林線(BOLL)利用統計原理,求出的標準差及其信賴區間,從而肯定股價的波動範圍及將來走勢,利用波帶顯示股價的安全高低價位,於是也被稱爲布林帶。其上下限範圍不固定,隨股價的滾動而變化。股價波動在上限和下限的區間以內,這條帶狀區的寬窄,隨着股價波動幅度的大小而變化,股價漲跌幅度加大時,帶狀區變寬,漲跌幅度狹小盤整時,帶狀區則變窄。

注:BOLL指標是美國股市分析家約翰·布林根據統計學中的標準差原理設計出來的一種很是簡單實用的技術分析指標

2.3.2 BOLL指標的計算方法

BOLL指標的計算公式

  • 中軌線(MA)=N日的移動平均線

  • 上軌線(UP)=中軌線+兩倍的標準差

  • 下軌線(DN)=中軌線-兩倍的標準差

強弱指標的計算公式以下

  • 計算N日內的收盤價的移動平均值MA

  • 計算標準差MD

  • 計算MB、UP、DN線

    • MB=(N-1)日的MA

    • UP=MB+2×MD

    • DN=MB-2×MD

2.3.3 BOLL交易信號判斷

BOLL布林線的意義

  • 股價在中軌上方運行時屬較安全狀態,短線可持有觀望。

  • 股價在中軌下方運行時屬較危險狀態,短線應趁反彈中軌時離場。

  • 股價突破上軌線後,回探中軌線時不跌破中軌線,顯示後市看漲,可持股或加倉。

  • 股價跌破下軌線後,反彈中軌線時不站回中軌線以上,則後市看跌,要賣出。

  • 通道忽然呈急劇變窄收攏形狀時,顯示股價方向將會發生重大轉折,這時結合其餘指數技術進行行情判斷。

2.3.4 BOLL布林線計算以及交易判斷實現

  • 布林線指標計算

  • close : 5日close的array,傳入的參數序列必須是Numpy序列

  • timeperiod :默認5天的平均線

  • nbdevip/nbdevdn : 默認2倍的標準差

upperband, middleband, lowerband = talib.BBANDS(df["close"].values[:200],timeperiod=20,nbdevdn=2,nbdevup=2)
candlestick_ochl(axes[2],quotes=arr,width=0.2, colorup='r', colordown='g');
axes[2].plot(range(200),upperband)
axes[2].plot(range(200),middleband)
axes[2].plot(range(200),lowerband)
相關文章
相關標籤/搜索