聽完朋友的“天眼地量”選股理論後,熱血沸騰,打算找一隻股票試試。可以整個股票市場有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。經過實測,在半小時左右就可以獲取完所有股票的數據了。
後面就是對每隻股票進行分析篩選了,代碼還沒有想出來:(。