问财量化选股策略逻辑
首先,我们需要定义一些技术指标,用于筛选符合要求的股票。我们将使用以下指标:
- 5日均线、10日均线、20日均线、30日均线、60日均线
- 换手率(过去20天的平均换手率)
- 2021年的年线
接下来,我们将筛选出符合以下条件的股票:
- 5根均线重合的股票
- 换手率>2%且<9%
- 2021年
选股逻辑分析
这个策略的逻辑是,通过筛选出5根均线重合的股票,我们可以找到股票的支撑位和阻力位,从而更好地判断股票的趋势。同时,通过筛选出换手率在2%到9%之间的股票,我们可以找到活跃的交易者,从而更好地预测股票的走势。最后,通过筛选出2021年的股票,我们可以避免受到市场情绪的影响,从而更好地分析股票的走势。
有何风险?
这个策略的风险在于,它可能会漏掉一些重要的股票,因为它的筛选条件比较严格。此外,如果市场情绪发生较大变化,这个策略可能会失效。
如何优化?
为了优化这个策略,我们可以考虑增加更多的筛选条件,例如股票的市值、市盈率等。此外,我们还可以考虑使用更复杂的算法,例如机器学习算法,来预测股票的走势。
最终的选股逻辑
以下是最终的选股逻辑:
- 筛选出5根均线重合的股票
- 筛选出换手率在2%到9%之间的股票
- 筛选出2021年的股票
- 筛选出市值大于10亿、市盈率小于30的股票
以下是对应的python代码参考:
import talib
def get_ma_data(symbol):
ma_data = talib.MA(data[symbol], timeperiods=[5, 10, 20, 30, 60])
return ma_data
def get換手率_data(symbol):
data = yf.download(symbol, start='2021-01-01', end='2021-12-31')
data['20d_avg'] = data['Volume'].rolling(window=20).mean()
data = data[['20d_avg']]
return data
def get筛选数据(symbol):
ma_data = get_ma_data(symbol)
ma_data = ma_data[['close']]
ma_data.columns = ['ma_5', 'ma_10', 'ma_20', 'ma_30', 'ma_60']]
data = pd.merge(data, ma_data, on=symbol)
data = data[['close', 'ma_5', 'ma_10', 'ma_20', 'ma_30', 'ma_60']]
data = data[(data['ma_5'] > data['ma_10']) & (data['ma_10'] > data['ma_20']) & (data['ma_20'] > data['ma_30']) & (data['ma_30'] > data['ma_60'])]
data = data[(data['close'] > data['ma_5']) & (data['close'] < data['ma_60'])]
data = data[['close']]
data = data.rename(columns={'close': 'volume'})
data = data[(data['volume'] > 2) & (data['volume'] < 9)]
data = data[['volume']]
data = data.rename(columns={'volume': 'date'})
data = data.set_index('date')
return data
def get筛选股票(symbol_list):
data = pd.concat([get筛选数据(symbol) for symbol in symbol_list])
return data
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
如果有任何问题请添加 下方的二维码进群提问。


