(同花顺量化)20日均线大于120日均线_、上市大于、rsi小于65

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

问财量化选股策略逻辑

选股逻辑:rsi小于65,上市大于1年,20日均线大于120日均线的股票。

选股逻辑分析

该选股逻辑结合了技术面和基本面的因素。RSI指标用于判断股票短期内的超买或超卖情况,选出近期相对较弱的股票;选股时限制上市时间,主要是基于新上市的公司一般业绩不稳定、信息披露不及时等因素;通过比较20日和120日均线,可以判断股票的中长期趋势,当20日均线超过120日均线,可以判定股票处于上升趋势中。综合这些因素,可以选出短期相对弱势但趋势向上的股票,具有一定的投资价值。

有何风险?

均线策略不能适用于所有股票,特别是一些高成长性公司、创新性公司,其业绩增长快,股价表现活跃,且多次出现上涨或下跌和回升等情况,均线对短期及次中期趋势作用有限,容易使筛选结果受到一定误导。同时,20日和120日均线的使用也需要结合个股的市场行情、板块热度等因素进行调整。

如何优化?

可以结合其他技术和基本面指标进行筛选,如MACD指标、成交量等指标,综合判断股票的走势和价值。同时,可以根据不同股票的特点,调整均线期数;对于不同的行业和板块,也可以设置不同的均线策略,合理应用均线选股策略。此外,需要结合市场走势、财报季节等市场情况进行动态调整策略。

最终的选股逻辑

选股逻辑:rsi小于65,上市大于1年,20日均线大于120日均线的股票。

同花顺指标公式代码参考

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: MA(CLOSE, 20) >= MA(CLOSE, 120)
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和MA指标
            df = ak.stock_zh_a_daily(symbol=code, adjust="qfq")
            if len(df) == 0:
                continue
            if (len(df) < 120):
                continue
            df['rsi'] = talib.RSI(df['收盘价'].values, timeperiod=14)
            df['ma20'] = talib.MA(df['收盘价'].values, timeperiod=20)
            df['ma120'] = talib.MA(df['收盘价'].values, timeperiod=120)
            if (df['rsi'].iloc[-1] <= 65) and (df['ma20'].iloc[-1] > df['ma120'].iloc[-1]):
                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)
    
收益&风险
源码

评论