首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >金融数据分析与挖掘具体实现方法 -2

金融数据分析与挖掘具体实现方法 -2

作者头像
汪凡
发布2019-02-22 16:05:49
2.2K0
发布2019-02-22 16:05:49
举报
文章被收录于专栏:python成长之路python成长之路

貌似三个月没有更新博客园了,当时承诺的第二篇金融数据分析与挖掘这几天刚好又做了总结,在国内经济不景气的现在来对这个话题结个尾。

1、(量化)投资的方法基础分析

1.1 投资的两种方法

  • 技术分析
    • 技术分析是指研究过去金融市场的资讯(主要是经由使用图表)来预测价格的趋势与决定投资的策略。技术分析师相信有所谓的价格趋势,K线图、移动平均线以及技术指标应用于股票或期货投资当中 注:一些机构中经验丰富的技术分析师(交易员),可能会获得很好的收益。很多个人投资者也比较多技术分析,但缺乏丰富的经验等
  • 基本面分析
    • 基本面分析又称基本分析,是以证券的内在为依据,着重于对影响证券价格及其走势的各项因素的分析,宏观数据、市场行为、企业财务数据、交易数据等进行分析,以此决定投资购买何种证券及何时购买。主要是用利用数学、统计技术、机器学习技术获得投资机会。 注:大型的基金、券商、投资机构大多数投资股票使用基本面分析方式。量化投资中基本面分析得益于一些市场模型理论的提出。

2、趋势追踪

         趋势追踪,就是假设之前价格的上涨预示着之后一段时间内也会上涨,很多交易都是围绕着趋势追踪模型。比如各种突破的信号等。 趋势追踪属于技术分析。

常用的技术指标:

  • 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的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。

计算公式:

  • 1、MACD首先行计算出快速(一般选12日)移动平均值与慢速(一般选26日)移动平均值
  • 2、12日EMA数值减去26日EMA数值得到,差离值DIF
  • 3、根据离差值计算其9日的EMA,即离差平均值,是所求的MACD值。为了不与指标原名相混淆,又名DEA或DEM(讯号线)
  • 4、DIF与DEA的差值,为MACD柱状图

交易信号种类:

  • 差离值(DIF值)与讯号线(DEA值,又称MACD值)相交;
  • 差离值与坐标轴相交;
  • 股价与差离值的背离。

交易信号分析:

  • 差离值和讯号线
    • 差离值(DIF)形成“快线”(短期线),讯号线(DEM)形成“慢线”(长期线)。 当差离值(DIF)从下而上穿过讯号线(DEM),为买进讯号(金叉);相反若从上而下穿越,为卖出讯号。(死叉)
  • 差离值(MACD柱状图)
    • 1、当红柱状持续放大时,表明投资市场处于牛市行情中,价格走势将继续上涨,这时应持仓待涨或短线买入投资品种,直到红柱无法再放大时才考虑卖出
    • 2、当绿柱状持续放大时,表明投资市场处于熊市行情之中,价格走势将继续下跌,这时应持币观望或卖出投资品种,直到绿柱开始缩小时才可以考虑少量买入投资品种。
    • 3、当红柱状开始缩小时,表明投资市场牛市即将结束(或要进入调整期),价格走势将大幅下跌,这时应卖出大部分投资品种而不能买入投资品种。
    • 4、当绿柱状开始收缩时,表明投资市场的大跌行情即将结束,价格走势将止跌向上(或进入盘整),这时可以少量进行长期战略建仓而不要轻易卖出投资品种。
    • 5、当红柱开始消失、绿柱开始放出时,这是投资市场转市信号之一,表明投资市场的上涨行情(或高位盘整行情)即将结束,价格走势将开始加速下跌,这时应开始卖出大部分投资品种而不能买入投资品种。
    • 6、当绿柱开始消失、红柱开始放出时,这也是投资市场转市信号之一,表明投资市场的下跌行情(或低位盘整)已经结束,价格走势将开始加速上升,这时应开始加码买入投资品种或持仓待涨。

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原理和计算方法

  • 1、相对强弱指标的区间段
    • RSI6一般是6日相对强弱指标
    • RSI12 一般是12日相对强弱指标
    • RSI24一般是24日相对强弱指标
  • 2、强弱指标的计算公式如下
    • RSI=100×RS/(1+RS) 或者 RSI=100-100÷(1+RS)
    • RS=X天的平均上涨点数/X天的平均下跌点数
  • 3、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)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-12-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、(量化)投资的方法基础分析
    • 1.1 投资的两种方法
      •          趋势追踪,就是假设之前价格的上涨预示着之后一段时间内也会上涨,很多交易都是围绕着趋势追踪模型。比如各种突破的信号等。 趋势追踪属于技术分析。
      • 常用的技术指标:
      • 接下来我们挨个分析,首先要了解一下什么是双均线策略
      • 双均线策略是量化策略中经典的策略之一,其属于趋势跟踪策略,实现思想如下:
      • 分析
      • 作用
  • 2、趋势追踪
    • 2.1 MACD分析
      • 2.1.1 MACD的原理以及计算公式
        • 原理:MACD的意义和双移动平均线基本相同,即由快、慢均线的离散、聚合表征当前的多空状态和股价可能的发展变化趋势,但阅读起来更方便。
        • 计算公式:
        • 交易信号种类:
        • 交易信号分析:
      • 2.1.2 TA-Lib库进行指标运算
        • 2.1.3 接下来我们自己动手一步步计算MACD指标、然后画出图形
          • 效果图:
          • 第一步:导入包
          • 第二步:获取股票日线数据
          • 第三步:分析
          • 我们对MACD做个总结
          •   什么是RSI?
      • 2.2 RSI分析
        • 2.2.1 RSI相对强弱指数
          • 2.2.2 RSI原理和计算方法
            • 2.2.3 RSI交易信号判断
              • RSI值的意义
              • 长短线结合来判断交易
            • 2.2.4 RSI指标计算以及交易判断实现
              •   我们对RSI做个总结
          • 2.3 布林线分析
            • 2.3.1 BOLL指标
              • 2.3.2 BOLL指标的计算方法
              • 2.3.3 BOLL交易信号判断
              • 2.3.4 BOLL布林线计算以及交易判断实现
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档