from jqdata import *
import datetime
import pandas as pd
import numpy as np
import re
from collections import Counter
today_date = str(datetime.datetime.now()).split(' ')[0]
# Get the trading days calendar list
td_list = list(get_all_trade_days())
# Get current stock existing as of date specified
get_stock_list = get_all_securities(date=today_date)
stock_index = get_stock_list.index
# Iterating counter that will be used in DataFrame
k=0
# check if today is trading day
# inititialize day counter
d0 = 0
for i in range(len(td_list)):
if str(td_list[i]) == today_date:
d0 = i
print('今天为交易日,日期为:', td_list[d0], '\n')
if d0 == 0:
for i in range(20):
date = str((datetime.datetime.now() + datetime.timedelta(days=-i)).strftime("%Y-%m-%d %H:%M:%S")).split(' ')[0]
for j in range(len(td_list)):
if str(td_list[j]) == date:
d0 = j
print('今日为非交易日,输出上一交易日数据,上一交易日为', td_list[d0], '\n')
if d0 != 0:
break
# Check if today's trading data is updated by database
start_date = td_list[d0]
end_date = td_list[d0]
check_data = get_money_flow('000001.XSHE', start_date, end_date, ["date", "sec_code", "change_pct"])
if len(check_data) == 0:
start_date = td_list[d0 - 4]
end_date = td_list[d0 - 1]
print('今日数据尚无,输出上交易数据,上一交易日为:', end_date, '\n')
else:
start_date = td_list[d0 - 3]
end_date = td_list[d0]
# create a dataframe here first to prepare for further analysis
df = pd.DataFrame(np.zeros([9,len(stock_index)]), index=['当日涨停','连板','今日涨幅','上交易日涨幅','行业','概念','市值(亿)','市盈','市净'])
# Iterate all the stocks
for i in range(len(stock_index)):
# Get rise and fall of all stock
get_stock_rise_fall = get_money_flow(stock_index[i], start_date, end_date, ["date", "sec_code", "change_pct"])
# Get the stock with rise more than 9.9 on the end date, also make sure not empty
if len(get_stock_rise_fall.change_pct) == 4 and get_stock_rise_fall.change_pct[3] >= 9.9 and \
get_stock_rise_fall.change_pct[3] < 10.1:
count = -1
# check for consecutive rise limit, max check= 30 previous trade days
for j in range(30):
day0 = td_list[d0]
day_b30 = td_list[d0 - 30]
get_stock_rise_fall_c = get_money_flow(stock_index[i], day_b30, day0,
["date", "sec_code", "change_pct"])
if get_stock_rise_fall_c.change_pct[len(get_stock_rise_fall_c) - j - 1] >= 9.9 and \
get_stock_rise_fall_c.change_pct[len(get_stock_rise_fall_c) - j - 1] < 10.1:
count += 1
else:
break
# Get industry of the stock
industry = get_industry(stock_index[i], date=end_date)
concept = get_concept(stock_index[i], date=str(end_date))
industry_list = []
concept_list = []
for item1 in industry[stock_index[i]]:
industry_list.append(industry[stock_index[i]][item1]['industry_name'])
for item2 in concept[stock_index[i]]['jq_concept']:
concept_list.append(item2['concept_name'])
# query for company info
q = query(
valuation
).filter(
valuation.code == stock_index[i]
)
fundamentals = get_fundamentals(q, end_date)
pe = fundamentals['pe_ratio'][0]
pb = fundamentals['pb_ratio'][0]
value = fundamentals['market_cap'][0]
print('当日涨停: ', stock_index[i], '\n',
'连板:', count, '今日涨幅: ', get_stock_rise_fall.change_pct[3], '上交易日涨幅:', get_stock_rise_fall.change_pct[2],
'\n',
'行业:', industry_list, '\n',
'概念:', concept_list, '\n',
'市值(亿):', value, '市盈:', pe, '市净:', pb, '\n'
)
# write data into DataFrame
df.iloc[0,k] = stock_index[i]
df.iloc[1,k] = count
df.iloc[2,k] = get_stock_rise_fall.change_pct[3]
df.iloc[3,k] = get_stock_rise_fall.change_pct[2]
df.iloc[4,k] = str(industry_list)
df.iloc[5,k] = str(concept_list)
df.iloc[6,k] = value
df.iloc[7,k] = pe
df.iloc[8, k] = pb
k = k+1
print('\n', '当日涨停板输出完成', '\n')
print('\n', '开始涨停板特征分析', '\n')
# draw concept & industry data from DataFrame
industry_str =str(df.iloc[4,:])
concept_str =str(df.iloc[5,:])
# string processing, remove punctuation and letters
industry_str = industry_str.split(' ')
ind_list=[]
for i in range(len(industry_str)):
industry_str[i] = re.sub("[A-Za-z0-9\!\%\[\]\,\。 \n-:,,、]", "", industry_str[i])
if industry_str[i] != '':
ind_list.append(industry_str[i])
# first tag counting
c = Counter(ind_list)
industry1=c.most_common(1)[0][0]
for item in ind_list:
if item == industry1:
ind_list.remove(industry1)
# second tag counting
c = Counter(ind_list)
industry2=c.most_common(1)[0][0]
print('第一行业特征为(最多tag匹配):',industry1,'\n','第二行业特征为(第二最多tag匹配):',industry2, '\n')
# similiar processing, tag counting, etc.
concept_str=concept_str.split(' ')
con_list=[]
for i in range(len(concept_str)):
concept_str[i] = re.sub("[A-Za-z0-9\!\%\[\]\,\。 \n-:,,、]", "", concept_str[i])
if concept_str[i] != '':
con_list.append(concept_str[i])
c = Counter(con_list)
concept1=c.most_common(1)[0][0]
for item in con_list:
if item == concept1:
con_list.remove(concept1)
c = Counter(con_list)
concept2=c.most_common(1)[0][0]
print('第一概念特征为(最多tag匹配):',concept1,'\n','第二概念特征为(第二最多tag匹配):',concept2,'\n')
今日为非交易日,输出上一交易日数据,上一交易日为 2019-09-30 当日涨停: 002504.XSHE 连板: 1 今日涨幅: 10.09 上交易日涨幅: 10.07 行业: ['装修装饰II', '工业指数', '建筑与工程指数', '建筑装饰I', '建筑装饰和其他建筑业', '装修装饰III'] 概念: ['装饰园林', '低价小市值', '员工持股', '半导体'] 市值(亿): 35.8004 市盈: -69.1783 市净: 3.9392 当日涨停: 002552.XSHE 连板: 0 今日涨幅: 9.99 上交易日涨幅: 4.51 行业: ['通用设备制造业', '机械设备I', '工业指数', '机械基础件III', '建筑机械与重型卡车指数', '通用机械II'] 概念: ['预增', '领涨龙头', '摘帽', '金融改革', '触板', '国资入股', '员工持股', '股权转让', '磁悬浮列车', '船舶'] 市值(亿): 59.3478 市盈: 104.4433 市净: 9.0306 当日涨停: 002942.XSHE 连板: 2 今日涨幅: 10.01 上交易日涨幅: 10.0 行业: ['材料指数', '化学原料和化学制品制造业', '化工I', '化学制品II', '农药III', '化肥与农用化工指数'] 概念: ['领涨龙头', '新股'] 市值(亿): 41.676 市盈: 28.8659 市净: 4.8021 当日涨停: 300365.XSHE 连板: 0 今日涨幅: 10.02 上交易日涨幅: -1.58 行业: ['信息技术指数', '计算机I', 'IT服务III', '计算机应用II', '应用软件指数', '软件和信息技术服务业'] 概念: ['智能电网', '基金重仓', '富时罗素概念', '泛在电力物联网', '在线教育', '特高压', '质押式回购', '配电网'] 市值(亿): 91.1182 市盈: 31.4001 市净: 4.8012 当日涨停: 300729.XSHE 连板: 2 今日涨幅: 10.0 上交易日涨幅: 9.99 行业: ['家庭用品指数', '可选消费指数', '其他家用轻工III', '家具制造业', '轻工制造I', '家用轻工II'] 概念: ['出口型企业', '领涨龙头'] 市值(亿): 26.3337 市盈: 51.7203 市净: 3.5064 当日涨停: 300790.XSHE 连板: 5 今日涨幅: 9.99 上交易日涨幅: 10.0 行业: ['计算机、通信和其他电子设备制造业', '光学光电子II', '电子I', '光学元件III'] 概念: ['新股'] 市值(亿): 52.9602 市盈: 51.2352 市净: 4.6867 当日涨停: 600146.XSHG 连板: 0 今日涨幅: 9.99 上交易日涨幅: -9.8 行业: ['服装、服饰与奢侈品指数', '纺织服装I', '服装家纺II', '可选消费指数', '女装III', '纺织服装、服饰业'] 概念: ['重组', '出口型企业', '大消费', '业绩爆雷', '员工持股', '质押式回购', '融资融券', '碳纤维'] 市值(亿): 89.4823 市盈: -4.3361 市净: 9.1796 当日涨停: 600387.XSHG 连板: 0 今日涨幅: 10.07 上交易日涨幅: 6.1 行业: ['能源指数', '石油贸易III', '批发业', '化工I', '石油化工II', '石油与天然气的炼制和销售指数'] 概念: ['舟山新区', '富时罗素概念', '标普道琼斯概念', '尾气治理', '油气改革', '证金概念', '融资融券', '成品油', '油品升级', '天然气'] 市值(亿): 39.7241 市盈: 8.169 市净: 1.3375 当日涨停: 603042.XSHG 连板: 0 今日涨幅: 10.02 上交易日涨幅: 1.39 行业: ['通信传输设备III', '通信I', '信息技术指数', '计算机、通信和其他电子设备制造业', '通信设备指数', '通信设备II'] 概念: ['宽带提速', '5G', '融资融券', '通信设备', '光纤'] 市值(亿): 24.0448 市盈: -20.3581 市净: 3.1202 当日涨停: 603557.XSHG 连板: 0 今日涨幅: 10.04 上交易日涨幅: 0.0 行业: ['纺织服装I', '服装家纺II', '可选消费指数', '鞋帽III', '鞋类指数', '皮革、毛皮、羽毛及其制品和制鞋业'] 概念: ['合资企业', '二胎政策', '可转债'] 市值(亿): 41.5908 市盈: 23.3576 市净: 2.5326 当日涨停: 603607.XSHG 连板: 0 今日涨幅: 9.99 上交易日涨幅: 4.39 行业: ['材料指数', '造纸和纸制品业', '轻工制造I', '包装印刷II', '包装印刷III', '纸制品指数'] 概念: ['知识产权'] 市值(亿): 28.6519 市盈: 29.5073 市净: 3.7136 当日涨停: 603683.XSHG 连板: 1 今日涨幅: 10.01 上交易日涨幅: 10.02 行业: ['特种化工指数', '材料指数', '化学原料和化学制品制造业', '其他化学制品III', '化工I', '化学制品II'] 概念: ['中非合作概念'] 市值(亿): 19.8999 市盈: 203.1239 市净: 2.4994 当日涨停: 603927.XSHG 连板: 13 今日涨幅: 10.0 上交易日涨幅: 10.0 行业: ['信息技术指数', '计算机I', '计算机应用II', '应用软件指数', '软件和信息技术服务业', '软件开发III'] 概念: ['新股', '科技龙头'] 市值(亿): 375.0704 市盈: 106.8438 市净: 21.206 当日涨停: 603933.XSHG 连板: 2 今日涨幅: 10.03 上交易日涨幅: 10.03 行业: ['工业指数', '计算机、通信和其他电子设备制造业', '工业机械指数', '集成电路III', '半导体II', '电子I'] 概念: ['机电产品', '合资企业', '领涨龙头', '制造业单项冠军企业'] 市值(亿): 41.2931 市盈: 63.6791 市净: 3.9822 当日涨停板输出完成 开始涨停板特征分析 第一行业特征为(最多tag匹配): 工业指数 第二行业特征为(第二最多tag匹配): 材料指数 第一概念特征为(最多tag匹配): 领涨龙头 第二概念特征为(第二最多tag匹配): 新股
本社区仅针对特定人员开放
查看需注册登录并通过风险意识测评
5秒后跳转登录页面...
移动端课程