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

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

问财量化选股策略逻辑

该选股策略选取元宇宙行业中,前日实际换手率在3%-28%之间,且非ST(不含ST和*ST)的个股中,当日开盘前十分钟内跌幅不超过1%,且当日连续五个交易日内出现过涨停的股票进行投资。

选股逻辑分析

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

  1. 选取元宇宙行业中的股票,因为这些企业可能受到元宇宙行业内用户需求的影响,具有潜在的成长性;
  2. 前日实际换手率在3%-28%之间,表示市场对其价值存在认可,具有一定的投资价值;
  3. 选取非ST(不含ST和*ST)的个股,排除股票存在潜在的风险;
  4. 当日开盘前十分钟内的股价跌幅不超过1%,把握股票走势;
  5. 当日连续五个交易日内出现过涨停,股票具有强势上涨的趋势。

通过对以上条件进行综合挑选,最终选出符合条件的个股进行投资。

有何风险?

  1. 开盘前十分钟内跌得不好把握,只要稍有波动就无法选中股票;
  2. 涨停、跌停等市场情况变化快速,选股结果可能存在一定的时效性;
  3. 选股条件过于过滤,导致选股结果较为稀缺,进而影响资金的分配和投资回报。

如何优化?

  1. 加入更多的指标,如市盈率、市净率等,综合分析选股结果以提高选股精度;
  2. 建立更加科学合理的风险控制机制,对投资组合进行监督和风险管理;
  3. 加入量化分析,通过机器学习等技术对选股策略进行优化。

最终的选股逻辑

该选股策略选取元宇宙行业中,前日实际换手率在3%-28%之间,非ST(不含ST和*ST)的个股中,当日开盘前十分钟内跌幅不超过1%,且当日连续五个交易日内出现过涨停的股票进行投资。选股条件具体为:元宇宙行情为GNXQ,前日实际换手率为TURNOVER(2),非ST条件为LIST_STATUS!='ST' and LIST_STATUS!='*ST',当日开盘前十分钟跌幅为(lower - close)/close<0.01, 10<=BAR_COUNT_T(60,0)<=14, 盘中出现1个涨停板或ST止跌板或涨幅>=9(当日最高价/前收盘价-1>=0.09)。

同花顺指标公式代码参考

  • 元宇宙行情:GNBK("gnxq");
  • 前日实际换手率:TURNOVER(2);
  • LIST_STATUS:BARSSINCE(list_status=="ST");
  • 当日开盘前十分钟跌幅:(lower - close)/close<0.01 and 10<=BAR_COUNT_T(60,0)<=14;
  • 盘中出现1个涨停板或ST止跌板或涨幅>=9:LAST(BARSLAST(HIGH/REF(CLOSE,1)-1>=0.09 OR BARSLAST(TR=XG((LAST(CLOSE-LAST(CLOSE,1))/LAST(CLOSE,1))<-0.04 AND ST>=LAST(ST,2))), 5)>0);
  • 选股条件:GNBK("gnxq") AND TURNOVER(2)>3 AND TURNOVER(2)<28 AND LIST_STATUS!='ST' and LIST_STATUS!='*ST' AND (lower - close)/close<0.01 and 10<=BAR_COUNT_T(60,0)<=14 and LAST(BARSLAST(HIGH/REF(CLOSE,1)-1>=0.09 OR BARSLAST(TR=XG((LAST(CLOSE-LAST(CLOSE,1))/LAST(CLOSE,1))<-0.04 AND ST>=LAST(ST,2))), 5)>0);

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='SSE', list_status='L', fields='ts_code, name, industry, list_status')
    data1 = data1[data1['industry'].str.contains('元宇宙') & (data1['list_status'].isin(['L', 'N']))]
    data2 = pro.daily_basic(ts_code='', trade_date='20220111', fields='ts_code, turnover_rate, amount')
    data2['actual_turnover'] = data2['turnover_rate'] * 100
    data2 = data2[data2['actual_turnover'] > 3]
    data2 = data2[data2['actual_turnover'] < 28]
    data3 = pro.bar(ts_code='', start_date='20220111', end_date='20220111', freq='1min', fields='open, close, high, low, vol')
    data3['change_percent'] = (data3['low'] - data3['close']) / data3['close']
    data3 = data3[data3['change_percent'] < 0.01]
    data3 = data3.groupby('ts_code').apply(lambda x: (len(x.iloc[0:10]) == 10) & (len(x[x['vol'] >= x['vol'].mean() * 1.5]) >= 1)).reset_index()
    data3 = data3[data3[0] == True]['ts_code']
    data4 = pro.moneyflow(ts_code='', start_date='20220102', end_date='20220111', fields='ts_code,buy_lg_amount, sell_lg_amount')
    data4['net_lg_amount'] = data4['buy_lg_amount'] - data4['sell_lg_amount']
    data4 = data4.groupby('ts_code').apply(lambda x: x[x['net_lg_amount'] > 0.05]['net_lg_amount'].rolling(window=5).max().sum() > 0).reset_index()
    data4 = data4[data4[0] == True]['ts_code']
    data5 = pd.merge(data1, data2[['ts_code', 'actual_turnover']], on='ts_code', how='inner')
    data5 = data5[data5['ts_code'].isin(data3)]
    data5 = data5[data5['ts_code'].isin(data4)]
    return data5[['ts_code', 'name']]
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论