(同花顺量化)股票均价站在五日均线之上_、昨天换手率>8%、至少5根均线重合的股票

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

问财量化选股策略逻辑

  • 至少5根均线重合的股票
  • 昨天换手率>8%
  • 股票均价站在五日均线之上

选股逻辑分析

这个策略基于三个基本的股票技术指标:均线、换手率和股票价格。首先,至少5根均线重合的股票表明这些股票的价格趋势比较稳定,而且可能有更多的机会出现买入或卖出信号。其次,昨天换手率>8%的股票表明这些股票的交易活跃度较高,可能有更多的机会出现趋势反转或趋势延续的情况。最后,股票均价站在五日均线之上表明这些股票的价格趋势是向上的,可能有更多的机会出现买入信号。

有何风险?

这个策略的局限性在于它只考虑了股票的基本技术指标,没有考虑其他因素,如公司的财务状况、行业趋势和市场情绪等。此外,如果股票的价格波动较大,这些技术指标可能无法准确反映股票的趋势。

如何优化?

为了优化这个策略,可以考虑加入其他技术指标,如布林线、MACD等,以更准确地反映股票的趋势。此外,可以考虑加入其他因素,如公司的财务状况、行业趋势和市场情绪等,以更全面地评估股票的投资价值。

最终的选股逻辑

以下是最终的选股逻辑:

  • 股票的收盘价在五日均线之上
  • 股票的收盘价在十日均线之上
  • 股票的收盘价在二十日均线之上
  • 股票的收盘价在三十日均线之上
  • 股票的收盘价在六十日均线之上
  • 股票的换手率昨天大于8%
  • 股票的收盘价在布林线中轨之上
  • 股票的收盘价在布林线中轨之上
  • 股票的收盘价在布林线中轨之上
  • 股票的收盘价在布林线中轨之上

python代码参考

以下是基于上述策略的python代码:

import talib
import pandas as pd

def get_stock_data(stock_code):
    # 获取股票的历史收盘价数据
    df = pd.read_csv(f'https://query1.finance.yahoo.com/v7/finance/download/{stock_code}', index_col='Date')
    df = df[['Adj Close']]
    df = df.resample('D').last()
    df = df.dropna()
    return df

def get_rolling_mean(df, n):
    # 获取n日的滚动平均值
    rolling_mean = df.rolling(n).mean()
    return rolling_mean

def get_bollinger Bands(df, n):
    # 获取n日的布林线
    upper, middle, lower = talib.BBANDS(df['Adj Close'], timeperiod=n, bandtype='upper', stdname='std')
    return upper, middle, lower

def get_stock_scores(df, n):
    # 获取n日的股票评分
    rolling_mean = get_rolling_mean(df, n)
    upper, middle, lower = get_bollinger Bands(df, n)
    rsi = talib.RSI(df['Adj Close'], timeperiod=n)
    macd = talib.MACD(df['Adj Close'], fastperiod=12, slowperiod=26, signalperiod=9)
    ema12 = talib.EMA(df['Adj Close'], timeperiod=12)
    ema26 = talib.EMA(df['Adj Close'], timeperiod=26)
    ema9 = talib.EMA(df['Adj Close'], timeperiod=9)
    cci = talib.CCI(df['Adj Close'], timeperiod=14)
    avg_gain = talib.AVG Gain(df['Adj Close'], timeperiod=1)
    avg_loss = talib.AVG Loss(df['Adj Close'], timeperiod=1)
    return rolling_mean, upper, middle, lower, rsi, macd, ema12, ema26, ema9, cci, avg_gain, avg_loss

def get_top_stocks(n):
    # 获取n日涨幅最大的n支股票
    df = get_stock_data('600036')
    rolling_mean, upper, middle, lower, rsi, macd, ema12, ema26, ema9, cci, avg_gain, avg_loss = get_stock_scores(df, n)
    top_stocks = df[df['Adj Close'] > rolling_mean].sort_values(by='Adj Close', ascending=False).head(n)
    return top_stocks

def get_top_trading_days(n):
    # 获取n日换手率最大的n支股票
    df = get_stock_data('600036')

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

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

模板如何使用?

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


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

评论