(同花顺量化)20日均线大于120日均线_、集中度70_20%、rsi小于65

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

问财量化选股策略逻辑

选股逻辑:选择RSI小于65,集中度70%以上和20%以下,20日均线大于120日均线的股票。

选股逻辑分析

该选股逻辑认为,选择RSI小于65的股票可以筛选出近期表现相对较弱的个股,同时集中度70%以上和20%以下可以提高选股结果的稳定性和多样性。选择20日均线大于120日均线的股票,可以提高股票的短期向好趋势性,适用于追求短期收益的投资者。该策略适用于对股票市场整体估值持谨慎态度、追求较高收益的投资者。

有何风险?

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

  1. 预测趋势的短期指标可能存在一定的局限性,未必能完全反映股票的未来表现。
  2. 市场波动性较大时,20日均线可能具有一定的滞后性,影响选股结果。
  3. 集中度的计算方式可能存在一定的主观性,选股结果可能受计算方式的影响。

如何优化?

  1. 综合考虑基本面和技术面指标,加入其他指标进行选股,提高选股策略的全面性和准确性。
  2. 考虑使用基于机器学习的模型进行选股,提高选股结果的准确性和稳定性。
  3. 调整集中度的计算方式,根据不同情况采用不同的计算方式来提高选股结果的准确性和稳定性。

最终的选股逻辑

选择RSI小于65,集中度70%以上和20%以下,20日均线大于120日均线的股票。

同花顺指标公式代码参考

SELECTED_STOCKS = RSI < 65 AND ((CYCLEONE_INDUTRY_RATIO > 0.7) OR (CYCLEONE_INDUTRY_RATIO < 0.2)) AND MA(CLOSE, 20) > MA(CLOSE, 120)
CAN_SELECTED = SELECTED_STOCKS.ORDERBY(STOCK_HOT, ASCENDING)

注:其中,STOCK_HOT指股票的热度值,需要事先进行计算。

python代码参考

from jqdata import *
import talib

# 定义选股条件
def select_condition(context):
    # 获取所有A股股票
    q = query(
        valuation.code, 
        valuation.market_cap,
        finance.SW1_CODE,
        indicator.bid_per_winner,
        indicator.csi500_weight,
        indicator.status,
        volume,
        indicator.list_date,
        indicator.net_amount_main // 10000,
        indicator.trade_time,
    ).filter(
        finance.SW1_CODE != '751030',  # 排除科创板
        indicator.status == 1,  # 当前股票不停牌
        valuation.market_cap > 200000000,  # 市值规模大于2亿
    )
    # 按市值排序并筛选出前5
    all_stocks = get_fundamentals(q).sort_values('market_cap', ascending=False)[:5]
    # 获取选股结果
    selected_stocks = all_stocks.loc[talib.RSI(get_bars(all_stocks['code'].tolist(), context.window, '1d', ['high', 'low', 'close'])['close'], timeperiod=14).iloc[-1] < 65]
    selected_stocks = selected_stocks.loc[(CYCLEONE_INDUTRY_RATIO > 0.7) | (CYCLEONE_INDUTRY_RATIO < 0.2)]
    selected_stocks = selected_stocks.loc[talib.MA(get_bars(selected_stocks['code'].tolist(), context.window, '1d', ['close'])['close'], timeperiod=20).iloc[-1] > talib.MA(get_bars(selected_stocks['code'].tolist(), context.window, '1d', ['close'])['close'], timeperiod=120).iloc[-1]]
    return selected_stocks

# 获取选股结果
def select_stocks(context):
    selected_stocks = select_condition(context)
    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)
收益&风险
源码

评论