一般来说券商 APP 曾经提供了十分丰盛的图表和数据,然而架不住老手各种天马行空的想像,以及对于能够寻找到圣杯的迷之自信,所以有必要介绍一下对于自定义图形和指标的实现形式。
数据源
比拟常见的几种数据源:财经网站、数据平台、数据接口。
财经网站
西方财产、新浪财经等等,此类网站很多,只是须要本人编写爬虫解析网页。
数据平台
大多为提供 PythonAPI,比方 Tushare、baostock 等,不过要么须要积分要么数据涵盖补全。
数据接口
雅虎财经相比国内的财经网站,特地提供了获取数据的接口服务,防止了编写爬虫和相熟各个数据平台的 API。
获取数据
由以下网址能够拜访苹果的历史数据:
https://au.finance.yahoo.com/quote/AAPL/history?p=AAPL
由图中 Download
的链接能够失去下载历史数据的接口,格局如下:
https://query1.finance.yahoo.com/v7/finance/download/AAPL?period1=1615556170&period2=1647092170&interval=1d&events=history&includeAdjustedClose=true
因而,咱们能够构建下载某个股票在指定工夫范畴内、指定工夫周期的历史数据。
#!/bin/bash
#
# Author: greedy_alpha@163.com
#
# 基于雅虎 API 获取股票历史数据
# 需传入要获取的股票代码、起止工夫、工夫周期等参数
###############################
# 参数校验
###############################
if [$# -lt 3]; then
echo "Error: Please enter correct parameters"
exit 1
else
code=$1
sday=$2
eday=$3
if [$# -gt 3]; then
inte=$4
else
inte="1d"
fi
fi
###############################
# 根底配置
###############################
HOME=$(cd "$(dirname"$0")" || exit; pwd)
cd "$HOME" || exit;
s_tms=$(date -d ${sday} +%s)
e_tms=$(date -d ${eday} +%s)
api="https://query1.finance.yahoo.com/v7/finance/download"
args="events=history&includeAdjustedClose=true"
data_path=../../data
file_name=${code}-${sday}-${eday}-${inte}.csv
###############################
# 函数实现
###############################
get_data() {url="${api}/${code}?period1=${s_tms}&period2=${e_tms}&interval=${inte}&${args}"
curl -k ${url} > ${data_path}/${file_name}
}
###############################
# 数据处理
###############################
main() {get_data}
main
获取苹果 2022 年 1 月到 2 月的交易数据
sh get_history.sh AAPL 20220101 20220228
2022-02-14,167.369995,169.580002,166.559998,168.880005,168.880005,86185500
2022-02-15,170.970001,172.949997,170.250000,172.789993,172.789993,62527400
2022-02-16,171.850006,173.339996,170.050003,172.550003,172.550003,61177400
2022-02-17,171.029999,171.910004,168.470001,168.880005,168.880005,69589300
2022-02-18,169.820007,170.539993,166.190002,167.300003,167.300003,82772700
自定义图形和指标
有了数据,接下来就能够绘制自定义的图形和指标。
对于指标,TA-Lib 库提供了相当丰盛的技术剖析指标。
对于图形,mplfinance 库提供了金融数据可视化的基本功能。
这里以 KAMA- 考夫曼均线为例进行绘图。相比于一般均线,KAMA 增加了平滑系数,在肯定水平上缓解了一般均线在短时间周期时过于灵活、长时间周期又过于机灵的问题。
def indicators_kama():
data["kama"] = talib.KAMA(data["Close"], timeperiod=30)
画图时按三行一列的布局。
fig = plt.figure()
fig.set_size_inches((20, 16))
ax_main = fig.add_subplot(3, 1, 1)
# 前面两个图应用与 ax_main 雷同的 X 轴
ax_macd = fig.add_subplot(3, 1, 2, sharex=ax_main)
ax_vol = fig.add_subplot(3, 1, 3, sharex=ax_main)
为防止非交易日造成图形不间断, 将索引与日期做映射
def format_date(x, pos):
if x < 0 or x > len(data.index) - 1:
return ''
return data.index[int(x)]
ax_main.xaxis.set_major_formatter(tk.FuncFormatter(format_date))
# X 轴五天一个距离显示
ax_main.xaxis.set_major_locator(tk.MultipleLocator(5))
显示 MACD 指标时对零轴高低按不同色彩显示
ax_macd.plot(data.index, data["macd"], label="macd", color='y')
ax_macd.plot(data.index, data["macd_signal"], label="signal", color='b')
macd_hist = data[data.macd_hist >= 0].macd_hist
ax_macd.bar(macd_hist.index.tolist(), macd_hist, color='r')
macd_hist = data[data.macd_hist < 0].macd_hist
ax_macd.bar(macd_hist.index.tolist(), macd_hist, color='g')
ax_macd.get_xaxis().set_visible(False)
ax_macd.legend()
对于大于二十日均值的交易量按红色显示, 其它则按绿色显示
volume = data[data.Volume >= data.mavol].Volume
ax_vol.bar(volume.index.tolist(), volume, color='r')
volume = data[data.Volume < data.mavol].Volume
ax_vol.bar(volume.index.tolist(), volume, color='g')
ax_vol.get_xaxis().set_visible(False)
最终成果