1. Leia os dados
TuShare é um pacote de interface de dados financeiros python gratuito e de código aberto . Realize principalmente o processo de coleta, limpeza e processamento de dados até o armazenamento de dados financeiros, como ações, o que pode fornecer aos analistas financeiros dados rápidos, limpos e diversos que são fáceis de analisar, reduzindo muito sua carga de trabalho em termos de fontes de dados. Torná-los mais focados na pesquisa e implementação de estratégias e modelos. Considerando as vantagens do pacote Python pandas na análise quantitativa financeira, a maioria dos formatos de dados retornados por TuShare são do tipo pandas DataFrame, o que é muito conveniente para análise e visualização de dados com pandas / NumPy / Matplotlib. Claro, se você está acostumado a usar o Excel ou bancos de dados relacionais para análise, você também pode usar a função de armazenamento de dados do TuShare para salvar todos os dados localmente para análise. A pedido de alguns usuários, a partir da versão 0.2.5, TuShare é compatível com Python 2.xe Python 3.x. Alguns códigos foram refatorados e alguns algoritmos foram otimizados para garantir aquisição de dados eficiente e estável.
O poder do python está nos irmãos de um monte de bibliotecas de terceiros. O mesmo vale para ações. Hoje vou falar sobre esta biblioteca. É a biblioteca tushare (endereço oficial: http://tushare.org/), e você pode usá-la diretamente Instalação Pip, tome a instalação do Windows como exemplo.
Para o processo de instalação, consulte meu blog anterior: Clique para ver o tutorial da biblioteca de terceiros de instalação do python com comandos.
Vou usar a instalação do notebook jupyter como um exemplo para mostrar a você: Após a
instalação ser concluída, a próxima etapa é obter os dados do estoque.
import tushare as ts
df = ts.get_k_data('000002',start = "2010-01-01",end = '2020-01-01')
df.set_index('date',inplace = True)
df.head()
Obtendo a exibição do resultado dos dados:
Nosso caso a seguir é realizado através do Vanke A, então vamos obter os dados do Vanke A primeiro e obter a empresa listada Vanke de 01-01-2009 a 01-01-2019 por meio da função get_k_data (). Para dados de estoque de nível diário, o parâmetro "000002" é o código de estoque da Vanke.
import tushare as ts
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
df.head()
Exibição do resultado:
''
Observação: preço de abertura, preço de fechamento de fechamento, alto é o preço mais alto, baixo é o preço mais baixo, volume é o volume de negociação e código é o código de estoque.
Se você deseja obter dados e gravá-los em uma pasta de trabalho do Excel, podemos pressionar o seguinte código:
df.to_excel('D:\\Python\\股价数据.xlsx',index = False)
Nota: O parâmetro de índice False significa que o índice da linha original é ignorado e um arquivo Excel denominado "stock price data.xlsx" é gerado após a execução.
Por exemplo, eu configurei para salvar o arquivo em D: \ Python \. Você não precisa defini-lo. Contanto que você saiba onde está a pasta padrão, você deve encontrá-la facilmente.
2. Desenhe tendências de estoque
Desenhe um gráfico de ações abaixo:
import tushare as ts
import matplotlib.pyplot as plt
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
plt.rcParams['font.sans-serif']=['simHei']#用来正常显示中文
df['close'].plot(title = '股票走势图')
Exibição de resultados: O
acima usa a função plot (), também podemos usar diretamente algumas funções da biblioteca Matplotlib.
import tushare as ts
from datetime import datetime
import matplotlib.pyplot as plt
df = ts.get_k_data('000002',start ='2009-01-01',end='2019-01-01')
#要注意细节,调整日期格式,让横坐标的显示效果更佳清洗,美观
df['date'] = df['date'].apply(lambda x:datetime.strptime(x,'%Y-%m-%d'))
plt.plot(df['date'],df['close'])
plt.show()
Mostrar resultados de corrida:
3. Desenhe um gráfico de velas
1. Instale a biblioteca para desenhar gráficos de linha K
Existem dois tipos de linha K. Se o preço de fechamento do dia for maior do que o preço de abertura, o preço sobe no dia, o que é chamado de linha Yang. Normalmente pintado com uma linha vermelha.
Pelo contrário, o preço sobe no dia, que é denominado Yinxian, que normalmente é desenhado como uma linha verde.
Python também usa uma biblioteca ao desenhar velas, a biblioteca mpl_finance, consulte o tutorial de instalação push anterior, a função candlestick_ochl () na biblioteca desenha gráficos de velas e os seguintes casos são escritos em python para referência.
Captura de tela da instalação bem-sucedida: (método de instalação do notebook jupyter)
2. Obter dados
import tushare as ts
import matplotlib.pyplot as plt
import mpl_finance as mpf
import seaborn as sns #引入图表美化库
sns.set()#激活
df = ts.get_k_data('000002','2019-06-01','2019-09-30')
df.head()
Resultados operacionais:
3. Ajuste de formato de data e conversão de tabela
from matplotlib.pylab import date2num
import datetime #导入日期格式涉及的两个库
def date_to_num(dates):
num_time = []
for date in dates:
date_time = datetime.datetime.strptime(date,'%Y-%m-%d')
num_date = date2num(date_time)
num_time.append(num_date)
return num_time
df_arr = df.values #将DataFrame中数据转换成二维数组
df_arr[:,0] = date_to_num(df_arr[:,0])# 将二维数组中日期转换成数字格式
4. Desenhe a linha K
fig,ax = plt.subplots(figsize = (15,6))
mpf.candlestick_ochl(ax,df_arr,width = 0.6,colorup = 'r',colordown = 'g',alpha = 1.0)
plt.grid(True)#绘制网格线
ax.xaxis_date()#设置x轴的刻度线格式为常规日期格式
Exibição de resultados em execução:
adicione gráfico de média móvel: considere a adição de média móvel de 5 dias e média móvel de 10 dias como exemplo,
df['MA5'] = df['close'].rolling(5).mean()
df['MA10'] = df['close'].rolling(10).mean()
Veja como um gráfico:
plt.rcParams['font.sans-serif'] = ['SimHei'] #设置正常中文显示
fig,ax = plt.subplots(figsize = (15,6))
mpf.candlestick_ochl(ax,df_arr,width = 0.6,colorup = "r",colordown = 'g',alpha = 1.0) #绘制K直线
plt.plot(df_arr[:,0],df["MA5"])
plt.plot(df_arr[:,0],df['MA10'])
plt.grid(True) #绘制网格线
plt.title('万科A')#标题
plt.xlabel('日期')#X轴
plt.ylabel('价格')#y轴
ax.xaxis_date()
Resultado da operação:
adicionamos um gráfico de barras de volume diário com base no acima. código mostrado abaixo:
fig,axes = plt.subplots(2,1,sharex = True,figsize = (15,8))
ax1,ax2 = axes.flatten()
#绘制第一张子图:K线图和均线图
mpf.candlestick_ochl(ax1,df_arr,width = 0.6,colorup = 'r',colordown = 'g',alpha = 1.0)
ax1.plot(df_arr[:,0],df['MA5']) #绘制5日均线
ax1.plot(df_arr[:,0],df['MA10'])#绘制10日均线
ax1.set_title('万科A')
ax1.set_ylabel('价格')
ax1.grid(True)
ax1.xaxis_date()
#绘制第二张子图:每日成交柱形图
ax2.bar(df_arr[:,0],df_arr[:,5])
ax2.set_xlabel('日期')
ax2.set_ylabel('成交量')
ax2.grid(True)
ax2.xaxis_date()
Resultados
corridos : Este artigo apresenta principalmente o uso de três ferramentas de análise de dados, NumPy, pandas e Matplotlib, para desenhar imagens e usar dados de estoque para realizar algumas operações. Você também pode usar esses dados para fazer alguma análise de dados e prática.