问财量化选股策略逻辑
- 至少5根均线重合的股票
- KDJ刚形成金叉
- 500日内至少2次涨停
选股逻辑分析
- 这个策略的逻辑是寻找均线重合的股票,这表明这些股票在短期内有较强的支撑和阻力,可能会出现较为明显的趋势行情。
- 同时,KDJ指标刚刚形成金叉,表示短期市场情绪开始转暖,股票可能会出现上涨的趋势。
- 最后,要求股票在500日内至少2次涨停,这表明该股票具有较强的爆发力和市场关注度。
有何风险?
- 这个策略的缺点是只考虑了短期趋势和市场情绪,没有考虑长期的基本面因素,因此可能会忽略一些真正有潜力的股票。
- 另外,要求股票在500日内至少2次涨停,可能会导致选出的股票过于激进,风险较高。
如何优化?
- 可以考虑加入更多的基本面因素,例如市盈率、市净率等,以更全面地评估股票的价值和潜力。
- 可以调整KDJ金叉的条件,例如将金叉的条件放宽或收紧,以适应不同的市场环境。
最终的选股逻辑
- 股票的均线至少有5根重合,且均线排列有序,表明市场趋势较为明显。
- KDJ指标的金叉条件为:K值在20以下,D值在20以下,J值在20以上。
- 股票在500日内至少出现2次涨停,表明该股票具有较强的爆发力和市场关注度。
python代码参考
import talib
import pandas as pd
def get_kdj_data(df):
# 获取KDJ指标数据
k, d, j = talib.KDJ(df['close'], timeperiod=9)
return pd.DataFrame({'k': k, 'd': d, 'j': j})
def get均线_data(df):
# 获取均线数据
ma5, ma10, ma20, ma30, ma60 = talib.MA(df['close'], timeperiods=[5, 10, 20, 30, 60])
return pd.DataFrame({'ma5': ma5, 'ma10': ma10, 'ma20': ma20, 'ma30': ma30, 'ma60': ma60})
def get_stocks_with_kdj_and_5_ma(df):
# 获取KDJ和均线重合的股票
stocks = []
for index, row in df.iterrows():
if row['k'] > row['ma5'] and row['d'] > row['ma5'] and row['j'] > row['ma5']:
stocks.append(index)
return df.iloc[stocks]
def get_stocks_with_kdj_and_500_stocks(df):
# 获取KDJ和均线重合的股票,并要求股票在500日内至少出现2次涨停
stocks = []
for index, row in df.iterrows():
if row['k'] > row['ma5'] and row['d'] > row['ma5'] and row['j'] > row['ma5'] and row['close'] > row['close'].shift(1) * 1.2:
stocks.append(index)
return df.iloc[stocks]
# 示例数据
df = pd.DataFrame({
'date': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05'],
'close': [10, 12, 15, 18, 20]
})
# 使用get_kdj_data函数获取KDJ指标数据
kjdf = get_kdj_data(df)
# 使用get均线_data函数获取均线数据
ma5df = get_ma_data(df)
# 使用get_stocks_with_kdj_and_5_ma函数获取KDJ和均线重合的股票
stocks = get_stocks_with_kdj_and_5_ma(df)
# 使用get_stocks_with_kdj_and_500_stocks函数获取KDJ和均线重合的股票,并要求股票在500日内至少出现2次涨停
stocks = get_stocks_with_kdj_and_500_stocks(df)
如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
如果有任何问题请添加 下方的二维码进群提问。


