(同花顺量化)10天内涨停天数大于2_、上市大于、rsi小于65

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

问财量化选股策略逻辑

选股逻辑:rsi小于65,上市大于1年,10天内涨停天数大于2的股票。

选股逻辑分析

该选股逻辑结合了技术面和市场情绪的因素。RSI指标用于判断股票短期内的超买或超卖情况,选出近期相对较弱的股票;选股时限制上市时间,主要是基于新上市的公司一般业绩不稳定、信息披露不及时等因素;通过统计10天内的涨停天数,可以判断股票的市场情绪和热度,当涨停天数大于2,可以判定股票处于一定的上涨行情中。综合这些因素,可以选出短期相对弱势但市场情绪正常的股票,具有一定的投资价值。

有何风险?

该选股策略过于依赖市场情绪和短期涨停行情,存在风险较高的问题,当市场情绪转向或涨停行情结束,该选股策略的选股结果可能失效。同时,该策略的短时特性以及不够稳健,容易受到市场波动、其他突发事件等因素的影响。

如何优化?

可以结合其他技术和基本面指标进行筛选,如MACD指标、成交量等指标,综合判断股票的走势和价值。同时,可以根据不同股票的特点,调整近期涨跌幅度阈值和涨停天数,制定相应的选股策略。需注意该策略的风险控制,择机买入或卖出股票,尽量规避市场风险。

最终的选股逻辑

选股逻辑:rsi小于65,上市大于1年,10天内涨停天数大于2的股票。

同花顺指标公式代码参考

C1: MAINBORADINFO(1) == 1 AND ZuiXinJia >= 10 AND ZuiXinJia <= 100 AND ZuiXinJia/LiShiJiaGe > 0.9 AND HSL > 0.1
C2: RSI(CLOSE, 14) <= 65
C3: COUNT(IF(REF(HIGH, -1) == REF(LOW, -1) AND HIGH / REF(CLOSE, -1) >= 1.1 AND REF(CLOSE, 0) / REF(CLOSE, -1) <= 1.098, 1, 0), 10) >= 2
SELECT IF(C1 AND C2 AND C3, 1, 0)

Python代码参考

import pandas as pd
import akshare as ak
import talib

def get_stock_list():
    result_df = pd.DataFrame()
    stock_pool = ak.stock_zh_a_spot().astype({'证券代码':'str'})['证券代码'].tolist()

    for code in stock_pool:
        # 获取股票基本信息和财务数据
        stock_info = ak.stock_info_a_name(code).reset_index(drop=True)
        if len(stock_info) == 0:
            continue
        stock_info.rename(columns={"0": "name", "4": "industry"}, inplace=True)
        stock_info['code'] = code
        stock_info = stock_info[['code', 'name', 'industry']]
        finance = ak.stock_financial_analysis_indicator(stock=code)
        if len(finance) == 0:
            continue
        finance = finance[finance['报告日期'].str.contains('12-31')].reset_index(drop=True)
        if len(finance) == 0:
            continue
        # 剔除上市时间较短的股票
        if (stock_info['上市时间'] > 1):
            # 计算RSI和涨停天数
            df = ak.stock_zh_a_daily(symbol=code, adjust="qfq")
            if len(df) == 0:
                continue
            if (len(df) < 12):
                continue
            df['rsi'] = talib.RSI(df['收盘价'].values, timeperiod=14)
            df['pct_change'] = df['收盘价'].pct_change()
            df['limit_up'] = (df['收盘价'] / df['开盘价'].shift(1) > 1.1) & (df['收盘价'] / df['收盘价'].shift(1) <= 1.098)
            df['limit_count'] = df['limit_up'].rolling(10).sum()
            if (df['rsi'].iloc[-1] <= 65) and (df['limit_count'].iloc[-1] > 2):
                result_df = result_df.append(stock_info, ignore_index=True)

    return result_df

Python依赖库

  • pandas

  • akshare

  • talib

      ## 如何进行量化策略实盘?
      请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
    
      select_sentence = '市值小于100亿' #选股语句。
    
      模板如何使用?
    
      点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
    
    
      ## 如果有任何问题请添加 下方的二维码进群提问。
      ![94c5cde12014f99e262a302741275d05.png](http://u.thsi.cn/imgsrc/pefile/94c5cde12014f99e262a302741275d05.png)
    
收益&风险
源码

评论