问财量化选股策略逻辑
首先,我们定义了至少5根均线重合的股票的条件。这表示该股票的短期和中期趋势是相一致的,这通常是一个健康的股票。接下来,我们筛选出收盘价在布林带上轨和中轨之间的股票。这表示该股票的价格处于一个相对较高的水平,且有上涨的趋势。最后,我们筛选出市值在100亿以内的无亏损企业。这表示该企业财务状况良好,且有较大的成长潜力。
选股逻辑分析
该策略的逻辑是基于技术分析和基本面分析相结合的方法。首先,我们通过均线的重合来筛选出股票的趋势,这可以有效地避免一些短期波动较大的股票。其次,我们通过布林带的筛选来判断股票的价格水平和趋势,这可以有效地避免一些价格过高或过低的股票。最后,我们通过市值的筛选来排除一些财务状况较差的企业,这可以有效地避免一些风险较高的股票。
有何风险?
该策略的潜在风险包括市场风险、技术分析风险和基本面分析风险。市场风险是指股票价格受到整体市场的影响,可能会导致策略的收益率无法达到预期。技术分析风险是指技术分析方法可能不准确或无法预测股票价格的变化。基本面分析风险是指基本面分析方法可能无法准确预测企业的财务状况和未来发展前景。
如何优化?
为了优化该策略,我们可以考虑以下几点:
- 增加更多的均线来筛选股票的趋势,以提高策略的准确性和稳定性。
- 尝试使用其他技术分析方法来筛选股票,例如趋势线分析和MACD指标等。
- 通过分析企业的财务报表和行业数据来筛选出更有潜力的企业,以提高策略的收益率。
最终的选股逻辑
首先,我们筛选出至少6根均线重合的股票。这表示该股票的短期和中期趋势是相一致的,这通常是一个健康的股票。接下来,我们筛选出收盘价在布林带上轨和中轨之间的股票。这表示该股票的价格处于一个相对较高的水平,且有上涨的趋势。然后,我们筛选出市值在100亿以内的无亏损企业。这表示该企业财务状况良好,且有较大的成长潜力。最后,我们筛选出ROE在15%以上的公司,这表示该企业盈利能力较强,有较大的投资价值。
python代码参考:
import talib
import pandas as pd
def boll_upper(price, n):
upper = price.rolling(n).apply(lambda x: x.quantile(0.95))
return upper
def boll_mid(price, n):
mid = price.rolling(n).apply(lambda x: x.quantile(0.5))
return mid
def select_stock(prices, n):
# 筛选出至少5根均线重合的股票
conditions = []
for i in range(1, n+1):
condition = prices['close'].rolling(i).apply(lambda x: x.count() >= i)
conditions.append(condition)
conditions = pd.concat(conditions)
conditions = conditions[conditions == 5]
if conditions.empty:
return None
else:
return conditions.index.tolist()
def select_stock_boll(prices, n):
# 筛选出收盘价在布林带上轨和中轨之间的股票
upper = boll_upper(prices['close'], n)
mid = boll_mid(prices['close'], n)
conditions = []
for i in range(1, n+1):
condition = (prices['close'] > upper[i]) & (prices['close'] < mid[i])
conditions.append(condition)
conditions = pd.concat(conditions)
conditions = conditions[conditions == True]
if conditions.empty:
return None
else:
return conditions.index.tolist()
def select_stock_roe(prices):
# 筛选出ROE在15%以上的公司
conditions = []
for i in range(1, len(prices)):
condition = prices['roe'].iloc[i] >= 15
conditions.append(condition)
conditions = pd.concat(conditions)
conditions = conditions[conditions == True]
if conditions.empty:
return None
else:
return conditions.index.tolist()
def select_stock_boll_roe(prices, n):
# 筛选出市值在100亿以内的无亏损企业
upper = boll_upper(prices['close'], n)
mid = boll_mid(prices['close'], n)
conditions = []
for i in range(1, n+1):
condition = (prices['close'] > upper[i]) & (prices['close'] < mid[i]) & (prices['roe'].iloc[i] >= 15)
conditions.append(condition)
conditions
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


