问财量化选股策略逻辑
该选股策略包括三个条件:
- 振幅大于1;
- 至少5根均线重叠;
- 9点25分涨幅小于6%。
选股逻辑分析
振幅大于1、均线重合可以反映出股票价格的波动稳定性,9点25分涨幅小于6%则反映了股票的走势稳定性。这些条件可以通过过滤掉走势波动性较大、风险较高的股票。同时,在这个时间点涨幅小于6%,则可以更好地控制投资风险。
有何风险?
该选股策略中,基于单个时间点对股票的走势进行分析可能会忽略前期涨跌幅度较大的情况,从而可能使选股结果偏差。此外,9点25分的涨跌幅情况也可能会受到市场流动性等影响而产生一些误差。
如何优化?
为了更好地综合考虑股票前期走势对选股结果的影响,可以增加一些其他技术指标,如RSI、MACD、KDJ等,来结合股票的趋势进行筛选。此外,可以适当调整时间点,加入其他时间点的涨跌幅条件,以更全面地进行分析,减少投资风险。
最终的选股逻辑
考虑到基本面、技术面和时序性因素,我们建议选股策略的逻辑为:
- 振幅大于1;
- 至少5根均线重叠;
- 股价处于一定范围内;
- 加入其他技术指标来筛选;
- 调整时间点,加入其他时间点的涨跌幅条件来筛选。
同花顺指标公式代码参考
无同花顺指标库公式可直接调用,需要自己编写脚本实现。
python代码参考
import pandas as pd
import tushare as ts
import talib
def get_stock_pool(date, low_price, ma_count):
# 获取所有股票代码
df = ts.get_stock_basics()
codes = df.index.tolist()
result = pd.DataFrame()
for code in codes:
# 上市不足60天的股票忽略
if (pd.to_datetime(date) - pd.to_datetime(df.loc[code]['timeToMarket'])).days <= 60:
continue
bars_all = ts.get_k_data(code, '2022-01-01', date)
if bars_all is None or bars_all.empty or len(bars_all) < 2:
continue
close = bars_all['close'].values
high = bars_all['high'].values
low = bars_all['low'].values
# 振幅大于1
amplitude = (high - low) / close
if amplitude[-1] < 0.01:
continue
# 5日、10日和20日均线
ma_5 = talib.MA(close, timeperiod=5)
ma_10 = talib.MA(close, timeperiod=10)
ma_20 = talib.MA(close, timeperiod=20)
ma_count = len(set([ma[-1] for ma in [ma_5, ma_10, ma_20]]))
if ma_count < 5:
continue
# 股价
price = close[-1]
if price < low_price[0] or price > low_price[1]:
continue
# 9点25分涨幅小于6%
open = bars_all['open'].values
change = (open[1] - open[0]) / open[0]
if change > 0.06:
continue
# RSI、MACD等指标
macd_dif, macd_dea, macd_hist = talib.MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
rsi_6 = talib.RSI(close, timeperiod=6)
rsi_12 = talib.RSI(close, timeperiod=12)
kdj_k, kdj_d, kdj_j = talib.STOCH(high, low, close, fastk_period=9, slowk_period=3, slowk_matype=0, slowd_period=3, slowd_matype=0)
if rsi_6[-1] < 30 and rsi_12[-1] < 50 and kdj_k[-1] < 20 and macd_dif[-1] > 0 and macd_hist[-1] > 0:
result = result.append({'code': code, 'name': df.loc[code]['name'], 'price': price, 'vol': df.loc[code]['volume']},ignore_index=True)
result = result.sort_values(by=['vol'], ascending=False)
return result
注:代码仅供参考,具体选股逻辑和细节可根据实际需求进行调整。
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
