(supermind量化策略)task17/a/换手率3%-12%、三连阴、三个技术指标同

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

问财量化选股策略逻辑

选股逻辑为:在换手率在3%-12%之间、连续三天收阴线且同时满足MACD、KDJ和RSI三个技术指标金叉的股票中进行选择。

选股逻辑分析

该选股逻辑在换手率、连续收阴线的基础上,进一步结合了MACD、KDJ和RSI三个技术指标的金叉情况进行选股。这样可以减小股票的盲选风险,提高选股的准确性。

有何风险?

该选股逻辑仍主要基于技术面的因素进行选股,没有充分考虑公司财务等基本面指标,存在一定的风险。而且,技术指标金叉并不一定代表股票的上涨,也存在一定的市场风险。

如何优化?

可以在技术面过滤的基础上,加入公司财务指标进行筛选,同时可以考虑在选股策略中适当引入市场的板块热度等其他因素以综合判断股票的趋势。

最终的选股逻辑

在换手率在3%-12%之间、连续三天收阴线且MACD、KDJ和RSI三个技术指标同时金叉的股票中进行选择。

同花顺指标公式代码参考

以通达信公式为例:

SETBARS(250,0);
JX_RSI14 := CROSS(RSI(CLOSE,14),REF(RSI(CLOSE,14),1));
JX_MACD := CROSS(MACDDIFF(12,26,9),MACDDEA(12,26,9));
JX_KDJ := CROSS(EMA(HIGH,9),EMA(LOW,9)) AND CROSS(EMA(HIGH,3),EMA(LOW,3));
V_SELECT:=主板A股 AND 三连阴(5) AND JX_RSI14 AND JX_MACD AND JX_KDJ;
条件选股:V_SELECT;

python代码参考

import baostock as bs
import pandas as pd
import talib

#### 登陆系统 ####
lg = bs.login()

#### 获取满足条件的股票 ####
rs = bs.query_stock_basic()
stock_list = []
while (rs.error_code == '0') & rs.next():
    stock_code = rs.get_row_data()[0]
    # 查询历史K线和技术指标
    rs_k = bs.query_history_k_data_plus(stock_code, "date,open,high,low,close,MACD,RSI,KDJ", start_date='2022-01-01', end_date='2022-07-06', frequency='d', adjustflag='3')
    if rs_k.error_code == '0':
        close_hist = list(map(float, rs_k.get_column("close")))
        macd_hist = list(map(float, rs_k.get_column("MACD")))
        rsi_hist = list(map(float, rs_k.get_column("RSI")))
        k_hist = list(map(float, rs_k.get_column("K")))
        d_hist = list(map(float, rs_k.get_column("D")))
        j_hist = 3 * k_hist - 2 * d_hist
        if len(close_hist) >= 5 and all([close_hist[i] < close_hist[i-1] for i in range(1, 4)]) and talib.CROSSOVER(rsi_hist, talib.REF(rsi_hist, 1))[-1] and talib.CROSSOVER(macd_hist, talib.MACDEXT(close_hist, fastperiod=12, slowperiod=26, signalperiod=9))[-1] and talib.CROSSOVER(talib.EMA(rs_k.get_column("high"), 9), talib.EMA(rs_k.get_column("low"), 9))[-1] and talib.CROSSOVER(talib.EMA(rs_k.get_column("high"), 3), talib.EMA(rs_k.get_column("low"), 3))[-1] and talib.CROSSOVER(j_hist, talib.MA(j_hist, 3))[-1]:
            stock_list.append(stock_code)

# 转换成DataFrame格式并输出结果
df = pd.DataFrame(stock_list, columns=['stock_code'])
print(df)

#### 登出系统 ####
bs.logout()
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论