(supermind量化策略)task17/a/换手率3%-12%、饮料酒进出口、现量大于

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

问财量化选股策略逻辑

选股逻辑为:选择换手率在3%-12%、饮料酒进出口、现量大于1万手、高开的股票。

选股逻辑分析

该选股策略综合考虑了市场交易活跃度、行业龙头、成交量和技术指标等因素,选股准确性高,适用于短期投资者。

有何风险?

技术指标过度依赖历史数据,不能完全预测未来股价变化,如果市场出现特殊情况(如巨大利好或利空消息等),选股策略可能失效。

如何优化?

可以加入其他的技术指标如RSI、MACD等,以及行情特征如量价配合等,对选股策略进行综合考虑,并通过筛选股票质量,如利润增长、资产质量和现金流量等来进一步提高选股准确性,同时需要对选股策略进行持续性的测试和优化。

最终的选股逻辑

选择换手率在3%-12%、饮料酒进出口、现量大于1万手、高开的股票。

同花顺指标公式代码参考

换手率在3%-12%:SELECT(TURN<N>=AVG(TURN, N) AND TURN<N+1>AVG(TURN, N+1) AND TURN<N>3 AND TURN<N<12)
饮料酒进出口:SELECT(SECTOR('K40')=1)
现量大于1万手:SELECT(VOL>10000)
高开:SELECT((OPEN-REF(CLOSE,1))/REF(CLOSE,1)>0.02)
选股:SELECT(CODE AND 换手率3%-12% AND 饮料酒进出口 AND 现量大于1万手 AND 高开)

python代码参考

import pandas as pd
import tushare as ts
import talib

def select_stocks():
    pro = ts.pro_api()
    df1 = pro.stock_basic(exchange='SZSE', list_status='L', fields='ts_code,industry,name')
    df1 = df1[(df1['industry'].str.contains('饮料') & df1['industry'].str.contains('酒'))]
    df2 = pro.fina_mainbz(ts_code='', type='P', fields='ts_code,end_date')
    df2['year'] = df2['end_date'].str[:4]
    df2 = df2.groupby('ts_code')['year'].count().reset_index(name='count')
    df = pd.merge(df1[['ts_code']], df2[['ts_code', 'count']], on='ts_code')
    df = df[df['count'] > 3]  # 最近四年有业绩的公司
    df3 = pro.top10_holders(ts_code='', start_date='20210101', end_date='20211013', fields='ts_code,hldr_name,hold_ratio')
    df3 = df3.groupby('ts_code')['hold_ratio'].sum().reset_index(name='hold_ratio') 
    df3 = df3[df3['hold_ratio'] < 20]  # 机构持股集中度小于20%
    df4 = pro.daily(ts_code='', start_date='20210101', end_date='20211013', fields='ts_code,trade_date,turnover_rate,vol,open,close')
    df4 = df4.groupby('ts_code').tail(1)
    df4 = df4[(df4['turnover_rate'] > 3) & (df4['turnover_rate'] < 12)]  # 换手率在3%-12%
    df4 = df4[df4['vol'] > 10000]  # 现量大于1万手
    df4['is_gap_up'] = (df4['open'] - talib.REF(df4['close'], 1)) / talib.REF(df4['close'], 1) > 0.02  # 高开
    df4 = df4[df4['is_gap_up']]
    df = pd.merge(df, df3[['ts_code']], on='ts_code')
    df = pd.merge(df, df4[['ts_code']], on='ts_code')
    df5 = pro.daily(ts_code='', start_date='20210101', end_date='20211013', fields='ts_code,trade_date,close')
    df5['morning_star'] = ((talib.MA(df5['close'], timeperiod=5) >= talib.REF(talib.MA(df5['close'], timeperiod=5), 1)) &
                           (talib.REF(df5['close'], 1) < talib.REF(talib.MA(df5['close'], timeperiod=5), 1)) &
                           (df5['close'] > talib.MA(df5['close'], timeperiod=5)) &
                           (talib.CROSS(talib.MA(df5['close'], timeperiod=5), talib.MA(df5['close'], timeperiod=10))))
    df5 = df5[df5['morning_star']] # 酷特智能早晨之星
    df = pd.merge(df, df5[['ts_code']], on='ts_code')
    df6 = pro.daily_basic(ts_code='', trade_date='20211013', fields='ts_code,total_mv')
    df = pd.merge(df, df6[['ts_code', 'total_mv']], on='ts_code')
    df = df[(df['total_mv'] > 2e9)]  # 企业规模大于20亿
    df = df.sort_values('total_mv', ascending=False)
    return df['ts_code']
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论