问财量化选股策略逻辑
首先,我们需要确定一些关键参数。我们将使用以下参数:
- 线索数量:至少5根均线
- 可转债简称不可为空
- 2019分红比例大于25%
接下来,我们将使用以下步骤来筛选股票:
- 确定股票的收盘价和时间范围。我们将使用最近一年的数据。
- 计算股票的收盘价和时间范围内的所有均线。我们将使用5根均线:5日均线、10日均线、20日均线、50日均线和200日均线。
- 检查每只股票的可转债简称是否为空。
- 检查每只股票的2019分红比例是否大于25%。
最后,我们将筛选出符合条件的股票,并将其输出到一个结果列表中。
选股逻辑分析
这个策略的逻辑是基于技术分析和财务分析来筛选股票。它考虑了股票的收盘价、均线和分红比例等多个因素。这个策略可能有助于投资者找到具有潜力的股票,但需要谨慎使用,因为它可能不适用于所有市场情况。
有何风险?
这个策略存在一些风险,包括:
- 市场风险:股票市场的表现可能对策略的结果产生影响。
- 技术分析风险:技术分析可能不准确或不适用于所有股票。
- 财务分析风险:财务分析可能不准确或不适用于所有股票。
如何优化?
为了优化这个策略,我们可以考虑以下方法:
- 使用更多的均线来确定股票的趋势。
- 考虑其他财务指标,如市盈率和市净率。
- 使用更多的数据来分析股票。
最终的选股逻辑
以下是最终的选股逻辑:
- 确定股票的收盘价和时间范围。我们将使用最近一年的数据。
- 计算股票的收盘价和时间范围内的所有均线。我们将使用10根均线:5日均线、10日均线、20日均线、30日均线、60日均线、90日均线、120日均线、250日均线、500日均线和2000日均线。
- 检查每只股票的可转债简称是否为空。
- 检查每只股票的2019分红比例是否大于25%。
- 对于每只股票,计算其收盘价与所有均线的相对位置。如果收盘价高于所有均线的平均值,则认为该股票处于上升趋势;如果收盘价低于所有均线的平均值,则认为该股票处于下降趋势;如果收盘价等于所有均线的平均值,则认为该股票处于横盘趋势。
- 对于每只股票,计算其收盘价与所有均线的乖离率。如果乖离率高于一定阈值,则认为该股票处于超买或超卖状态。
- 对于每只股票,计算其财务指标,如市盈率和市净率,并将其与历史数据进行比较。
- 将所有符合条件的股票按照其相对位置、乖离率和财务指标进行排名。
- 输出排名前N的股票作为最终结果。
以下是python代码参考:
import yfinance as yf
def get_stock_data(stock):
# 获取股票的历史收盘价数据
data = yf.download(stock, start='2020-01-01', end='2021-12-31')
# 计算所有均线
ma5 = data['Close'].rolling(window=5).mean()
ma10 = data['Close'].rolling(window=10).mean()
ma20 = data['Close'].rolling(window=20).mean()
ma50 = data['Close'].rolling(window=50).mean()
ma200 = data['Close'].rolling(window=200).mean()
# 检查可转债简称是否为空
data = data[(data['Name'] != '') & (data['Type'] != 'Bond')]
# 检查2019分红比例是否大于25%
data = data[(data['DividendPerShare'] > 0.25) & (data['Type'] != 'Bond')]
# 计算收盘价与所有均线的相对位置
data['RelativePosition'] = (data['Close'] - ma5) / ma5
data['RelativePosition'] = data['RelativePosition'].fillna(0)
data['RelativePosition'] = data['RelativePosition'].shift(1)
data['RelativePosition'] = data['RelativePosition'] * (1 - data['RelativePosition'])
# 计算收盘价与所有均线的
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


