关键词:涨停分析, 量化
开发环境
编程语言: Python 3.6
必要包:tushare, pandas
Tushare(www.tushare.org/)是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。
股市中涨停板包含了很多市场信息, 例如市场的热点, 投资偏好,多空情绪等 。
分析脚本设计
1. 设置脚本工作目录
2. 从网络获取股市行情数据,并保存到excel文件
3. 把excel行情数据文件读到内存。
4.清洗数据,提取涨停板的股票数据。
5.涨停板分析,统计:价格区间,换手率,市净率,行业热点,波动振幅 。
获得行情数据并保存到文件
import tushare as ts
import pandas as pd
import time
import os
import platform
# 从tushare获取
def get_today_all_ts(date):
date_now = date
# 先获得所有股票的收盘数据
df_close = ts.get_today_all()
# 获得所有股票的基本信息
df_basics = ts.get_stock_basics()
df_all = pd.merge(left=df_close, right=df_basics, on='name', how='outer')
df_all['code'] = df_all['code'].astype(str) + ' '
# 保存数据
df_all.to_csv(str(date_now) + '_ts.csv', index=False, encoding='gbk')
print(' \n %s is downloaded.' % (str(date_now)))
#print(df_all)
return df_all
读取excel行情数据
# 读取TDX的每日股票数据
csvdata_file = abs_dir + os.sep + date_now + '_ts.csv'
print('\n excel file is %s ' %(csvdata_file) )
df = pd.read_csv(csvdata_file, encoding='gbk')
df.fillna(0, inplace=True)
df.replace('nan ', 0, inplace=True)
df['timeToMarket'] = pd.to_datetime(df['timeToMarket'])
df[['changepercent', 'pe', 'mktcap', 'nmc']] = df[['changepercent', 'pe', 'mktcap', 'nmc']].astype(float)
df['code'] = df['code'].astype(str) # 转化成str后,NAN也变成nan str格式
df['pb_x'] = df['pb_x'].astype(float)
df[['high', 'low', 'settlement']] = df[['high', 'low', 'settlement']].astype(float)
# 找出涨停的股票
limit_up = df[df['changepercent'] >= 9.70]
limit_down = df[df['changepercent'] <= -9.70]
print(' \n 涨停数量:%d 个 ' % (limit_up.shape[0]))
涨停分析
def analyze_turnoverratio(market_ups):
print('\n换手率: %s ' %(limit_up.columns.values[9] ))
labels_turnover = ["0 -1%", "1 -3%", "3 -7%", "7 -10%", "10 -15%", "15% --" ]
#print(labels_turnover)
turnoverArr_counter = [0]*6
lines = market_ups.shape[0]
for i in range(lines):
if market_ups.iloc[i, 9] >= 15:
turnoverArr_counter[5] +=1
continue
if market_ups.iloc[i, 9] >= 10:
turnoverArr_counter[4] +=1
continue
if market_ups.iloc[i, 9] >= 7:
turnoverArr_counter[3] +=1
continue
if market_ups.iloc[i, 9] >= 3:
turnoverArr_counter[2] +=1
continue
if market_ups.iloc[i, 9] >= 1:
turnoverArr_counter[1] +=1
else:
turnoverArr_counter[0] +=1
#pprint.pprint(dict(zip(labels_turnover, turnoverArr_counter)), width=1)
for (k,v) in dict(zip(labels_turnover, turnoverArr_counter)).items():
print("%s :\t %d" %(k, v))
return 0
运行结果
总结:通过对20190412行情数据分析,涨停股票价格主要集中在6 ~20元, 换手率集中在3 -7%和10 -15%,主力在后面强力推动。市净率集中在2 ~5区间,市净率特别在评估高风险企业,企业资产大量为实物资产的企业时受到重视。振幅在6 ~9%之间非常少,6 ~9%是过渡区间,要么冲高回落,要么冲击成功。一字板涨停的也要重点关注,再复盘一下他们的k线。
stockeverydcheck.py脚本下载路径:https://share.weiyun.com/5DDYOZK