(supermind量化策略)a1/rsi小于65、今日上涨>1主板、周线MA5金叉MA1

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

问财量化选股策略逻辑

本选股策略为:RSI指标小于65,今日上涨幅度大于1%,选择主板股票,在周线中MA5金叉MA10的股票进行投资,期望获得超额收益。

选股逻辑分析

该选股策略结合了技术面和市场趋势因素。RSI指标小于65代表着该股票处于超卖状态有望迎来反弹;今日上涨幅度大于1%则代表着该股票在短期内有上涨动能;选择主板股票可以降低市场风险;在周线中MA5金叉MA10,则代表着股票的上涨趋势正在加强,再结合其他指标做相应的风险控制,可以更好地获取超额收益。

有何风险?

这个选股策略也存在一定的风险,一方面,它只考虑了技术面和市场趋势因素,而忽略了财务指标等其他因素,选择可能出现偏颇;另一方面,该策略采用的规则固定而死板,可能会导致特定条件下的过拟合。

如何优化?

应该在考虑技术面和市场趋势因素的基础上,综合考虑其他因素,如财务指标等因素来制定更加全面科学的选股策略。另外,制定风控措施如止损策略等,以减少风险。通过机器学习等算法来进行优化和筛选,提高策略优化的有效性。也可以通过动态调整策略来进行进一步的优化。

最终的选股逻辑

本选股策略为:RSI指标小于65,今日上涨幅度大于1%,选择主板股票,在周线中MA5金叉MA10的股票进行投资,注重长期投资价值和风险控制。

同花顺指标公式代码参考

// 建立选股语句
SELECT
    a.*
FROM
    (
        stock_market_data a
        JOIN stock_basic_data b ON a.stock_code = b.stock_code
    )
    JOIN (
        SELECT
            stock_code
        FROM
            stock_basic_data
        WHERE
            rsi < 65
        AND today_increase_rate > 1
        AND is_main = 1
        AND ma5 > ma10
    ) c ON a.stock_code = c.stock_code;

注意:is_main代表是否为主板股票。

python代码参考

# 导入需要使用的库
import pandas as pd
import tushare as ts
import talib as ta

# 选股函数
def stock_picking():
    # 获取RSI指标小于65、今日上涨幅度大于1%、主板股票的信息
    all_data = ts.get_stock_basics()
    all_data = all_data[all_data['totalAssets'] > 0.1 * 10**10]
    all_data = all_data[all_data['pb'] < 3]
    all_data = all_data[all_data['pe'] > 0]
    all_data = all_data[all_data['pe'] < 100]
    all_data = all_data[~all_data.index.str.contains('ST', regex=False)]
    yesterday_data = ts.get_day_all(date='2022-01-10')
    daily_rate = yesterday_data['trade'] / yesterday_data['open'] - 1
    filter_data = all_data[(daily_rate > 1) & (daily_rate < float('inf'))]

    # 计算MA5和MA10指标,并筛选MA5金叉MA10的股票,同时剔除ST股票
    filter_data = filter_data[~filter_data.index.str.contains('ST', regex=False)]
    for code in filter_data.index.tolist():
        history_data = ts.pro_bar(ts_code=code, adj='qfq', freq='W', start_date='20180101', end_date='20220110')
        ma5 = ta.MA(history_data['close'], timeperiod=5)
        ma10 = ta.MA(history_data['close'], timeperiod=10)
        if ma5.tolist()[-2] < ma10.tolist()[-2] and ma5.tolist()[-1] > ma10.tolist()[-1]:
            continue
        else:
            filter_data.drop(index=code, inplace=True)

    # 计算涨跌幅度和选股依据,并返回选股结果
    yesterday_data = ts.get_day_all(date='2022-01-10')
    daily_return = yesterday_data['trade'] / yesterday_data['open'] - 1
    yesterday_data['daily_return'] = daily_return
    filter_data = filter_data.join(yesterday_data.set_index('code'), on='code')
    stock_list = filter_data.index.tolist()

    return stock_list
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论