问财量化选股策略逻辑
选股逻辑
- 至少5根均线重合的股票
- 昨天龙虎榜
- macd零轴以上
选股逻辑分析
- 第一条均线重合的股票代表了多条均线的支撑,说明股票价格比较稳定,不容易出现大幅下跌的情况。
- 第二条龙虎榜代表了机构投资者和游资的关注程度,如果昨天龙虎榜上有机构投资者或游资买入,说明股票可能有上涨的趋势。
- 第三条macd零轴以上代表了股票价格趋势向上,如果macd零轴以上,说明股票价格有可能继续上涨。
有何风险?
- 如果股票价格已经处于高位,三条均线重合的股票可能会出现回调的风险。
- 龙虎榜上的机构投资者或游资买入并不一定代表股票会涨,因为机构投资者和游资的操作往往是短期的,而且买入的量也不一定很大。
- macd零轴以上并不一定代表股票会涨,因为macd零轴以上只是说明股票价格趋势向上,但并不一定代表股票价格会继续上涨。
如何优化?
- 可以考虑加入更多均线的条件,例如10日、20日、60日均线等,这样可以更好地判断股票的价格趋势。
- 可以考虑加入成交量的条件,例如成交量需要大于一定数量,这样可以更好地判断股票的活跃程度。
- 可以考虑加入其他技术指标的条件,例如布林线、RSI等,这样可以更好地判断股票的价格波动情况。
最终的选股逻辑
- 股票价格稳定,至少5根均线重合
- 龙虎榜上有机构投资者或游资买入
- macd零轴以上
- 成交量大于一定数量
- 布林线在中轨以上,RSI在50以上
python代码参考
import talib
import pandas as pd
def get_stock_data(stock_code):
# 获取股票的历史数据
df = pd.read_csv(f'https://query1.finance.sina.com.cn/gundata/stock/quote/{stock_code}.csv')
df = df[['close']]
df = df.resample('D').last()
df = df['close'].diff()
df = df.dropna()
df = df[df > 0]
return df
def get_moving_average(df, n):
# 计算n日的移动平均线
ma = talib.MA(df, n)
return ma
def get_volume(df):
# 获取股票的历史成交量数据
df = df[['volume']]
df = df.resample('D').sum()
df = df['volume'].diff()
df = df.dropna()
return df
def get_stock_bollinger(df):
# 计算股票的布林线
lower, middle, upper = talib.BBANDS(df['close'], timeperiod=20)
return lower, middle, upper
def get_stock_rsi(df):
# 计算股票的RSI指标
rsi = talib.RSI(df['close'], timeperiod=14)
return rsi
def get_stock_data_with_macd(df):
# 获取股票的历史数据,加入macd指标
df['macd'] = talib.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
df['macd_signal'] = df['macd'].signal
df['macd_hist'] = df['macd'].hist
return df
def get_stock_data_with_all(df):
# 获取股票的历史数据,加入所有指标
df['ma5'] = get_moving_average(df, 5)
df['ma10'] = get_moving_average(df, 10)
df['ma20'] = get_moving_average(df, 20)
df['ma60'] = get_moving_average(df, 60)
df['volume'] = get_volume(df)
df['lower'], df['middle'], df['upper'] = get_stock_bollinger(df)
df['rsi'] = get_stock_rsi(df)
df['macd'] = get_stock_data_with_macd(df)
return df
def get_stock_data_with_all_and_filter(df):
# 获取股票的历史数据,加入所有指标,并过滤掉成交量小于10000的股票
df = get_stock_data_with_all(df)
df = df[df['volume'] > 10000]
return df
def get_stock_data_with_all_and_filter_and_sort(df):
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
