统计某个交易日所有涨停的股票
我们需要一个入参:交易日日期(curr_date)
执行步骤:
1. 获取交易日curr_date所有交易的股票
2. for 循环,对于每一只股票
3. 获取该股票的代码,名称,当日收盘价,昨日收盘价
3. 首先根据股票代码确定涨停幅度,主板涨停幅度10%,创业板20%
4. 根据昨日收盘价计算涨停价
5. 判断当日收盘价与计算出的涨停价是否一样
6. 如果涨停的话,将股票信息封装成字典添加进列表
7. 对所有涨停股票,按照流通市值从大到小排序
8. 绘制所有涨停股票的K线图、换手率柱状图。
示例代码:
def calc_zhangting(curr_date):
curr_stock_data_dic, curr_stock_data_list = shujushouji.base.get_stock_data_by_date(curr_date) # 获取当天交易的所有股票
zhangting_list = []
for stock_data in curr_stock_data_list:
code = stock_data['code']
name = stock_data['name']
last_close = stock_data['lastclose']
curr_close = stock_data['close']
zhangfu = 0.1
if code.startswith('3'): # 创业板涨停幅度为20%
zhangfu = 0.2
elif code.startswith('8') or code.startswith('4'): # 跳过
continue
if 'ST' in name: # ST股涨停幅度为5%
zhangfu = 0.05
lastclose_zhangting = shujujisuan.mathutils.calc_zhangting(last_close, zhangfu) # 计算涨停价
if lastclose_zhangting != curr_close: # 判断当日收盘价和计算出的涨停价是否相等
continue
zhangting_dic = {'code': code, 'name': name, 'ltshizhi': stock_data['ltshizhi'],
'date': curr_date, 'stock_data_dic': stock_data}
zhangting_list.append(zhangting_dic)
sorted_zhangting_list = sorted(zhangting_list, key=lambda x: (x['ltshizhi']), reverse=True)
for zhangting_dic in sorted_zhangting_list:
print(zhangting_dic['code'] + ', ' + zhangting_dic['name'] + ', 流通市值: ' + str(zhangting_dic['ltshizhi']) + '亿')
如需更多最新股票数据关注头像同名恭祝好!
将所有涨停股票的K线图和换手率等图绘制成图片
示例代码:
all_date_list = shujushouji.base.get_all_date() # 获取所有交易日期
latest_date_index = len(all_date_list) - 1 # 最新交易日的列表序号
code_name_dic, code_onmarket_dic = shujushouji.base.get_all_code_and_onmarket_date() # 获取所有股票代码、名称、上市日期
code_yewu_dic = shujushouji.base.get_yewu_dic()
rik_days = 160
after_days = 80 # 统计日期范围为最近120个交易日内
index = 1
out_dir = 'D:\\stock\\fenxi\\zhangting\\shizhi\\' + curr_date + '\\'
if not os.path.exists(out_dir):
os.makedirs(out_dir)
sorted_zhangting_list = sorted(zhangting_list, key=lambda x: (x['ltshizhi']), reverse=True)
print(len(sorted_zhangting_list))
zong_str = ''
for zhangting_dic in sorted_zhangting_list:
print(zhangting_dic['code'] + ', ' + zhangting_dic['name'] + ', 流通市值: ' + str(zhangting_dic['ltshizhi']) + '亿')
code = zhangting_dic['code']
date = zhangting_dic['date']
date_index = all_date_list.index(date)
name = '未更新'
if code in code_name_dic.keys():
name = code_name_dic[code].replace('*', '')
yewu = '未更新'
if code in code_yewu_dic.keys():
yewu = code_yewu_dic[code]
zong_str = zong_str + zhangting_dic['code'] + ', ' + zhangting_dic['name'] + ', 流通市值: ' \
+ str(zhangting_dic['ltshizhi']) + '亿, 业务: ' + yewu + '\n'
file_name = out_dir + str(index) + '-' + date + '-' + str(
int(zhangting_dic['ltshizhi'])) + '-' + code + '-' + name + '.jpg'
end_date_index = latest_date_index
if (latest_date_index - date_index) > after_days:
end_date_index = date_index + after_days
begin_date_index = end_date_index - rik_days + 1
rik_paras = {'code': code, 'name': name, 'yewu': yewu,
'date': date, 'onmarket_date': code_onmarket_dic[code],
'begin_date': all_date_list[begin_date_index], 'end_date': all_date_list[end_date_index],
'all_date_list': all_date_list,
'stock_data_dic': zhangting_dic['stock_data_dic'],
'reason': '涨停',
'file_name': file_name}
shujuhuitu.rik.paint_rik_mao(rik_paras)
如需更多最新股票数据关注头像同名恭祝好!
本文介绍如何使用Python分析股票,重点在于统计特定交易日的涨停股票。首先获取交易日的所有股票信息,然后判断其是否涨停,涨停股票按流通市值排序,并绘制K线图和换手率图表进行可视化展示。
2496

被折叠的 条评论
为什么被折叠?



