问财量化选股策略逻辑
首先,我们定义了以下三个条件作为我们的筛选标准:
- 至少5根均线重合的股票
- 换手率>2%且<9%
- 今日控盘>21
选股逻辑分析
这些条件的目的是筛选出那些有较强趋势和低成交量的股票。首先,至少5根均线重合的股票意味着该股票的走势较为稳定,且有较强的上涨动力。其次,换手率>2%且<9%的条件意味着该股票的成交量适中,避免了过度交易和高成交量带来的风险。最后,今日控盘>21的条件意味着该股票的主力资金较为集中,有较强的控盘能力。
有何风险?
尽管这些条件可以筛选出一些有潜力的股票,但仍然存在一定的风险。首先,均线重合的股票可能会出现假突破,导致投资者追涨杀跌,从而造成损失。其次,换手率适中的股票可能会被主力资金操纵,导致价格波动较大。最后,控盘能力较强的股票可能会出现庄家拉高出货的情况,从而给投资者带来损失。
如何优化?
为了降低这些风险,我们可以对这些条件进行优化。首先,我们可以增加均线的数量,以更好地判断股票的趋势。其次,我们可以加入成交量和换手率的指标,以更好地判断股票的活跃度和风险程度。最后,我们可以加入技术分析指标,如MACD和KDJ等,以更好地判断股票的走势和趋势。
最终的选股逻辑
最终的选股逻辑如下:
- 筛选出所有日线图中至少5根均线重合的股票
- 筛选出所有日线图中换手率>2%且<9%的股票
- 筛选出所有日线图中今日控盘>21的股票
- 对筛选出的股票进行技术分析,加入MACD和KDJ等指标,判断股票的走势和趋势
- 将符合以上条件的股票按照技术分析指标的指示进行排序,选择排名靠前的股票作为最终的买入目标。
python代码参考
以下是一个简单的python代码参考,用于实现上述的选股逻辑:
import talib
def get_stock_data(symbol):
# 获取股票的历史数据
data = yf.download(symbol, start='2020-01-01', end='2021-12-31')
# 计算均线
ma5 = talib.MA(data['close'], timeperiod=5)
ma10 = talib.MA(data['close'], timeperiod=10)
ma20 = talib.MA(data['close'], timeperiod=20)
ma50 = talib.MA(data['close'], timeperiod=50)
ma200 = talib.MA(data['close'], timeperiod=200)
# 计算换手率
data['volume'] = data['volume']
data['turnover'] = data['volume'] / data['close'] * 100
data['turnover_rate'] = data['turnover'] / data['close'] * 100
# 计算今日控盘
data['close_weight'] = data['close'] / data['close'].rolling(window=1).sum()
data['close_weight'] = data['close_weight'].cumsum()
data['close_weight'] = data['close_weight'] / data['close_weight'].max()
data['control'] = data['close_weight'] > 21
# 返回数据
return data
def get_top_stock():
# 获取所有股票的代码
symbols = yf.ticker.list()
# 获取所有股票的历史数据
data = []
for symbol in symbols:
data.append(get_stock_data(symbol))
# 将数据按时间顺序排序
data = pd.concat(data, axis=1)
data = data.sort_values(by='date')
# 获取符合筛选条件的股票
filtered_data = data[(data['ma5'] > data['ma10']) & (data['ma10'] > data['ma20']) & (data['ma20'] > data['ma50']) & (data['ma50'] > data['ma200']) & (data['turnover_rate'] > 2) & (data['control'])]
# 获取符合筛选条件的股票的排名
filtered_data = filtered_data.sort_values(by='turnover_rate', ascending=False)
# 获取前5名的股票
top_stocks = filtered_data.iloc[:5]
# 返回前5名的股票
return
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
