In [2]:
# -*- coding:utf-8 -*-
import tushare as ts
import matplotlib.pyplot as plt
#import matplotlib.finance as mpf
import mpl_finance as mpf
import matplotlib.ticker as ticker
import datetime
import numpy as np
import pandas as pd
In [3]:
def candle_stick(stock,start_date, end_date):
data = ts.get_k_data(stock_selected,start_date,end_date)
if data is not None: #check if data is valid
data[data['volume']==0]=np.nan
data=data.dropna()
data.sort_values(by='date',ascending=True,inplace=True)
data=data[['date','open','close','high','low','volume']]
date_tickers=pd.DataFrame({'date':data.date.values})
#date_tickers.index.values
final_date_tickers=date_tickers[date_tickers.index.values%10==0]
#change data to matrix
#data_mat=data.as_matrix() #will be removed
#data_mat=data.values
data_mat=np.array(data)
#data_mat[1:,0]=np.arange(0:len(data_mat[1:,0]))
data_mat[:,0]=np.arange(0,len(data_mat[:,0]))
fig,(ax1,ax2)=plt.subplots(2, sharex=True,figsize=(20,10))
mpf.candlestick_ochl(ax1,data_mat,width=0.5,colordown='#53c156', colorup='#ff1717')
ax1.grid(True)
ax1.xaxis_date()
plt.bar(data_mat[:,0],data_mat[:,5],width=0.5)
ax2.set_ylabel('Volume')
#ax2.xaxis.set_major_locator(ticker.MultipleLocator(6))
#ax2.xaxis.set_major_formatter(ticker.FuncFormatter(format_date))
#plt.xticks(final_date_tickers.index, final_date_tickers['date'], rotation='vertical')
plt.xticks(final_date_tickers.index, final_date_tickers['date'], rotation=45)
ax2.grid(True)
plt.show()
else:
print("can't get the data in time!")
In [4]:
import time
start_date = '2018-07-01'
now = int(time.time())#这是时间戳
#转换为其他日期格式,如:"%Y-%m-%d %H:%M:%S"
timeArray = time.localtime(now)
Time = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
# ================需要修改的参数==============
end_date = Time #'2017-08-14 15:15:00', 最后生成k线日期
#end_date = '2019-03-01'
stock_selected = '600487'
candle_stick(stock_selected,start_date, end_date)