(同花顺量化)高点为两日最高_、换手率_2%且_9%、至少5根均线重合的股票

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

问财量化选股策略逻辑

  • 至少5根均线重合的股票
  • 换手率>2%且<9%
  • 高点为两日最高

选股逻辑分析

  • 该策略主要关注均线的重合情况,寻找均线密集的股票,这通常意味着股票价格走势比较稳定,比较容易出现趋势行情。
  • 换手率的要求是为了筛选出比较活跃的股票,避免僵尸股。
  • 高点为两日最高是为了筛选出短期涨幅比较大的股票,同时也避免了过快的上涨导致的回调风险。

有何风险?

  • 该策略主要关注短期趋势,对于长期趋势的把握可能不够准确。
  • 筛选出的股票可能存在较高的换手率,可能会导致交易成本的增加。
  • 筛选出的股票可能存在较高的波动性,可能会导致交易风险的增加。

如何优化?

  • 可以考虑加入更多均线的组合,例如10日、20日、60日等,以更好地把握趋势。
  • 可以考虑加入成交量指标,以更好地筛选出活跃的股票。
  • 可以考虑加入技术指标,例如MACD、RSI等,以更好地判断股票的走势。

最终的选股逻辑

  • 选取至少5根均线重合的股票,例如5日、10日、20日、60日、120日均线重合的股票。
  • 检查股票的换手率是否大于2%且小于9%。
  • 检查股票的高点是否为两日最高。
  • 如果满足以上条件,则将该股票加入股票池。

python代码参考

  • 以下代码使用了问财量化交易的pandas库和ta-lib库。
import pandas as pd
import talib

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.rename(columns={'Adj Close': stock_code})
    df = df.set_index('Date')
    return df

def get_stock_info(stock_code):
    # 获取股票的基本信息
    df = pd.read_csv(f'https://query1.finance.yahoo.com/v7/finance/quote/{stock_code}', index_col='Date')
    df = df[['Open', 'High', 'Low', 'Close', 'Volume']]
    df = df.rename(columns={'Open': 'Open Price', 'High': 'High Price', 'Low': 'Low Price', 'Close': 'Closing Price', 'Volume': 'Trading Volume'})
    df = df.set_index('Date')
    return df

def get_moving_average(df, n):
    # 计算n日的移动平均线
    ma = talib.MA(df, timeperiod=n)
    return ma

def get_stock_pool():
    # 获取所有A股的股票代码
    codes = list(set(df['ts_code']))
    df_pool = pd.DataFrame(index=codes)
    return df_pool

def get_stock_data_pool():
    # 获取所有A股的历史数据
    df_pool = get_stock_pool()
    df_pool = df_pool.apply(get_stock_data)
    return df_pool

def get_stock_info_pool():
    # 获取所有A股的基本信息
    df_pool = get_stock_pool()
    df_pool = df_pool.apply(get_stock_info)
    return df_pool

def get_rolling_window(df, n):
    # 获取n日的滚动窗口
    df = df.rolling(window=n).mean()
    return df

def get_rolling_window_moving_average(df, n):
    # 获取n日的滚动窗口移动平均线
    ma = talib.MA(df.rolling(window=n).mean(), timeperiod=n)
    return ma

def get_stock_pool筛选条件(df_pool, n):
    # 获取满足n日均线重合的股票
    df = df_pool.copy()
    df['5MA'] = get_rolling_window_moving_average(df, n)
    df['10MA'] = get_rolling_window_moving_average(df, n)
    df['20MA'] = get_rolling_window_moving_average(df, n)
    df['60MA'] = get_rolling_window_moving_average(df, n)
    df['120MA'] = get_rolling_window_moving_average(df, n)
    df = df[df['5MA'] == df['10MA'] == df['20MA'] == df['60MA'] == df['120MA']]
    return df

def get_stock_pool筛选条件2(df_pool, n):

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

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

模板如何使用?

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


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

评论