貌似三个月没有更新博客园了,当时承诺的第二篇金融数据分析与挖掘这几天刚好又做了总结,在国内经济不景气的现在来对这个话题结个尾。
主要是用利用数学、统计技术、机器学习技术获得投资机会。
注:大型的基金、券商、投资机构大多数投资股票使用基本面分析方式。量化投资中基本面分析得益于一些市场模型理论的提出。
第一个问题,什么是什么是MACD指标,请看下图:
指数平滑异同移动平均线(Moving Average Convergence /Divergence, MACD)是股票交易中一种常见的技术分析工具,由Gerald Appel于1970年代提出,用于研判股票价格变化的强度、方向、能量,以及趋势周期,以便把握股票买进和卖出的时机。
import pandas as pd
import talib
import matplotlib.pyplot as plt
import numpy as np
from mpl_finance import candlestick_ochl
# 读取日线的数据
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
# dif: 12, 与26日的差别
# dea:dif的9日以移动平均线
dif, dea, macd_hist = talib.MACD(stock_day['close'].values, fastperiod=12, slowperiod=26, signalperiod=9)
# 构造画布,里面包含了一个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()
# 通过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("卖出的某某股票多少股")
注:BOLL指标是美国股市分析家约翰·布林根据统计学中的标准差原理设计出来的一种非常简单实用的技术分析指标
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)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有