问财量化选股策略逻辑
在问财量化选股策略中,我们采用以下三个逻辑来筛选股票:
- 今日增仓占比>5%
- 三个技术指标同时金叉
- 15分钟周期MACD绿柱变短
选股逻辑分析
首先,我们筛选出今日增仓比例超过5%的股票,这表明这些股票受到了机构投资者的青睐,可能具有较好的投资价值。接下来,我们筛选出三个技术指标同时金叉的股票,这表明这些股票的短期趋势向上,可能具有较好的上涨潜力。最后,我们筛选出15分钟周期MACD绿柱变短的股票,这表明这些股票的短期趋势正在转向多头,可能具有较好的买入机会。
有何风险?
尽管上述三个逻辑可以帮助我们筛选出一些具有投资价值的股票,但是仍然存在一定的风险。首先,机构投资者的增仓行为并不一定代表股票的价值,因为机构投资者可能会受到市场情绪和其他因素的影响。其次,技术指标的金叉并不一定代表股票的上涨趋势,因为技术指标可能会出现假信号。最后,15分钟周期MACD绿柱变短并不一定代表股票的买入机会,因为MACD指标的信号可能会受到市场波动的影响。
如何优化?
为了优化上述三个逻辑,我们可以考虑以下几点:
- 增加更多的技术指标,例如布林线、RSI等,以提高筛选股票的准确性。
- 筛选出更多的时间周期,例如日线周期、周线周期等,以更好地捕捉市场的趋势。
- 考虑加入其他因素,例如公司财务数据、行业数据等,以提高筛选股票的全面性。
最终的选股逻辑
最终的选股逻辑如下:
- 筛选出今日增仓比例超过5%的股票。
- 筛选出三个技术指标(布林线、RSI、MACD)同时金叉的股票。
- 筛选出更多的时间周期(日线周期、周线周期等)的股票。
- 筛选出更多其他因素(公司财务数据、行业数据等)的股票。
python代码参考
以下是使用pandas和ta-Lib库实现上述选股逻辑的python代码:
import pandas as pd
import talib
def get_stock_data(symbol):
# 获取股票数据
df = pd.read_csv('stock_data.csv')
df = df[df['symbol'] == symbol]
df = df[['date', 'open', 'high', 'low', 'close', 'volume']]
return df
def get_rolling_window(df, window_size):
# 获取滚动窗口数据
df = df.rolling(window=window_size).mean()
return df
def get_trend_scores(df):
# 获取趋势得分
scores = []
for i in range(len(df)):
scores.append(get_trend_score(df.iloc[i]))
return scores
def get_trend_score(date, open_price, high_price, low_price, close_price):
# 获取趋势得分
if close_price > open_price:
score = 1
else:
score = -1
return score
def get_rolling_trend_scores(df):
# 获取滚动趋势得分
scores = []
for i in range(len(df)):
scores.append(get_rolling_trend_score(df.iloc[i]))
return scores
def get_rolling_trend_score(date, open_price, high_price, low_price, close_price):
# 获取滚动趋势得分
if close_price > open_price:
score = 1
else:
score = -1
return score
def get_rolling_momentum_scores(df):
# 获取滚动动能得分
scores = []
for i in range(len(df)):
scores.append(get_rolling_momentum_score(df.iloc[i]))
return scores
def get_rolling_momentum_score(date, open_price, high_price, low_price, close_price):
# 获取滚动动能得分
ema = talib.EMA(close_price, timeperiod=10)
momentum = (close_price - ema) / ema
if momentum > 0:
score = 1
else:
score = -1
return score
def get_signal_scores(df):
# 获取信号得分
scores = []
for i in range(len(df)):
scores.append(get_signal_score(df.iloc[i]))
return scores
def get_signal_score(date, open_price, high_price, low_price, close_price):
# 获取信号得分
if close_price > open_price:
score = 1
else:
score = -1
return score
def get_rolling_signal_scores(df):
# 获取滚动信号得分
scores = []
for i in
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


