(supermind量化-)振幅大于1、昨日非涨停板、主升起动_

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

问财量化选股策略逻辑

本选股策略选取振幅大于1、昨日非涨停板的股票,并筛选出主升起动的股票。

选股逻辑分析

振幅大于1和昨日非涨停板的条件筛选同其他股票的选股逻辑,而主升起动的指标判断可以通过技术指标如KDJ、RSI等来判断,从而提高选股的准确性。

有何风险?

选股策略忽略了其他技术和基本面指标的影响,可能忽略掉一些重要的股票信息和趋势。同时,市场存在着大量的投机资金,股票的波动也可能出现异常。

如何优化?

可以结合其他技术指标和基本面分析,如MACD、BOLL等技术指标,以及PE、PB等基本面指标,进一步优化选股条件。同时,增加一些过滤条件,如剔除ST股票、停牌股票等,可以提高选股的准确性。

最终的选股逻辑

本选股策略选取振幅大于1、昨日非涨停板的股票,通过技术指标判断主升起动的股票。

同花顺指标公式代码参考

本选股策略采用KDJ指标来判断股票的主升起动,KDJ指标的计算公式如下:

RSV(N) = (C - L(N)) / (H(N) - L(N)) * 100
K(N) = (2/3) * K(N-1) + (1/3) * RSV(N)
D(N) = (2/3) * D(N-1) + (1/3) * K(N)
J(N) = 3 * K(N) - 2 * D(N)

python代码参考

# 引入Tushare库
import tushare as ts

# 连接Tushare库
pro = ts.pro_api()

def select_stocks(n):
    selected_stocks = []
    today = pro.trade_cal(exchange='', is_open='1')["cal_date"].values[-1]
    yesterday = pro.trade_cal(exchange='', is_open='1', end_date=today, count=2)["cal_date"].values[0]
    for i in range(3):
        # 筛选出振幅大于1、昨日非涨停板的股票
        quote = pro.limit_list(trade_date=yesterday, limit_type='U')
        quote = quote[~quote["ts_code"].str.startswith("688")] # 剔除科创板
        quote = quote.append(pro.limit_list(trade_date=yesterday, limit_type='D'))
        quote = quote[~quote["ts_code"].str.startswith("300")] # 剔除创业板
        quote = quote.drop_duplicates(subset="ts_code", keep=False)
        quote = quote.merge(pro.daily(trade_date=yesterday, fields='ts_code, pct_chg'), on="ts_code")
        quote = quote[quote["pct_chg"] < 9.9]
        quote = quote.merge(pro.stocks_basic(exchange='', list_status='L', fields='ts_code,name'), on='ts_code')
        # 判断是否符合KDJ指标的主升起动条件
        for code in quote["ts_code"].tolist():
            k_data = pro.daily(ts_code=code, start_date="20190101", end_date=today, fields="ts_code, trade_date, high, low, close")
            if len(k_data) > 6:
                high_values = k_data["high"].rolling(9).max()
                low_values = k_data["low"].rolling(9).min()
                RSV = (k_data["close"] - low_values) / (high_values - low_values) * 100
                K = RSV.rolling(3).mean()
                D = K.rolling(3).mean()
                J = 3 * K - 2 * D
                J_last_5 = J.tail(5)
                if J_last_5.mean() > 80:
                    selected_stocks.append(code)
        if len(selected_stocks) >= n:
            break
    return selected_stocks[:n]
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论