问财量化选股策略逻辑
- 今日增仓占比>5%
- 外盘/内盘大于1.3
- 500日内至少2次涨停
选股逻辑分析
这个策略的逻辑是基于股票的成交量和换手率来筛选股票。首先,要求今日的增仓占比超过5%,意味着该股票最近有较多的资金流入,表明市场对该股票有较高的关注度。其次,要求外盘/内盘大于1.3,意味着该股票的成交量相对较高,表明市场对该股票的交易活跃度较高。最后,要求500日内至少2次涨停,意味着该股票在过去一段时间内表现较为强势,具有较高的上涨潜力。
有何风险?
这个策略的逻辑基于股票的成交量和换手率,但是这些数据并不一定能够准确反映股票的真实价值。此外,该策略只考虑了股票的短期表现,而忽略了长期趋势和基本面因素。因此,投资者在使用这个策略时需要谨慎,避免盲目跟风。
如何优化?
为了优化这个策略,可以考虑加入更多的基本面因素,例如公司的财务数据、盈利能力、行业地位等。此外,可以考虑加入更多的技术指标,例如价格趋势、均线等,以更准确地判断股票的走势。最后,可以考虑加入更多的量化指标,例如波动率、乖离率等,以更准确地判断股票的风险水平。
最终的选股逻辑
- 今日增仓占比>5%
- 外盘/内盘大于1.3
- 500日内至少2次涨停
- 基本面良好
- 技术指标稳定
- 量化指标风险适中
python代码参考
以下是基于问财的量化策略代码示例:
import talib
import pandas as pd
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']]
df = df.set_index('date')
return df
def get_trend_data(symbol):
# 获取股票的价格趋势数据
df = pd.read_csv('trend_data.csv')
df = df[df['symbol'] == symbol]
df = df[['date', 'close']]
df = df.set_index('date')
return df
def get_volume_data(symbol):
# 获取股票的成交量数据
df = pd.read_csv('volume_data.csv')
df = df[df['symbol'] == symbol]
df = df[['date', 'volume']]
df = df.set_index('date')
return df
def get_rolling_std(symbol, window_size):
# 获取股票的滚动标准差数据
df = get_stock_data(symbol)
df = df['close'].rolling(window_size).std()
return df
def get_rolling_mean(symbol, window_size):
# 获取股票的滚动平均数据
df = get_stock_data(symbol)
df = df['close'].rolling(window_size).mean()
return df
def get_rolling_sum(symbol, window_size):
# 获取股票的滚动和数据
df = get_stock_data(symbol)
df = df['close'].rolling(window_size).sum()
return df
def get_trend_score(symbol):
# 获取股票的价格趋势得分
df = get_trend_data(symbol)
df = df['close']
trend_score = talib.MA(df, timeperiod=10)
return trend_score
def get_volume_score(symbol):
# 获取股票的成交量得分
df = get_volume_data(symbol)
df = df['volume']
volume_score = talib.MA(df, timeperiod=30)
return volume_score
def get_risk_score(symbol):
# 获取股票的风险得分
df = get_stock_data(symbol)
df = df['close']
rsi = talib.RSI(df, timeperiod=14)
ema = talib.EMA(df, timeperiod=20)
risk_score = (100 - (rsi * ema)) / 100
return risk_score
def get_signal_score(symbol):
# 获取股票的信号得分
df = get_stock_data(symbol)
df = df['close']
trend_score = get_trend_score(symbol)
volume_score = get_volume_score(symbol)
risk_score = get_risk_score(symbol)
signal_score = trend_score * volume_score * risk_score
return signal_score
def get_score(symbol):
# 获取股票的综合得分
df = get_stock_data(symbol)
df = df['close']
trend_score = get_trend_score(symbol)
volume_score = get_volume_score(symbol)
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。


