(supermind量化投资)task13/a/元宇宙、前日实际换手率>3~28、竞价时涨

用户头像神盾局量子研究部
2023-08-30 发布

问财量化选股策略逻辑

该选股策略选择元宇宙行业中,符合以下条件的股票进行投资:前日实际换手率在3%~28%之间,竞价时涨跌幅买入大单,特大单共计买入量大于0.7千万。

选股逻辑分析

该选股策略的选股条件主要包括:

  1. 选择元宇宙行业中的股票,因为这些企业可能受到元宇宙行业内用户需求的影响,具有潜在的成长性;
  2. 前日实际换手率在3%~28%之间,反映市场对其价值的认可度高,具有投资价值;
  3. 竞价时涨跌幅买入大单,说明该股票可能存在较大的购买力和市场热度;
  4. 特大单共计买入量大于0.7千万,表示该股票具有一定的资金关注度和投资价值。

有何风险?

  1. 竞价时的交易量和价格波动可能不具有足够的代表性,难以准确反映该股票的整体市场价值;
  2. 该选股策略忽略了其他重要的技术指标和基本面指标,不能充分考虑股票的整体价值;
  3. 该选股策略只考虑大单和特大单的买入量,可能忽略了潜在的卖出风险。

如何优化?

  1. 可以结合其他图表模式、技术指标等进行深入技术分析,增加股票的透明度;
  2. 可以加入其他选股条件,例如:PE、PB、ROE等财务指标、RSI、KDJ等技术指标,以及其它可能的因素;
  3. 可以结合风险控制手段等,优化买卖策略来降低风险。

最终的选股逻辑

该选股策略选择元宇宙行业中,前日实际换手率在3%~28%之间,竞价时涨跌幅买入大单,特大单共计买入量大于0.7千万的股票进行投资。

具体选股条件为:元宇宙行情为GNXQ,前日实际换手率为TURNOVER(2),竞价时涨跌幅买入大单可使用如下语句进行匹配:RANK(ABS(OPEN-PRECLOSE)/PRECLOSE,1)<10/305。

特大单共计买入量大于0.7千万可以通过分别统计竞价和收盘时的特大单清单,然后相加并计算。

例如:

INDUSTRYIDB(2859,GNXQ) AND TURNOVER(2) > 3 AND TURNOVER(2) < 28 AND RANK(ABS(OPEN-PRECLOSE)/PRECLOSE,1)<10/305

同花顺指标公式代码参考

  • 元宇宙行情:GNBK('gnxq')
  • 前日实际换手率:TURNOVER(2)
  • 竞价时涨跌幅买入大单:RANK(ABS(OPEN-PRECLOSE)/PRECLOSE,1)<10/305

在通达信中,可以使用如下指标代码:

RANK(ABS(OPEN-PRECLOSE)/PRECLOSE,1)<10/305

Python代码参考

import pandas as pd
import tushare as ts

def stock_selector():
    ts.set_token('your_token')
    pro = ts.pro_api()
    data1 = pro.query('stock_basic', exchange='SZSE', list_status='L', fields='ts_code, name, industry, list_date, total_share, float_share, market_cap, pe, pb, area')
    data1['ipo_date'] = pd.to_datetime(data1['list_date'])
    data1 = data1[data1['industry'].str.contains('元宇宙') & (data1['list_status'].isin(['L', 'N']))]
    data2 = pro.daily_basic(ts_code='', trade_date='20220101', fields='ts_code, turnover_rate_f')
    data3 = data2[(data2['turnover_rate_f'] > 3) & (data2['turnover_rate_f'] < 28)]
    data4 = pro.block_trade(start_date='20220101', end_date='20220331')
    data5 = data4.groupby(by=['ts_code', 'trade_date'])[['vol']].sum().reset_index()
    data6 = pd.DataFrame()
    for ts_code in data1['ts_code']:
        df1 = data4[data4['ts_code'] == ts_code].reset_index(drop=True)
        df2 = data5[data5['ts_code'] == ts_code].reset_index(drop=True)
        if len(df1) > 0 and len(df2) > 0:
            df1['vol_weighted_price'] = df1['price'] * df1['vol'] / df2.iloc[-1]['vol']
            df1['vol_cumsum'] = df1['vol'].cumsum()
            df3 = pd.merge(df1, df2, on=['ts_code', 'trade_date'], how='inner')
            df4 = df3[(df3['vol_cumsum'] > 7000000) & (df3['vol_cumsum'] <= 15000000) & (df3['bs_flag'] == 'B') & (df3['price'] > 0)]
            df5 = ts.pro_bar(ts_code='', adj='qfq', start_date='20220101', end_date='20220331')
            df5 = df5[['ts_code', 'trade_date', 'open', 'pre_close']]
            if len(df4) > 0 and len(df5) > 0:
                df5 = df5[df5['ts_code'] == ts_code].reset_index(drop=True)
                if len(df5) > 0:
                    df5['open_change'] = abs(df5['open'] - df5['pre_close']) / df5['pre_close']
                    df6 = df5[df5['open_change'] < 0.033]
                    if len(df6) > 0:
                        data6 = pd.concat([data6, df4])
    data7 = data1.merge(data3[['ts_code']], on='ts_code', how='inner')
    data8 = data7.merge(data6[['ts_code']], on='ts_code', how='inner')
    return data8[['ts_code', 'name']]
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

    select_sentence = '市值小于100亿' #选股语句。

    模板如何使用?

    点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。


    ## 如果有任何问题请添加 下方的二维码进群提问。
    ![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)
收益&风险
源码

评论