问财量化选股策略逻辑
- 至少5根均线重合的股票
- 开盘价在十日线左右
- 100亿市值以内的无亏损企业
选股逻辑分析
- 5根均线重合代表短期和中期趋势较为一致,有利于股票的稳定性和上涨潜力。
- 开盘价在十日线左右,说明股票价格较为稳定,且具有一定的支撑力。
- 100亿市值以内的无亏损企业,说明公司的经营状况较好,具有较好的投资价值。
有何风险?
- 仅考虑了短期和中期趋势,忽略了长期趋势的影响。
- 仅考虑了股票价格的稳定性和支撑力,忽略了其他因素的影响,如行业景气度、公司财务状况等。
- 仅考虑了市值大小,忽略了其他因素的影响,如公司盈利能力、市场份额等。
如何优化?
- 将长期趋势也纳入考虑,可以使用趋势指标如MACD等来判断。
- 将其他因素也纳入考虑,可以使用财务指标如ROE、PB等来判断。
- 将市值大小与盈利能力、市场份额等其他因素进行综合考虑,可以使用多因素量化策略来判断。
最终的选股逻辑
- 使用5日、10日、20日、30日、60日均线,判断股票短期和中期趋势的重合度。
- 使用开盘价与十日线的差值,判断股票价格的稳定性和支撑力。
- 使用公司盈利能力、市场份额等其他因素,综合判断股票的投资价值。
- 使用市值大小作为筛选条件,选择100亿市值以内的股票。
python代码参考
- 以下是使用pandas和numpy库实现的代码示例:
import pandas as pd
import numpy as np
def get_ma_data(stock_data, n):
ma_data = pd.DataFrame(index=stock_data.index)
ma_data['ma_5'] = stock_data['close'].rolling(n).mean()
ma_data['ma_10'] = stock_data['close'].rolling(n).mean()
ma_data['ma_20'] = stock_data['close'].rolling(n).mean()
ma_data['ma_30'] = stock_data['close'].rolling(n).mean()
ma_data['ma_60'] = stock_data['close'].rolling(n).mean()
return ma_data
def get_price_data(stock_data, n):
price_data = pd.DataFrame(index=stock_data.index)
price_data['price'] = stock_data['close']
price_data['price_diff'] = price_data['price'] - price_data['close'].rolling(n).mean()
return price_data
def get_factor_data(stock_data, factor_list):
factor_data = pd.DataFrame(index=stock_data.index)
for factor in factor_list:
factor_data[factor] = stock_data[factor]
return factor_data
def get筛选条件(data, n):
ma_data = get_ma_data(data, n)
price_data = get_price_data(data, n)
factor_data = get_factor_data(data, ['ROE', 'PB'])
return ma_data, price_data, factor_data
def get筛选结果(data, ma_data, price_data, factor_data):
ma_data['筛选'] = ma_data.apply(lambda x: 1 if x['ma_5'] > x['ma_10'] and x['ma_10'] > x['ma_20'] and x['ma_20'] > x['ma_30'] and x['ma_30'] > x['ma_60'] else 0, axis=1)
price_data['筛选'] = price_data.apply(lambda x: 1 if x['price_diff'] > 0 else 0, axis=1)
factor_data['筛选'] = factor_data.apply(lambda x: 1 if x['ROE'] > 10 and x['PB'] < 2 else 0, axis=1)
return ma_data, price_data, factor_data
def get_screened_data(data, ma_data, price_data, factor_data):
ma_data筛选 = ma_data[ma_data['筛选'] == 1]
price_data筛选 = price_data[price_data['筛选'] == 1]
factor_data筛选 = factor_data[factor_data['筛选'] == 1]
return ma_data筛选, price_data筛选, factor_data筛选
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
如果有任何问题请添加 下方的二维码进群提问。


