(supermind策略)换手率3%-12%、北京A股除外、KDJ刚形成金叉_

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

问财量化选股策略逻辑

选股逻辑为:在换手率3%-12%,剔除北京A股,选出KDJ刚形成金叉的股票。

选股逻辑分析

该选股逻辑主要利用了技术分析指标KDJ的信号,通过判断金叉信号来选出具有上涨潜力的股票。同时,也考虑了资金面因素,通过选取换手率较为活跃的股票进行筛选。

有何风险?

该选股逻辑只关注了KDJ指标,可能会出现其他指标影响导致的盲点。同时,KDJ指标具有一定的滞后性,存在选股信号过期的风险。

如何优化?

可以考虑引入其他技术指标进行综合分析,例如MACD指标、RSI指标等,以提高选股的精度。可以引入机器学习方法进行模型训练和特征工程,以提高选股的稳定性和效果。

最终的选股逻辑

在换手率3%-12%,剔除北京A股,选取KDJ刚形成金叉的股票,综合考虑其他的指标并分析选股。

同花顺指标公式代码参考

K:=SMA((CLOSE-LLV(LOW,9))/(HHV(HIGH,9)-LLV(LOW,9))*100,3,1);
D:=SMA(K,3,1);
J:=3*K-2*D;
FILTER:(CROSS(K,D) AND REF(K,1)<REF(D,1)),0,1;

Python代码参考

import tushare as ts
import numpy as np
import pandas as pd

def select_good_stocks():
    ts.set_token('your_token')
    pro = ts.pro_api()

    # 筛选出换手率3%-12%,剔除北京A股
    df1 = pro.stock_basic(exchange='SZSE', list_status='L', fields='ts_code,name,industry,pe,pb,turnover_rate,amount,total_mv,float_mv')
    df1 = df1[(df1['turnover_rate'] >= 3) & (df1['turnover_rate'] <= 12)]
    df1 = df1[(df1['name'].str.contains('ST') == False)]
    df1 = df1[(df1['ts_code'].str.startswith('002') == True) | (df1['ts_code'].str.startswith('000') == True)]
    df2 = pro.daily(ts_code='', start_date='20220101', end_date='20220110')
    df2 = df2.groupby(['ts_code']).first()  # 获取开盘价
    df2 = df2[['open']]                    
    df1 = pd.merge(df1, df2, on="ts_code", how="inner")  # 将dataframe按ts_code进行连接

    # 获取KDJ指标中的K、D、J值
    df3 = pro.daily(ts_code='', start_date='20220110', end_date='20220110')
    for code in df1['ts_code']:
        df_kdj = pro.new_share_kline(ts_code=code)
        df_kdj = df_kdj.tail(9) 
        low_list = df_kdj.low
        high_list = df_kdj.high
        close = df3[df3['ts_code']==code]['close'].iat[0]
        low_9 = min(low_list)
        high_9 = max(high_list)
        rsv = (close - low_9) / (high_9 - low_9) * 100
        df_kdj['rsv'] = rsv
        df_kdj['k'] = df_kdj['rsv'].rolling(window=3).mean()
        df_kdj['d'] = df_kdj['k'].rolling(window=3).mean()
        df_kdj['j'] = 3 * df_kdj['k'] - 2 * df_kdj['d']
        if df_kdj['k'].iat[-1] > df_kdj['d'].iat[-1] and df_kdj['k'].iat[-2] < df_kdj['d'].iat[-2]:
            df1 = df1[df1['ts_code'] != code]

    df1 = df1.head(20)
    return df1

good_stocks = select_good_stocks()
print(good_stocks)
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论