(supermind量化策略)task17/a/换手率3%-12%、饮料酒进出口、昨日主力

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

问财量化选股策略逻辑

选股逻辑为:选择换手率在3%-12%、饮料酒进出口、昨日主力控盘的股票。

选股逻辑分析

该策略综合考虑了行业板块、换手率和主力控盘等因素,旨在选出具有一定走势潜力的股票。

有何风险?

该策略忽略了公司基本面和财务数据等重要因素,存在投资风险。同时,主力控盘指标容易被市场短期消息和情绪影响,难以保证选出的股票会持续上涨。

如何优化?

可以加入更多的量化指标,如市值、盈利能力等公司基本面指标,并结合宏观经济、政策、行业政策等因素,更全面地挖掘股票的潜力。

最终的选股逻辑

选择换手率在3%-12%、饮料酒进出口、昨日主力控盘的股票。

同花顺指标公式代码参考

换手率在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(SECTORCODE('K40')=1)
昨日主力控盘:SELECT(MA3<VOL && MA3>MA5 && MA5<MA10 && MA5<=LAST(CLOSE, 10) && MA5>=LAST(CLOSE, 22))
选股:SELECT(CODE, 换手率3%-12% AND SELECT_SECTORCOUNT('K43')>0 AND 昨日主力控盘 AND 饮料酒进出口)

python代码参考

import pandas as pd
import tushare as ts


def select_stocks():
    pro = ts.pro_api()
    df1 = pro.stock_basic(exchange='', list_status='L', fields='ts_code,industry,name')
    df1 = df1[(df1['industry'].str.contains('饮料') & df1['industry'].str.contains('酒'))]
    df2 = pro.daily(ts_code='', trade_date='20211013', fields='ts_code,trade_date,high,low,trade_status')
    df3 = pro.moneyflow(ts_code='', trade_date='20211012', fields='ts_code,trade_date,main_net_inflow_amount')
    df = pd.merge(df2[['ts_code', 'trade_date']], df1[['ts_code']], on='ts_code')
    df = pd.merge(df, df3, on=['ts_code', 'trade_date'], how='left').fillna(0)
    df = df[(df['main_net_inflow_amount']>0) & (df.groupby('ts_code')['main_net_inflow_amount'].shift(1)<=0)]
    df = df[(df['trade_status']=='交易') & (df['low']!=0) & (df['high']!=0)]
    df4 = pro.daily(ts_code='', start_date='20210901', end_date='20211013', fields='ts_code,trade_date,high,low,trade_status')
    df4 = df4[(df4['trade_status']=='交易') & (df4['low']!=0) & (df4['high']!=0)]
    df = pd.merge(df, df4[['ts_code', 'trade_date', 'vol']], on=['ts_code', 'trade_date'])
    df['ma3'] = df['vol'].rolling(3).mean()
    df['ma5'] = df['vol'].rolling(5).mean()
    df['ma10'] = df['vol'].rolling(10).mean()
    df = df[(df['ma3']<df['vol']) & (df['ma3']>df['ma5']) & (df['ma5']>df['ma10']) & (df['ma5']<=df['close'].rolling(10).apply(lambda x: x.iloc[0])) & (df['ma5']>=df['close'].rolling(22).apply(lambda x: x.iloc[-1]))]
    df = df.groupby('ts_code').tail(1)
    df5 = pro.daily(ts_code='', start_date='20200101', end_date='20211231', fields='ts_code,trade_date,high,low,trade_status')
    df5 = df5[(df5['trade_status']=='交易') & (df5['low']!=0) & (df5['high']!=0)]
    dfg = df5.groupby('ts_code').tail(2)[['ts_code', 'trade_date']]
    df = pd.merge(df, dfg, on='ts_code')
    df = df[df.groupby('ts_code')['trade_date'].apply(lambda x: (x.diff()>pd.Timedelta(1, unit='D')).sum()>=1)]
    return df['ts_code']
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论