1、概述
本例子为画k线图,同时画出5日,10日,30日均线,且鼠标移动到上面会显示当前交易日,开盘价,收盘价,最高价,最低价。
移动平均线:Moving Average,简称MA,MA是用统计分析的方法,将一定时期内的证券价格(指数)加以平均,并把不同时间的平均值连接起来,形成一根MA。5日,10日:短线操作参考;30日:中线操作参考;150日,200日:长线参考。
2、选取参数
交易日范围:2020-01-01到2020-04-20;
公司:港股上市的腾讯控股(0700.HK)。也可选A股公司:如平安银行(000001.SZ),具体设置见下面代码;
3、主要用到的模块
yfinance模块:获取行情数据(from yahoo);
mpl_finance模块:计算日k线,均线;
4、实现代码
定义画k线图函数DrawKLine(),主要实现:
获取行情数据,画图及显示样式设置,定义鼠标停留显示当前交易日行情数据事件(闭包函数实现)
import datetime
#import pandas_datareader.data as web # 是一个远程获取金融数据的Python工具,但是经常提示连接错误,不好用,换成了yfinance
import yfinance as yf
import numpy as np
import mpl_finance as mpf # mpl_finance替换 import matplotlib.finance as mpf画k线图,网上说mpl_finance已经弃用,这里还能用,暂时用它
import matplotlib.pyplot as plt # 可视化模块
def DrawKLine():
# 1、获取数据
print('获取yahoo财经行情数据')
# 获取指定公司,指定时间内的行情数据
'''
df_stockload = web.DataReader("000001.SZ", "yahoo", datetime.datetime(2020, 1, 1), datetime.datetime(2020, 4, 26)) # 如 A股平安银行:000001.SZ 港股腾讯:0700.HK
print(df_stockload.Open)
'''
# 上面那个获取行情数据的方式,经常连不上报错 "远程主机强迫关闭了一个现有的连接"
# 连不上可用yfinance,参考:https://zhuanlan.zhihu.com/p/44212853,获取方式如下所示:
# ['0700.HK', 'BABA', 'BIDU', 'GOOGL', 'FB', 'AMZN'] 选取腾讯,阿里巴