问财量化选股策略逻辑
该策略基于以下三个条件进行股票筛选:
- 至少5根均线重合的股票:这表明股票的价格趋势比较稳定,短期和长期均线的走势比较一致。
- 100亿市值以内的无亏损企业:这表明该企业的经营状况较好,没有出现严重的亏损。
- 10天内涨停天数大于2:这表明该股票在短期内具有较强的市场表现力和活跃度。
选股逻辑分析
该策略的目的是寻找具有稳定价格趋势、良好经营状况和较强市场表现力的股票。这些条件可以帮助投资者筛选出具有投资价值的股票。
然而,该策略存在以下风险:
- 短期市场波动可能影响股票价格的走势,导致均线重合的情况发生变化。
- 无亏损企业的标准可能过于严格,排除了一些具有潜力但尚未盈利的公司。
- 涨停天数的指标可能过于依赖市场情绪,导致筛选出的股票波动较大。
如何优化?
为了优化该策略,可以考虑以下几点:
- 适当放宽均线重合的条件,例如将条件改为3根均线重合,以增加股票的稳定性和可操作性。
- 考虑加入更多的财务指标,例如市盈率、市净率等,以更全面地评估企业的经营状况和投资价值。
- 尝试使用不同的指标来筛选股票,例如使用MACD指标来判断股票的短期趋势,或者使用换手率指标来评估股票的活跃度。
最终的选股逻辑
以下是最终的选股逻辑:
- 股票的市值在100亿以内。
- 股票的收盘价至少有3根均线重合。
- 股票的市盈率低于同行业平均市盈率。
- 股票的换手率在10天内大于10%。
- 股票在最近10天内至少有2次涨停。
python代码参考
以下是基于上述策略的python代码:
import talib
def get_stocks():
# 获取所有A股股票的代码和名称
stocks = get_stock_codes()
# 初始化股票列表
selected_stocks = []
# 遍历股票列表
for stock in stocks:
# 获取股票的收盘价、均线等数据
close_prices = get_close_prices(stock)
ma1, ma2, ma3, ma4, ma5 = talib.MA(close_prices, timeperiods=[1, 2, 3, 4, 5])
# 判断股票是否满足条件
if ma1[-1] == ma2[-1] == ma3[-1] == ma4[-1] == ma5[-1]:
if close_prices[-1] > close_prices[-2]:
selected_stocks.append(stock)
return selected_stocks
def get_stock_codes():
# 获取所有A股股票的代码和名称
stocks = get_stock_list()
codes = []
names = []
for stock in stocks:
codes.append(stock['code'])
names.append(stock['name'])
return codes, names
def get_close_prices(stock_code):
# 获取指定股票的收盘价数据
df = get_stock_data(stock_code)
close_prices = df['close'].values
return close_prices
def get_stock_data(stock_code):
# 获取指定股票的历史数据
url = f'https://quote.eastmoney.com/{stock_code}'
response = requests.get(url)
if response.status_code == 200:
df = pd.read_csv(response.text)
else:
df = pd.DataFrame()
return df
def get_stock_list():
# 获取所有A股股票的代码和名称
url = 'http://data.eastmoney.com/hsgt/guba.html'
response = requests.get(url)
if response.status_code == 200:
df = pd.read_csv(response.text)
else:
df = pd.DataFrame()
return df[['code', 'name']]
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
如果有任何问题请添加 下方的二维码进群提问。


