Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >金融数据分析与挖掘具体实现方法 -2

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

作者头像
汪凡
发布于 2019-02-22 08:05:49
发布于 2019-02-22 08:05:49
2.3K00
代码可运行
举报
文章被收录于专栏:python成长之路python成长之路
运行总次数:0
代码可运行

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

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指标、然后画出图形

效果图:

第一步:导入包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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值, 其他的值不需要
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 读取日线的数据
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日
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 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指标图
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 构造画布,里面包含了一个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:返回固定区间内的柱状图值
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 通过taLib计算出RSI的指标值
# 断线RSI
short_rsi = talib.RSI(stock_day['close'].values, timeperiod=6)
# 长线RSI
long_rsi = talib.RSI(stock_day['close'].values, timeperiod=12)
  交易判断实现
  • 卖出信号:在交叉点之前,短线< 长线,交叉点之后:断线 >长线
  • 交易信号,卖出的判断:在交叉点之前,短线 > 长线,交叉点之后:短线 <长线
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 进行交易的一个判断
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倍的标准差
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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 删除。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Quant102】 经典技术指标 Pandas 实现(第一部分)
ApacheCN_飞龙
2024/05/16
1400
教程 | 用于金融时序预测的神经网络:可改善移动平均线经典策略
选自Medium 机器之心编译 参与:黄小天、路雪 近日,Medium 上出现了一篇题为《Neural networks for algorithmic trading: enhancing clas
机器之心
2018/05/10
1.4K0
零基础玩转投资理财 || 技术指标分析与运用(波浪线与江恩线)
股价与平均移动线之间的偏离程度。当股价偏离平均线太大时,都有一个回归的过程。如果股价在均线之上,则为正值;如果在正线之下,则为负值。指标常规显示有三条线,默认参数为6,12,24.(小编觉得参数仅供参考)
小Bob来啦
2020/12/08
5850
零基础玩转投资理财 || 技术指标分析与运用(波浪线与江恩线)
读《股票投资入门与实战技巧》— 股票投资入门
(1)股票的概念和特征 股票是股份公司在筹集资本时向出资人公开或私下发行的,用以证明出资人股东身份和权利,并根据持有人所持有的股份数享有相应的权益和承担相应的义务的凭证。
Ewall
2018/09/04
7050
MA:移动平均线(Moving Average);平滑异同移动平均线(MACD)
是一种相当新颖、实用的技术分析指标。它起先用于期货市场的分析,后被广泛用于股市的中短期趋势分析,是期货和股票市场上最常用的技术分析工具之一。
zhangjiqun
2024/12/14
1820
实战:基于技术分析的Python算法交易
本文是用 Python 做交易策略回测系列文章的第四篇。上个部分介绍了以下几个方面内容:
AI科技大本营
2019/11/14
1.6K0
实战:基于技术分析的Python算法交易
用Python可视化股票指标
但是一个量化交易可以通过回测系统建立信心然后让其一如既往的运行,以达到让钱生钱的目的,并且是自动的。
py3study
2020/01/06
3K0
用Python可视化股票指标
MACD和KDJ
MACD称为异同移动平均线,是从双指数移动平均线发展而来的,由快的指数移动平均线(EMA12)减去慢的指数移动平均线(EMA26)得到快线DIF,再用2×(快线DIF-DIF的9日加权移动均线DEA)得到MACD柱。MACD由黄线DEA(慢线)、白线DIF(快线)、红色能量柱(多头)、绿色能量柱(空头)、0轴(多空分界线)五部分组成,其变化代表着市场趋势的变化。不同K线级别的MACD代表当前级别周期中的买卖趋势。
zhangjiqun
2024/12/14
980
金融数据分析与挖掘具体实现方法 -1
关于投资的几个类别,一般我们将天使、VC、PE三个部分统称为私募(Private Equity),指的是没有在证券交易所公开上市交易的资产。
汪凡
2019/03/01
1.5K0
金融数据分析与挖掘具体实现方法 -1
用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)
本人最近在尝试着发表“以股票案例入门Python编程语言”系列的文章,在这些文章里,将用Python工具绘制各种股票指标,在讲述各股票指标的含义以及计算方式的同时,验证基于各种指标的交易策略,本文是第一篇,通过K线和均线案例讲述Numpy,Maplotlib等相关库的用法,并且还用代码案例来验证买卖的交易策略。在本系列的后面文章中,将陆续通过python绘制成交量、KDJ、MACD、RSI和OBV等指标,而且还会用Python编写针对这些指标的交易策略,敬请关注。
用户1153489
2019/09/29
2.9K0
用python的matplotlib和numpy库绘制股票K线均线的整合效果(含从网络接口爬取数据和验证交易策略代码)
股市行情指标计算原理和趋势反映--量化交易1-基础
量能也成为成交量,代表多空双方交战的过程,一定程度上决定了价格和走势。量能和价格走势进行结合,成为量价结合的分析方法。
嘘、小点声
2020/11/13
2.1K0
股市行情指标计算原理和趋势反映--量化交易1-基础
在MT4上使用双线MACD指标源码
基本用法:MACD金叉:DIFF由下向上突破DEA,为买入信号。MACD死叉:DIFF由上向下突破DEA,为卖出信号。MACD绿转红:MACD值由负变正,市场由空头转为多头。MACD红转绿:MACD值正转负,市场多头转空头。DIFF与DEA均为正值,即都在零轴线以上时,大势属于多头市场,DIFF向上突破DEA,可以做买入信号。DIFF与DEA均为负值,即都在零轴线以下时,大势属于空头市场,DIFF向下跌破DEA,可做卖出信号。DEA在盘整局面失误率高,配合RSI及KDJ指标可以适当弥补缺点。
全栈程序员站长
2022/08/23
6840
在MT4上使用双线MACD指标源码
盘一盘 Python 系列 7 - PyEcharts
Echarts 是一个由百度开源的数据可视化工具,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可,而 Python 就不用多说了。
用户5753894
2019/07/05
2.6K0
盘一盘 Python 系列 7 - PyEcharts
用matplotlib和pandas绘制股票MACD指标图,并验证化交易策略
从数学角度来分析,MACD指标是根据均线的构造原理,对股票收盘价进行平滑处理,计算出算术平均值以后再进行二次计算,它是属于趋向类指标。
用户1153489
2020/05/26
4.2K0
实战 | 用 Python 选股票,据说可以多挣个20%
本文将使用Python来可视化股票数据,比如绘制K线图,并且探究各项指标的含义和关系,最后使用移动平均线方法初探投资策略。 数据导入 这里将股票数据存储在stockData.txt文本文件中,我们使用pandas.read_table()函数将文件数据读入成DataFrame格式。 其中参数usecols=range(15)限制只读取前15列数据,parse_dates=[0]表示将第一列数据解析成时间格式,index_col=0则将第一列数据指定为索引。 import pandas as pd i
小小科
2018/05/04
2.6K0
实战 | 用 Python 选股票,据说可以多挣个20%
Python量化交易入门进阶指南(全)
程序员,或许内心深处都怀揣着一个量化投资的梦想,渴望凭借自己的编程和人工智能技能,再补点基础的金融知识,我们便可以构建一个量化交易系统,轻松实现财富自由。这样的理想确实诱人,似乎让我们看到了轻松实现个人价值的可能性,也让我们看到了用代码改变世界的力量。
算法进阶
2024/01/17
5.9K0
Python量化交易入门进阶指南(全)
Python股市数据分析教程(二):学会它,或可以实现半“智能”炒股
摘要: 本篇文章是”Python股市数据分析”两部曲中的第二部分。在本篇文章中,我们讨论了均线交叉策略的设计、回溯检验、基准测试以及实践中可能出现的若干问题,并结合Python代码实现了一个基于均线交叉的交易策略系统。 注意:本篇文章所涉及的看法、意见等一般性信息仅为作者个人观点。本文的任何内容都不应被视为金融投资方面的建议。此外,在此给出的所有代码均无法提供任何保证。选择使用这些代码的个人需自行承担风险。 交易策略 我们把在未来条件满足时将被终止的交易称为未平仓交易。多头仓位是指在交易过程中通过金融商品增
CDA数据分析师
2018/02/05
2.1K0
Python股市数据分析教程(二):学会它,或可以实现半“智能”炒股
量化分析经典策略总结
菲阿里四价同 R Breaker 一样,也是一种 日内 策略交易,适合短线投资者。
EmoryHuang
2022/10/31
2.5K0
Python3对股票数据进行分析
以先进的数学模型替代人为的主观判断,利用计算机技术从庞大的历史数据中海选能带来超额收益的多种“大概率”事件以制定策略,极大地减少了投资者情绪波动的影响,避免在市场极度狂热或悲观的情况下作出非理性的投资决策。
全栈程序员站长
2022/07/01
2.1K0
Python3对股票数据进行分析
使用 Python 进行财务数据分析实战
在迅速变化的金融领域中,数据分析和解释的能力至关重要。本文探讨了Python在金融数据分析中的应用,包括使用Pandas、NumPy和Matplotlib等Python库,它们能够处理股票市场数据、展示趋势并构建交易策略。无论你是经验丰富的金融分析师还是初入投资领域者,这些见解和技巧都将增强你的分析技能,拓宽对金融市场动态的理解,并帮助你在股票市场做出明智的决策。
数据STUDIO
2024/07/24
9840
使用 Python 进行财务数据分析实战
推荐阅读
相关推荐
【Quant102】 经典技术指标 Pandas 实现(第一部分)
更多 >
LV.1
掌阅科技python服务开发工程师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验