python自绘K线图

excel和ython的公开库mplfinance画股票k线都不理想,只好自己画,然后才能想加什么加什么。

from cycler import cycler# 用于定制线条颜色
import datetime
from jqdatasdk import *
import math
import matplotlib as mpl# 用于设置曲线参数
import matplotlib.pyplot as plt
from matplotlib.pylab import date2num
import mplfinance  as mpf
import numpy as np
import pandas as pd
import os
import talib as ta
import time
import tushare as ts

# Helper libraries
auth('your count', 'your password')
# 查询是否连接成功
is_auth = is_auth()
print(is_auth)

Cycle=89
paddata=2*Cycle
tickCnt=300
dataCnt=paddata+tickCnt
interval=4
symbol='300033.XSHE'
resdir="e:\\temp\\"
endTm=datetime.datetime(2020,11,7,9,0,0)

tm=endTm.time()
if tm>datetime.time(12,00,00):
    print("g")
else:
    print("l")

stockdf=get_price(symbol, end_date=endTm, frequency='1m', fields=['open','high','low','close','volume'], skip_paused=True, fq='pre', count=dataCnt)
stockdf.replace([np.inf, -np.inf], np.nan).dropna(axis=0)
df=pd.DataFrame()
# 转换为日期格式
df['Date'] = pd.to_datetime(stockdf.index)
df['Open'] = list(stockdf['open'])
df['High'] = list(stockdf['high'])
df['Low'] = list(stockdf['low'])
df['Close'] = list(stockdf['close'])
df['Volume'] = list(stockdf['volume'])
df['line'] = list(stockdf['close'])
# 将日期列作为行索引
#df.set_index(['Date'], inplace=True)
fig, (ax, ax2) = plt.subplots(2, 1, sharex=True,figsize=(1200/72,480/72))

figName="{0}({1}--{2})".format(symbol,df['Date'][paddata-1],df['Date'][dataCnt-1])

MA89=list(ta._ta_lib.MA(df["Close"],Cycle))

for x in range(tickCnt):
    curData=paddata+x
    if df['Close'][curData]>MA89[curData] and MA89[curData]>=MA89[curData-1]:
        fmt="r"
    if df['Close'][curData]<MA89[curData] and MA89[curData]<=MA89[curData-1]:
        fmt="g"
    if df['Close'][curData]>MA89[curData] and MA89[curData]<MA89[curData-1]:
        fmt="y"
    if df['Close'][curData]<MA89[curData] and MA89[curData]>MA89[curData-1]:
        fmt="m"
    ax.plot([x,x],[df['High'][curData],df['Low'][curData]],"k",linewidth=0.5)
    ax.plot([x,x],[df['Open'][curData],df['Close'][curData]],fmt,linewidth=2.5)

ax.plot(MA89[paddata:],"r",label='MA89')
ax.grid(True)
ax.legend()
ax.set_title(label=figName)

aa={"color":"b"}

ax2x=range(tickCnt)
ax2.bar(ax2x,height=list(df['Volume'][paddata:]),label='Volume',**aa)

labels=[]
xticks = np.arange(0, tickCnt+1, 50)
for m in xticks:  
    labels.append(df['Date'][paddata+m-1])
    #labels = [df['Date'][0], df['Date'][50], df['Date'][100], df['Date'][150], df['Date'][200],df['Date'][250],df['Date'][300]]
ax2.grid(True)
ax2.legend()
ax2.set_xticks(xticks)
ax2.set_xticklabels(labels)

plt.savefig(resdir+symbol+".svg")
plt.show()

 

Python是一种广泛使用的编程语言,它提供了丰富的库和工具来进行数据可视化。绘制K线图是一种常见的数据可视化方式,用于展示金融市场的股票价格走势。 在Python中,有多个库可以用来绘制K线图,其中较为常用的是Matplotlib和Plotly。下面我将介绍使用这两个库来绘制K线图的方法: 1. 使用Matplotlib库绘制K线图: Matplotlib是一个功能强大的绘图库,可以用来创建各种类型的图表,包括K线图。以下是使用Matplotlib绘制K线图的基本步骤: - 导入必要的库:`import matplotlib.pyplot as plt` - 使用`candlestick2_ohlc`函数绘制K线图:`ax.candlestick2_ohlc(ax, open, high, low, close)` - 设置X轴和Y轴的标签、标题等:`ax.set_xlabel('Date')`、`ax.set_ylabel('Price')`、`ax.set_title('K线图')` - 显示图表:`plt.show()` 2. 使用Plotly库绘制K线图: Plotly是一个交互式的数据可视化库,可以创建漂亮且交互性强的图表。以下是使用Plotly绘制K线图的基本步骤: - 导入必要的库:`import plotly.graph_objects as go` - 创建一个K线图对象:`fig = go.Figure(data=go.Candlestick(x=dates, open=open_prices, high=high_prices, low=low_prices, close=close_prices))` - 设置X轴和Y轴的标签、标题等:`fig.update_layout(xaxis_title='Date', yaxis_title='Price', title='K线图')` - 显示图表:`fig.show()` 以上是使用Matplotlib和Plotly库绘制K线图的基本方法。你可以根据自己的需求选择适合的库来进行绘制。如果你有其他关于Python绘制K线图的问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值