(supermind量化策略)task17/a/换手率3%-12%、三连阴、非ST(10点

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

问财量化选股策略逻辑

选股逻辑为:在换手率在3%-12%之间、连续三天收阴线、非ST,每日开盘前选出当天涨停的前五只股票。

选股逻辑分析

该选股逻辑主要考虑了股票换手率和连续三天阴线的因素,同时限制了选股的范围,每天选出当天涨停的前五只股票,以期望获得较好的回报。

有何风险?

该选股逻辑过于简单,未考虑到其他重要因素,如基本面等,可能存在较大的风险。

如何优化?

可以引入更多基本面和技术面的因素,如公司业绩、股息、市盈率等因素,同时也可以结合行业和宏观经济的因素进行综合分析。

最终的选股逻辑

在换手率在3%-12%之间、连续三天收阴线、非ST,每日开盘前选出当天涨停的前五只股票。

同花顺指标公式代码参考

以通达信公式为例:

SETBARS(250,0);
V_SELECT := 非ST AND 三连阴(5) AND DAY=1 AND 日内涨停 AND 每日排名<=5;
筛选条件:V_SELECT;

其中,日内涨停可以通过价格和涨跌幅的关系进行得出。

python代码参考

import baostock as bs
import pandas as pd

#### 登陆系统 ####
lg = bs.login()

#### 获取满足条件的股票 ####
rs = bs.query_stock_basic()
stock_list = []

while (rs.error_code == '0') & rs.next():
    stock_code = rs.get_row_data()[0]
    # 满足换手率和三连阴和非ST的股票
    rs_k = bs.query_history_k_data_plus(stock_code, "date,open,high,low,close,volume,amount", start_date='2022-07-01', end_date='2022-07-09', frequency='d', adjustflag='3')
    if rs_k.error_code == '0':
        close_hist = list(map(float, rs_k.get_column("close")))
        volume_hist = list(map(float, rs_k.get_column("volume")))
        amount_hist = list(map(float, rs_k.get_column("amount")))
        if len(close_hist) >= 3 and all([close_hist[i] < close_hist[i-1] for i in range(1, 3)]) and 'ST' not in rs.get_row_data()[2]:
            # 查询涨停信息
            rs_lhb = bs.query_trade_dates(start_date='2022-07-01', end_date='2022-07-09')
            date_list = []
            while (rs_lhb.error_code == '0') & rs_lhb.next():
                date = rs_lhb.get_row_data()[0]
                date_list.append(date)
            for date in date_list:
                rs_limit = bs.query_limit_data(stock_code, start_date=date, end_date=date)
                if rs_limit.error_code == '0' and rs_limit.next():
                    limit_price = float(rs_limit.get_row_data()[1])
                    if close_hist[-1] >= limit_price:
                        rs_rank = bs.query_stock_ranking(date=date, stock_code=stock_code)
                        if rs_rank.error_code == '0' and rs_rank.next():
                            stock_rank = int(rs_rank.get_row_data()[7])
                            if stock_rank <= 5:
                                stock_list.append({"stock_code": stock_code, "limit_date": date, "limit_price": limit_price, "stock_rank": stock_rank})
                                break

df = pd.DataFrame(stock_list)
print(df)

#### 登出系统 ####
bs.logout()
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论