听完朋友的“天眼地量”选股理论后,热血沸腾,打算找一只股票试试。可以整个股票市场有3600+只股票怎么找呢?不急,我们有python3和tushare。先上代码
import time
import datetime
import tushare as ts
import numpy as np
import pandas as pd
import csv
import pandas_datareader.data as web
from sqlalchemy import create_engine
import pymysql
import winsound
duration = 500 # millisecond
freq = 440 # Hz
path = 'C:/Users/Administrator/Desktop/stockpy/'
csv_file = path + 'StockList.csv'
ts.set_token('sfdsdfs')
pro = ts.pro_api()
def get_stock_list():
data = pro.stock_basic(exchange='', list_status='L', fields='ts_code,symbol,name,area,industry,list_date')
# data.to_csv(csv_file)
def get_daily_data():
csv_data = pd.read_csv(csv_file, low_memory = False)#防止弹出警告
list_df = pd.DataFrame(csv_data)
row = list_df.shape[0] #
today = datetime.datetime.today().date()
# for i in range(3):
for i in range(row):
bar_df = ts.pro_bar(ts_code=str(list_df.iloc[i,1]), start_date='20180701', end_date=str(today),
ma=[5, 10, 20, 30, 60])
print(list_df.iloc[i,1])
tmp_df = bar_df.sort_values(axis = 0, ascending = True, by = 'trade_date')
# print(tmp_df.head(3))
tmp_df = tmp_df.reset_index(drop = True)
# print(tmp_df.head(3))
tmp_df.to_csv(path + 'bar_' + str(list_df.iloc[i,1]) + '.csv')
winsound.Beep(freq, duration)
def run():
get_stock_list()
get_daily_data()
winsound.Beep(880, 1000)
if __name__ == '__main__':
run()
两个function,get_stock_list用来获取当天有效的股票列表信息,保存到csv文件。get_daily_data用来获取所有有效股票的日线数据。因为“天眼地量”理论要用到日线、均线和量能,所以选择了5日、10日、20日、30日和60日的均线数据和对应的量能。每次下载完一只股票后,就提示一声winsound.Beep(freq,duration)。因为tushare设定每分钟只能获取不超过200只股票的数据,我就是设定了提示音响的时间为500ms。经过实测,在半小时左右就可以获取完所有股票的数据了。
后面就是对每只股票进行分析筛选了,代码还没有想出来:(。