问财量化选股策略逻辑
- 今日增仓占比>5%
- 三个技术指标同时金叉
- 集中度70<20%
选股逻辑分析
- 今日增仓占比超过5%,说明当前市场资金对该股票较为青睐,有可能出现上涨趋势。
- 三个技术指标同时金叉,说明该股票的短期趋势和技术指标都较为良好,有利于上涨。
- 集中度70<20%,说明该股票的筹码较为分散,有利于上涨。
有何风险?
- 该策略的逻辑是基于市场资金和股票的技术指标,如果市场资金不再青睐该股票或者股票的技术指标出现恶化,该策略可能会失效。
- 该策略需要实时获取市场数据和股票数据,如果数据出现延迟或者不准确,可能会导致策略失效。
如何优化?
- 可以考虑加入更多技术指标和市场因素,以提高策略的准确性和稳定性。
- 可以考虑加入止损机制,以避免策略在出现失效时造成更大的损失。
最终的选股逻辑
- 今日增仓占比>5%
- DIF线上穿DEA线,同时MACD柱状图翻红
- KDJ金叉,且J线位于20以下
- 集中度70<20%
python代码参考
import talib
import numpy as np
def get_kdj(rsi):
# 计算RSI的快线和慢线
fast = talib.RSI(rsi, timeperiod=12)
slow = talib.RSI(rsi, timeperiod=26)
# 计算KDJ的三个值
k = talib.STOCHF(rsi, timeperiod=9, fastperiod=3, slowperiod=3)[0]
d = talib.STOCHF(rsi, timeperiod=9, fastperiod=3, slowperiod=3)[1]
j = talib.STOCHF(rsi, timeperiod=9, fastperiod=3, slowperiod=3)[2]
# 计算KDJ的交叉点
if k > d:
kdn = 'up'
else:
kdn = 'down'
if k > j:
jdn = 'up'
else:
jdn = 'down'
return kdn, jdn
def get_bollinger_bands(rsi):
# 计算Bollinger Bands的上下轨
upper = talib.BBANDS(rsi, timeperiod=20, std=2)
lower = talib.BBANDS(rsi, timeperiod=20, std=2)
# 计算Bollinger Bands的中轨
middle = talib.MA(rsi, timeperiod=20)
return upper, lower, middle
def get_trend_strength(rsi):
# 计算趋势强度
trend_strength = talib.MA(rsi, timeperiod=14)
return trend_strength
def get_important_points(rsi):
# 计算重要点
important_points = talib.MA(rsi, timeperiod=14)
return important_points
def get_position(rsi, upper, lower, middle, trend_strength, important_points):
# 计算股票的买入/卖出位置
if rsi > middle and trend_strength > important_points:
position = 'long'
elif rsi < middle and trend_strength < important_points:
position = 'short'
else:
position = 'hold'
return position
def get_kdj_kdn_jdn_position(rsi, upper, lower, middle, trend_strength, important_points):
# 计算KDJ的买入/卖出位置
kdn, jdn = get_kdj(rsi)
if kdn == 'up' and jdn == 'down':
position = 'long'
elif kdn == 'down' and jdn == 'up':
position = 'short'
else:
position = 'hold'
return position
def get_bollinger_bands_position(rsi, upper, lower, middle, trend_strength, important_points):
# 计算Bollinger Bands的买入/卖出位置
upper, lower, middle = get_bollinger_bands(rsi)
if upper > middle and trend_strength > important_points:
position = 'long'
elif lower < middle and trend_strength < important_points:
position = 'short'
else:
position = 'hold'
return position
def get_trend_strength_position(rsi, upper
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
