(supermind量化策略)a1/rsi小于65、今日上涨>1主板、圆弧形

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

问财量化选股策略逻辑

本选股策略为:RSI指标小于65,今日上涨幅度大于1%,主板股票,形态为圆弧形。期望通过技术面和基本面,寻找落后于市场表现的个股。

选股逻辑分析

该选股策略同样结合了技术面和基本面。RSI小于65代表股票处于超卖区间,可以预期股票将会反弹;今日上涨幅度大于1%代表股票动能较强,预期未来将继续上涨;选择主板股票,代表该股票具备较强的市场地位和良好的基本面;选择圆弧形形态,是因为圆弧形态在股票走势中往往是重要的反转形态之一。该选股策略期望长期内能够获得具有一定市场表现的投资收益。

有何风险?

由于设置的选股条件较为固定,可能会忽略市场的动态变化,导致股票运行状况与市场趋势出现脱节。同时,基本面指标在不同的市场和行业具有不同的适用性,需要投资者进行深入研究和分析。而且,仅仅依靠技术指标可能会存在伪信号的问题,需要投资者进行风险控制和合理把握。

如何优化?

可以从技术分析和基本面两方面入手优化选股策略。比如加入多种指标和形态进行筛选,设置更加合理的基本面指标标准。同时,可以根据市场行情和股票类型等进行动态调整,避免出现市场动态与选股逻辑不符合的情况。需要进行风险控制和合理把握。

最终的选股逻辑

本选股策略为:RSI指标小于65,今日上涨幅度大于1%,主板股票,形态为圆弧形。期望获得市场表现良好的个股。

同花顺指标公式代码参考

MA1:=MA(CLOSE,MA1Len);    //20日简单移动平均线
C_1:=REF(CLOSE,1);        //取昨天收盘价
C_2:=REF(CLOSE,2);        //取前天收盘价
C_3:=REF(CLOSE,3);        //取大前天收盘价
AR:=SUM(HIGH-MA1,20)/SUM(MA1-LOW,20)*100;    //AR公式
BR:=SUM(MAX(HIGH-C_1,0),20)/SUM(MAX(C_1-LOW,0),20)*100;    //BR公式
ARC:=AR-REF(AR,1);        //AR的变化量
BRC:=BR-REF(BR,1);        //BR的变化量
DEV:=STD(CLOSE,DEVLen);    //收盘价的标准差
UP:=MA1+UP_time*DEV;    //UP线
DN:=MA1-DN_time*DEV;    //DN线
COND1:=AR>=80;        //AR大于等于80
COND2:=C_1<UP;        //昨日收盘价小于UP线
COND3:=C_3>=DN AND C_2<DN AND C_1>=DN;    //大前天收盘价大于等于DN线、前天低于DN线并且昨天高于DN线
COND4:=ARC>0 AND BRC<0;    //AR变化量大于0并且BR变化量小于0
COND5:=H_Lpercent<=H_LpercentMax;    //当日最高价跌幅小于设定的阈值
DRAWICON(CROSS(AR,BR) AND COND1 AND COND2 AND COND3 AND COND4 AND COND5, "%circle", 130, 10);

python代码参考

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

# 选股函数
def stock_picking():
    # 获取RSI指标小于65、今日上涨幅度大于1%、主板股票、形态为圆弧形的股票池
    basic_data = ts.get_stock_basics()
    market_data = ts.get_today_all()
    daily_data = ts.get_today_ticks()
    merge_data = pd.merge(market_data, daily_data, on='name', how='inner')
    merge_data.drop(merge_data[merge_data['changepercent'] == 0.0].index, inplace=True)
    merge_data.drop(merge_data[merge_data['volume'] <= 0].index, inplace=True)
    group_data = merge_data.groupby('name').agg({'volume': 'sum'})
    merge_data = pd.merge(merge_data, group_data, on='name', how='inner', suffixes=('_in_day', '_in_total'))
    filter_data = merge_data[(merge_data['rsi'] < 65) & (merge_data['changepercent'] > 1.0) & (merge_data['stock_type'] == '主板')]
    filter_data['up_time'] = 2.0
    filter_data['dn_time'] = 2.0
    ma_20 = filter_data['high_5_min'].rolling(window=20).mean()
    std_20 = filter_data['close'].rolling(window=20).std()
    filter_data['up'] = ma_20 + filter_data['up_time'] * std_20
    filter_data['dn'] = ma_20 - filter_data['dn_time'] * std_20
    filter_data.dropna(inplace=True)
    filter_data['h_l_percent'] = (filter_data['high_5_min'] - filter_data['low_5_min']) / filter_data['low_5_min']
    filter_data = filter_data[filter_data['h_l_percent'] <= 0.03]
    filter_data = filter_data[filter_data['ar'].shift(1) < 80]
    filter_data = filter_data[filter_data['close'].shift(1) < filter_data['up']]
    filter_data = filter_data[filter_data['close'].shift(3) >= filter_data['dn']]
    filter_data = filter_data[filter_data['ar'].diff() > 0]
    filter_data = filter_data[filter_data['br'].diff() < 0]
    filter_data = filter_data[['name', 'industry', 'open', 'price', 'outstanding', 'totals', 'totalAssets', 'liquidAssets', 'fixedAssets', 'reserved','reservedPerShare', 'esp', 'bvps', 'pb', 'timeToMarket']]
    
    return filter_data
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论