本教程将从以下几个方面详细介绍Python画K线的方法及技巧,包括数据处理、图表绘制、基本设置等等。
一、数据处理
1、获取数据
在Python中可以使用Pandas库获取K线数据。通过以下代码可以获取A股市场某只股票的历史K线:
import tushare as ts
import pandas as pd
# 获取A股市场某只股票的历史K线
df = ts.get_hist_data('600519')
2、数据预处理
在获取到原始数据后,需要对数据进行预处理,提取出需要用到的部分,包括时间、开盘价、收盘价、最高价、最低价等。
# 从获取到的原始数据中提取时间、开盘价、收盘价、最高价、最低价等信息
data_list = []
for date, row in df.iterrows():
data_list.append([date.strftime('%Y-%m-%d'), row['open'], row['close'], row['high'],row['low']])
二、图表绘制
1、使用Matplotlib绘制K线图
使用Matplotlib库的finance子库可以方便的绘制出K线图。
import matplotlib.pyplot as plt
from mpl_finance import candlestick2_ohlc
# 创建一个子图
fig, ax = plt.subplots()
# 绘制K线
candlestick2_ohlc(ax, data_list)
# 设置x轴的刻度及标签
ax.set_xticks(range(0, len(data_list), 30))
ax.set_xticklabels([data_list[i][0] for i in range(0, len(data_list), 30)])
# 设置标题等基本属性
ax.set_title('K Line Chart')
ax.set_xlabel('Date')
ax.set_ylabel('Price')
plt.show()
2、使用Plotly绘制K线图
使用Plotly库可以绘制出交互式的K线图,并且支持导出HTML文件。
import plotly.graph_objs as go
# 创建K线图数据
data = [
go.Candlestick(
x=[row[0] for row in data_list],
open=[row[1] for row in data_list],
high=[row[3] for row in data_list],
low=[row[4] for row in data_list],
close=[row[2] for row in data_list]
)
]
# 定义布局
layout = go.Layout(
title='K Line Chart',
xaxis=dict(
title='Date',
rangeslider=dict(
visible=False
)
),
yaxis=dict(
title='Price'
)
)
# 创建图表
fig = go.Figure(data=data, layout=layout)
# 在浏览器中显示图表
fig.show()
# 导出图表为HTML文件
fig.write_html('kline_chart.html')
三、基本设置
1、设置K线的颜色及线型
# 在Matplotlib中设置K线的线宽、颜色、形状等
candlestick2_ohlc(ax, data_list, width=0.5, colorup='r', colordown='g')
# 在Plotly中设置K线的线宽、颜色、形状等
data = [
go.Candlestick(
x=[row[0] for row in data_list],
open=[row[1] for row in data_list],
high=[row[3] for row in data_list],
low=[row[4] for row in data_list],
close=[row[2] for row in data_list],
increasing=dict(line=dict(width=1, color='red')),
decreasing=dict(line=dict(width=1, color='green'))
)
]
2、设置K线的显示范围
# 在Matplotlib中设置K线的显示范围
ax.set_xlim(0, len(data_list))
ax.set_ylim(min([row[4] for row in data_list]) * 0.9, max([row[3] for row in data_list]) * 1.1)
# 在Plotly中设置K线的显示范围
layout = go.Layout(
xaxis=dict(
range=['2010-01-01', '2022-01-01']
),
yaxis=dict(
range=[min([row[4] for row in data_list]) * 0.9, max([row[3] for row in data_list]) * 1.1]
)
)
3、设置K线的其他属性
# 在Matplotlib中设置K线的其他属性
ax.grid(True) # 显示网格线
ax.format_xdata = mdates.DateFormatter('%Y-%m-%d') # 设置x轴显示格式为年-月-日
ax.xaxis_date() # x轴刻度显示为日期
# 在Plotly中设置K线的其他属性
layout = go.Layout(
title='K Line Chart',
xaxis=dict(
title='Date',
rangeslider=dict(
visible=False
)
),
yaxis=dict(
title='Price'
),
showlegend=False, # 不显示图例
hovermode='x' # 鼠标悬停后显示的数据
)
原创文章,作者:FUKZG,如若转载,请注明出处:https://www.506064.com/n/374799.html
微信扫一扫
支付宝扫一扫