问财量化选股策略逻辑
- 至少5根均线重合的股票
- 大单净量排行
- 2019分红比例>25%
选股逻辑分析
- 这个策略基于技术分析和基本面分析。首先,筛选出至少5根均线重合的股票,这表明这些股票的短期和中期趋势一致,有可能出现趋势反转或加速上涨的情况。其次,选择大单净量排行榜,这表明这些股票有较强的市场人气和资金流入,可能更容易上涨。最后,选择2019分红比例>25%的股票,这表明这些公司具有较好的盈利能力,可能更有可能继续上涨。
有何风险?
- 这个策略可能无法准确预测股票的未来表现。因为技术分析和基本面分析都存在一定的误差和不确定性,因此无法保证这些股票一定会上涨。
如何优化?
- 可以考虑加入更多的技术指标和基本面指标,以更准确地预测股票的未来表现。例如,可以加入MACD指标、布林线等技术指标,以及市盈率、市净率等基本面指标。
最终的选股逻辑
- 筛选出至少5根均线重合的股票
- 选择大单净量排行榜前100名的股票
- 选择2019分红比例>25%的股票
- 加入MACD指标、布林线等技术指标
- 加入市盈率、市净率等基本面指标
python代码参考
import talib
import pandas as pd
def get_stock_data():
# 获取股票数据
df = pd.read_csv('stock_data.csv')
return df
def get_moving_average(df, n):
# 计算n日移动平均线
MA = talib.MA(df['close'], n)
df['MA'] = MA
return df
def get_bollinger_bands(df, n):
# 计算n日布林线
upper, middle, lower = talib.BBANDS(df['close'], n, m=2, upperBandType='upper', lowerBandType='lower')
df['upper'] = upper
df['middle'] = middle
df['lower'] = lower
return df
def get_volume_data(df):
# 获取成交量数据
df['volume'] = df['volume'].diff()
df['volume'] = df['volume'].fillna(0)
return df
def get_dividend_data(df):
# 获取分红数据
df['dividend'] = df['dividend'].diff()
df['dividend'] = df['dividend'].fillna(0)
return df
def get_signal(df):
# 计算买入/卖出信号
MA = df['MA']
upper = df['upper']
lower = df['lower']
df['signal'] = np.where((MA > upper) & (MA > lower), 1, 0)
df['signal'] = np.where((MA < upper) & (MA < lower), -1, df['signal'])
return df
def get_positions(df):
# 获取持仓数据
df['position'] = df['position'].diff()
df['position'] = df['position'].fillna(0)
return df
def get_return(df):
# 计算收益率
df['return'] = df['close'].pct_change()
return df
def get_analysis(df):
# 进行数据分析
df = get_stock_data()
df = get_moving_average(df, 5)
df = get_bollinger_bands(df, 5)
df = get_volume_data(df)
df = get_dividend_data(df)
df = get_signal(df)
df = get_positions(df)
df = get_return(df)
return df
def optimize_analysis(df):
# 进行优化
df = get_stock_data()
df = get_moving_average(df, 5)
df = get_bollinger_bands(df, 5)
df = get_volume_data(df)
df = get_dividend_data(df)
df = get_signal(df)
df = get_positions(df)
df = get_return(df)
df = get_analysis(df)
return df
def final_analysis(df):
# 最终分析
df = get_stock_data()
df = get_moving_average(df, 5)
df = get_bollinger_bands(df, 5)
df = get_volume_data(df)
df = get_dividend_data(df)
df = get_signal(df)
df = get_positions(df)
df = get_return(df)
df
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
