本教程將從以下幾個方面詳細介紹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/zh-hk/n/374799.html
微信掃一掃
支付寶掃一掃