#创建两个用于存储买入和卖出的信号的列表
buy_list=[(i['price'],i['time'],'buy') for i in dic if i['action']=='open']
sell_list=[(j['price'],j['time'],'sell') for j in dic if j['action']=='close']
#输出验证是否正确
print(buy_list[:2])
#获取交易日日期
trade_date=list(jqdata.get_trade_days(start_date='2016-10-1',end_date='2017-5-17'))
#获取这段时间内股票的数据
df=get_price('000001.XSHE',start_date='2016-10-1',end_date='2017-5-17',frequency='daily',fields=['open','high','low','close'])
#进行K线绘制
##由有画图函数的需要将index更改为数字
t=range(len(df))
df['t']=pd.Series(t,index=df.index)
df=df.set_index('t')
#将获取到的下单列表里面的时间与df的index对应
##定义一个进行index转换的函数
def order_trans(L):
out_list=[]
for order in L:
t0 = time.strptime(order[1][:10],'%Y-%m-%d')
y,m,d = t0[0:3]
t1=datetime.date(y,m,d)
out_list.append((order[0],trade_date.index(t1),order[2]))
return out_list
order_buy_list=order_trans(buy_list)
order_sell_list=order_trans(sell_list)
#开始绘图
plt.close()
fig = plt.figure(figsize(100,50),dpi=800,frameon=True)
ax1=plt.subplot2grid((18,6),(0,0),rowspan=3,colspan=1)
ax1.set_xlim(0,len(df))
o = list(df['open'].values)
h = list(df['high'].values)
l = list(df['low'].values)
c = list(df['close'].values)
for i,j,k in order_buy_list:
ax1.annotate(k,xy=(j,c[j]-0.1),xytext=(j,c[j]-0.3),arrowprops=dict(facecolor='red',shrink=0.2),horizontalalignment='left',verticalalignment='top')
for i,j,k in order_sell_list:
ax1.annotate(k,xy=(j,c[j]+0.1),xytext=(j,c[j]+0.3),arrowprops=dict(facecolor='green',shrink=0.2),horizontalalignment='left',verticalalignment='top')
quotes = zip(t, o, h, l, c)
df['ma10'] = pd.Series(talib.MA(df['close'].values,10),index=df.index.values)
df['ma10'].plot(ax=ax1, legend=False)
fin.candlestick_ohlc(ax1,quotes, width=0.6, colorup='r', colordown='g')
plt.show()