(同花顺量化)10天内涨停天数大于2_、开盘价在十日线左右、至少5根均线重合的股票

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

问财量化选股策略逻辑

  • 至少5根均线重合的股票
  • 开盘价在十日线左右
  • 10天内涨停天数大于2

选股逻辑分析

这个策略的逻辑是基于技术分析,寻找均线密集区域的股票,同时要求股票在十日线附近开盘,并且在10天内出现较多的涨停板。这样的股票可能有较强的市场关注度和趋势,值得投资者关注。

有何风险?

  • 这个策略没有考虑公司的基本面因素,仅仅基于技术分析,因此可能存在较大的风险。
  • 如果市场出现较大的波动,均线密集区域可能会被打破,导致股票价格出现较大的波动。
  • 涨停板的数量也可能受到市场情绪和题材的影响,因此不能完全依赖于这个指标。

如何优化?

  • 可以考虑加入公司的基本面因素,例如市盈率、市净率等,以提高策略的准确性和稳定性。
  • 可以考虑加入更多的技术指标,例如布林线、macd等,以更准确地判断股票的趋势和价格走势。
  • 可以考虑加入更多的限制条件,例如股票的市值、行业等,以缩小筛选范围,提高策略的效率。

最终的选股逻辑

  • 股票的收盘价在五日、十日、二十日、三十日、六十日均线的密集区域。
  • 股票的开盘价在十日线附近。
  • 股票在10天内出现的涨停板数量大于2。
  • 股票的市值在一定范围内(例如流通市值在10亿以下)。
  • 股票所在行业符合一定的标准(例如不属于夕阳行业)。

python代码参考

import talib
import pandas as pd

def get_stock_data():
    # 获取股票数据
    data = pd.read_csv('stock_data.csv')
    return data

def get_rolling_mean(data, n):
    # 获取n日的滚动平均值
    rolling_mean = talib.MA(data, n)
    return rolling_mean

def get_rolling_std(data, n):
    # 获取n日的滚动标准差
    rolling_std = talib.STDDEV(data, n)
    return rolling_std

def get_intersection(rolling_mean1, rolling_mean2):
    # 获取两个移动平均线的交点
    intersection = []
    for i in range(len(rolling_mean1)):
        if rolling_mean1[i] == rolling_mean2[i]:
            intersection.append(i)
    return intersection

def get_overlapping_stocks(data, n):
    # 获取至少n日均线重合的股票
    overlapping_stocks = []
    for i in range(len(data)):
        rolling_mean1 = get_rolling_mean(data[i], n)
        rolling_mean2 = get_rolling_mean(data[i+1], n)
        intersection = get_intersection(rolling_mean1, rolling_mean2)
        if len(intersection) >= 5:
            overlapping_stocks.append(data[i])
    return overlapping_stocks

def get_stocks_with_sufficient_stocks(overlapping_stocks, n):
    # 获取10天内出现的涨停板数量大于2的股票
    stocks_with_sufficient_stocks = []
    for stock in overlapping_stocks:
        rolling_std1 = get_rolling_std(stock['close'], n)
        rolling_std2 = get_rolling_std(stock['close'], 20)
        if rolling_std1 > rolling_std2:
            for i in range(len(stock['close'])):
                if stock['close'][i] > stock['close'][i-10] * 1.05:
                    stocks_with_sufficient_stocks.append(stock)
                    break
    return stocks_with_sufficient_stocks

def get_stocks_with_filteringCriteria(overlapping_stocks, n,市值Filter, industryFilter):
    # 获取市值在一定范围内(例如流通市值在10亿以下)和所在行业符合一定标准(例如不属于夕阳行业)的股票
    stocks_with_filteringCriteria = []
    for stock in overlapping_stocks:
        if stock['market_cap'] <市值Filter and stock['industry'] not in industryFilter:
            stocks_with_filteringCriteria.append(stock)
    return stocks_with_filteringCriteria

def main():
    # 获取股票数据
    data = get_stock_data()
    # 获取至少5日均线重合的股票
    overlapping_stocks = get_overlapping_stocks(data, 5)
    # 获取10天内出现的涨停板数量大于2的股票
    stocks_with_sufficient_stocks = get_stocks_with_sufficient_stocks(overlapping_stocks, 10)
    # 获取市值在一定范围内(例如流通市值在10亿以下)和所在行业符合一定标准(例如不属于夕阳行业)的股票

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

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

模板如何使用?

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


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

评论