(supermind量化策略)task14/a/元宇宙、前25天有涨停、圆弧形

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

问财量化选股策略逻辑

本选股策略为:在元宇宙行业中,选择前25天内有涨停且距离当前时间最近的涨停日出现的走势形态为圆弧形的股票,以寻找具有良好趋势的标的。

选股条件为:元宇宙、前25天有涨停、圆弧形。

选股逻辑分析

本选股策略的思路是:首先筛选出在元宇宙该行业中发生过涨停板的股票。然后选取最近一次涨停日,判断涨停日到现在的历史走势是否符合圆弧形的形态,寻找走势具有延续性的标的。

根据技术分析中的走势形态,圆弧形走势属于一种中长期趋势形态,具有较好的延续性和稳定性。因此,选取符合该走势形态的标的可较好地为后续操作提供支持。

有何风险?

本选股策略存在以下风险:

  1. 忽略标的基本面因素,可能选错被高估或低估的标的;
  2. 对于圆弧形的判断需要一定的技术分析水平和经验,判断偏差可能较大;
  3. 仅选取最近一次涨停板日前25天的历史数据作为筛选条件,可能无法完全反映出行业走向和标的质量的变化。

如何优化?

为进一步提升本选股策略的准确性和稳定性,可以:

  1. 结合标的基本面和行业走势等指标,进一步筛选和判断股票的质量;
  2. 考虑对圆弧形走势的判断标准进行量化加权;
  3. 持续跟踪绩效和回溯测试选股策略,通过实际操作数据不断优化策略。

最终的选股逻辑

在元宇宙行业中,选择前25天内有涨停且距离当前时间最近的涨停日出现的走势形态为圆弧形的股票,以寻找具有良好趋势的标的。

选股条件为:元宇宙、前25天有涨停、圆弧形。

同花顺指标公式代码参考

选股条件:前25天有涨停板、走势形态为圆弧形
TDX公式:
C1: CROSSCOUNT(ZT>0,C)>0;
C2: FVAR1:=MA(CLOSE, 30);
FVAR2:=ABS(MAX(HIGH-FVAR1, 0));
FVAR3:=ABS(MIN(LOW-FVAR1, 0));
FVAR4:=C-SMA(C, 30, 2);
FVAR5:=ABS(MAX(FVAR4, 0));
FVAR6:=ABS(MIN(FVAR4, 0));
FVAR7:=FVAR5+FVAR6;
FVAR8:=SMA(FVAR7, 30, 2)/SMA(TR, 30, 2)*100;
C3: FVAR8 < 40;
SELECT IF(C1 AND C3, 1, 0);

同花顺公式:
前25天有涨停板 AND 走势形态为圆弧形

python代码参考

import pandas as pd
import numpy as np
from typing import List

def select_stocks(data: pd.DataFrame, days_before: int) -> List[str]:
    df = data.copy()
    today = df.index.get_level_values('date').unique()[-1]
    codes = df.loc[today].index.unique().tolist()
    select_df = []
    for code in codes:
        his_df = df.loc[df.index.get_level_values('code') == code]
        zt_days = his_df['涨停板'].rolling(window=days_before).sum().iloc[-1]
        if zt_days > 0:
            series = his_df.iloc[-60:]
            X = np.array([i+1 for i in range(60)])
            Y = np.array(series['收盘价'])
            A = np.vstack([X, np.ones(60)]).T
            k, b = np.linalg.lstsq(A, Y, rcond=None)[0]
            FVAR1 = np.mean(series['收盘价'])
            FVAR2 = np.abs(np.max(series['最高价'] - FVAR1))
            FVAR3 = np.abs(np.min(series['最低价'] - FVAR1))
            FVAR4 = series['收盘价'] - np.mean(series['收盘价'])
            FVAR5 = np.abs(np.max(FVAR4))
            FVAR6 = np.abs(np.min(FVAR4))
            FVAR7 = np.sum([FVAR5, FVAR6])
            FVAR8 = np.sum(FVAR7) / np.sum(series['成交额']) * 100
            if k < -0.0105 and FVAR8 < 40:
                select_df.append(code)
    select_df.sort(key=lambda x: df.loc[(today, x), '总市值'], reverse=False)
    return select_df
    ## 如何进行量化策略实盘?
    请把您优化好的选股语句放入文章最下面模板的选股语句中即可。

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

    模板如何使用?

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


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

评论