(同花顺量化)100亿市值以内的无亏损企业_、规模2亿以上、rsi小于65

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

问财量化选股策略逻辑

选股逻辑:选择RSI小于65,规模在2亿以上,100亿市值以内,且无亏损企业的股票。

选股逻辑分析

该选股逻辑同时考虑了技术指标和基本面因素,选股条件包含了股票市值、收益、财务健康状况等多个方面,更为全面和复杂。能够筛选出市场上符合多种条件、有投资价值的个股。

有何风险?

该选股逻辑存在以下几个风险:

  1. 过于依赖RSI指标,忽略了其他技术指标和基本面因素对股票的影响;
  2. 财务健康状况是企业的长期状态,选股过于短期化,不利于选出符合长期价值投资的股票;
  3. 无法保证选股结果的盈利性以及未来效果的稳定性。

如何优化?

可以在技术指标和基本面因素选择上进行更广泛的考虑,不要过于依赖单一指标。并且将选股范围逐步拓展到长期投资价值领域,以找到真正符合投资价值的标的。

最终的选股逻辑

筛选出RSI小于65,规模在2亿以上,市值在100亿内,近三年无亏损记录的股票。

同花顺指标公式代码参考

SELECT * FROM (
    SELECT
        S_INFO_WINDCODE AS STOCK_CODE,
        S_VAL_MV AS MKT_CAP,
        1 AS IS_PROFIT
    FROM
        ASHAREEODPRICES
        JOIN AShareBalanceSheet ON ASHAREEODPRICES.TRADE_DT = AShareBalanceSheet.TRD_DT
        JOIN ASHAREINCOMESTATEMENT ON ASHAREEODPRICES.TRADE_DT = ASHAREINCOMESTATEMENT.ANN_DT
    WHERE
        TRADE_DT >= '2018-01-01'
        AND ANN_DT > '2018-01-01'
    GROUP BY
        S_INFO_WINDCODE, S_VAL_MV
    HAVING
        S_VAL_MV >= 2e8 AND S_VAL_MV < 1e11
        AND COUNT(*) >= 10
        AND SUM(NET_PROFIT > 0) >= 8
) A
WHERE
    (SELECT MEAN(RSI(CLOSE, 14)) FROM ASHAREEODPRICES WHERE S_INFO_WINDCODE = A.STOCK_CODE AND TRADE_DT >= '2021-01-01') < 65

python代码参考

from jqdata import *
import talib

# 定义选股条件
def select_condition(context):
    # 选取规模在2亿以上,100亿市值以内的股票
    q = query(
            valuation.code,
            valuation.circulating_market_cap,
            indicator.net_profit,
        ).filter(
            valuation.circulating_market_cap >= 2e8,
            valuation.circulating_market_cap < 1e11,
            indicator.net_profit > 0
        )
    # 加入近三年内未亏损的条件
    for i in range(1, 4):
        q = q.filter(indicator.inc_net_profit_year_on_year.values(i) > 0)
    all_stocks = get_fundamentals(q)
    return all_stocks

# 获取选股结果
def select_stocks(context):
    all_stocks = select_condition(context)
    # 将选出结果中的股票与全市场中的股票做比较
    all_codes = get_all_securities(types='stock', date=context.current_date).index.tolist()
    stocks = all_stocks.loc[all_stocks['code'].isin(all_codes)]
    # 筛选RSI小于65
    selected_stocks = stocks.loc[talib.RSI(get_bars(stocks['code'].tolist(), context.window, '1d', ['high','low','close'])['close'], timeperiod=14).iloc[-1] < 65]
    return selected_stocks

# 注册选股函数
m = M.instruments(v['margin'])
m.add_strategy(select_stocks, force=True)
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论