请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  数理科学 帖子:3365779 新帖:11

打板小助手v.1.6

美联储发表于:10 月 1 日 03:48回复(1)
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:
        # check for consecutive rise limit
        count = 0
        for j in range(len(get_stock_rise_fall.change_pct)):
            if get_stock_rise_fall.change_pct[j] >= 9.9 and get_stock_rise_fall.change_pct[j] < 10.1:
                count += 1
                # 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 
 连板: 2 今日涨幅:  10.09 上交易日涨幅: 10.07 
 行业: ['装修装饰II', '工业指数', '建筑与工程指数', '建筑装饰I', '建筑装饰和其他建筑业', '装修装饰III'] 
 概念: ['装饰园林', '低价小市值', '员工持股', '半导体'] 
 市值(亿): 35.8004 市盈: -69.1783 市净: 3.9392 

当日涨停:  002552.XSHE 
 连板: 3 今日涨幅:  9.99 上交易日涨幅: 4.51 
 行业: ['通用设备制造业', '机械设备I', '工业指数', '机械基础件III', '建筑机械与重型卡车指数', '通用机械II'] 
 概念: ['预增', '领涨龙头', '摘帽', '金融改革', '触板', '国资入股', '员工持股', '磁悬浮列车', '船舶'] 
 市值(亿): 59.3478 市盈: 104.4433 市净: 9.0306 

当日涨停:  002942.XSHE 
 连板: 3 今日涨幅:  10.01 上交易日涨幅: 10.0 
 行业: ['材料指数', '化学原料和化学制品制造业', '化工I', '化学制品II', '农药III', '化肥与农用化工指数'] 
 概念: ['新股'] 
 市值(亿): 41.676 市盈: 28.8659 市净: 4.8021 

当日涨停:  300365.XSHE 
 连板: 1 今日涨幅:  10.02 上交易日涨幅: -1.58 
 行业: ['信息技术指数', '计算机I', 'IT服务III', '计算机应用II', '应用软件指数', '软件和信息技术服务业'] 
 概念: ['智能电网', '基金重仓', '富时罗素概念', '泛在电力物联网', '在线教育', '特高压', '质押式回购', '配电网'] 
 市值(亿): 91.1182 市盈: 31.4001 市净: 4.8012 

当日涨停:  300729.XSHE 
 连板: 3 今日涨幅:  10.0 上交易日涨幅: 9.99 
 行业: ['家庭用品指数', '可选消费指数', '其他家用轻工III', '家具制造业', '轻工制造I', '家用轻工II'] 
 概念: ['出口型企业'] 
 市值(亿): 26.3337 市盈: 51.7203 市净: 3.5064 

当日涨停:  300790.XSHE 
 连板: 4 今日涨幅:  9.99 上交易日涨幅: 10.0 
 行业: ['计算机、通信和其他电子设备制造业', '光学光电子II', '电子I', '光学元件III'] 
 概念: ['新股'] 
 市值(亿): 52.9602 市盈: 51.2352 市净: 4.6867 

当日涨停:  600146.XSHG 
 连板: 1 今日涨幅:  9.99 上交易日涨幅: -9.8 
 行业: ['服装、服饰与奢侈品指数', '纺织服装I', '服装家纺II', '可选消费指数', '女装III', '纺织服装、服饰业'] 
 概念: ['重组', '出口型企业', '领涨龙头', '业绩爆雷', '员工持股', '质押式回购', '融资融券', '碳纤维'] 
 市值(亿): 89.4823 市盈: -4.3361 市净: 9.1796 

当日涨停:  600387.XSHG 
 连板: 1 今日涨幅:  10.07 上交易日涨幅: 6.1 
 行业: ['能源指数', '石油贸易III', '批发业', '化工I', '石油化工II', '石油与天然气的炼制和销售指数'] 
 概念: ['舟山新区', '富时罗素概念', '标普道琼斯概念', '尾气治理', '油气改革', '证金概念', '融资融券', '成品油', '油品升级', '天然气'] 
 市值(亿): 39.7241 市盈: 8.169 市净: 1.3375 

当日涨停:  603042.XSHG 
 连板: 1 今日涨幅:  10.02 上交易日涨幅: 1.39 
 行业: ['通信传输设备III', '通信I', '信息技术指数', '计算机、通信和其他电子设备制造业', '通信设备指数', '通信设备II'] 
 概念: ['宽带提速', '5G', '融资融券', '通信设备'] 
 市值(亿): 24.0448 市盈: -20.3581 市净: 3.1202 

当日涨停:  603557.XSHG 
 连板: 1 今日涨幅:  10.04 上交易日涨幅: 0.0 
 行业: ['纺织服装I', '服装家纺II', '可选消费指数', '鞋帽III', '鞋类指数', '皮革、毛皮、羽毛及其制品和制鞋业'] 
 概念: ['合资企业', '二胎政策', '可转债'] 
 市值(亿): 41.5908 市盈: 23.3576 市净: 2.5326 

当日涨停:  603607.XSHG 
 连板: 1 今日涨幅:  9.99 上交易日涨幅: 4.39 
 行业: ['材料指数', '造纸和纸制品业', '轻工制造I', '包装印刷II', '包装印刷III', '纸制品指数'] 
 概念: ['知识产权'] 
 市值(亿): 28.6519 市盈: 29.5073 市净: 3.7136 

当日涨停:  603683.XSHG 
 连板: 2 今日涨幅:  10.01 上交易日涨幅: 10.02 
 行业: ['特种化工指数', '材料指数', '化学原料和化学制品制造业', '其他化学制品III', '化工I', '化学制品II'] 
 概念: ['中非合作概念'] 
 市值(亿): 19.8999 市盈: 203.1239 市净: 2.4994 

当日涨停:  603927.XSHG 
 连板: 4 今日涨幅:  10.0 上交易日涨幅: 10.0 
 行业: ['信息技术指数', '计算机I', '计算机应用II', '应用软件指数', '软件和信息技术服务业', '软件开发III'] 
 概念: ['新股'] 
 市值(亿): 375.0704 市盈: 106.8438 市净: 21.206 

当日涨停:  603933.XSHG 
 连板: 3 今日涨幅:  10.03 上交易日涨幅: 10.03 
 行业: ['工业指数', '计算机、通信和其他电子设备制造业', '工业机械指数', '集成电路III', '半导体II', '电子I'] 
 概念: ['机电产品', '合资企业', '制造业单项冠军企业'] 
 市值(亿): 41.2931 市盈: 63.6791 市净: 3.9822 


 当日涨停板输出完成 


 开始涨停板特征分析 

第一行业特征为(最多tag匹配): 工业指数 
 第二行业特征为(第二最多tag匹配): 材料指数 

第一概念特征为(最多tag匹配): 新股 
 第二概念特征为(第二最多tag匹配): 员工持股 

 

全部回复

0/140

量化课程

    移动端课程