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()