问财量化选股策略逻辑
- 至少5根均线重合的股票
- 昨天换手率>8%
- 60开头的股票
选股逻辑分析
- 这个策略基于技术分析,寻找均线排列较为密集的股票,表明市场参与者对股票的走势较为一致,同时也关注股票的换手率,表明市场活跃度较高。
- 选择60开头的股票,是因为60日均线是中期趋势的指标,可以更好地反映股票的中长期走势。
有何风险?
- 这个策略的局限性在于它只考虑了股票的短期走势和市场活跃度,而忽略了其他因素,如公司的财务状况、行业前景等。
- 如果市场出现大幅波动,这个策略可能会失去效果。
如何优化?
- 可以考虑加入其他指标,如市盈率、市净率等,以更好地评估股票的价值。
- 可以考虑加入股票的市值和行业特征等,以更好地筛选出有潜力的股票。
最终的选股逻辑
- 选取至少5根均线重合的股票
- 选取昨天换手率>8%的股票
- 选取60开头的股票
- 加入市盈率、市净率等指标,以评估股票的价值
- 加入股票的市值和行业特征等,以筛选出有潜力的股票
python代码参考
import talib
import pandas as pd
def get_top_ma_crossovers(data, n):
# 获取股票的收盘价和时间序列
close_prices = data['close']
timestamps = data['timestamp']
# 计算不同时间周期的移动平均线
ma1 = talib.MA(close_prices, n=1)
ma2 = talib.MA(close_prices, n=2)
ma3 = talib.MA(close_prices, n=3)
ma4 = talib.MA(close_prices, n=4)
ma5 = talib.MA(close_prices, n=5)
# 获取所有交叉点
crossover_points = []
for i in range(n):
if ma1[i] > ma2[i] and ma2[i] > ma3[i] and ma3[i] > ma4[i] and ma4[i] > ma5[i]:
crossover_points.append(timestamps[i])
# 返回交叉点所在的时间序列
return pd.Series(crossover_points, name='crossover_points')
def get_top_volume_trades(data, n):
# 获取股票的成交量和时间序列
volume = data['volume']
timestamps = data['timestamp']
# 计算不同时间周期的成交量排名
volume_rank = volume.rank(pct=True, ascending=False)
volume_rank = volume_rank.astype(int)
# 获取所有排名前n的交易日
top_volume_trades = []
for i in range(n):
top_volume_trades.append(timestamps[volume_rank[i]])
# 返回交易日所在的时间序列
return pd.Series(top_volume_trades, name='top_volume_trades')
def get_top_ma_crossovers_and_volume_trades(data, n):
# 获取股票的收盘价和时间序列
close_prices = data['close']
timestamps = data['timestamp']
# 计算不同时间周期的移动平均线
ma1 = talib.MA(close_prices, n=1)
ma2 = talib.MA(close_prices, n=2)
ma3 = talib.MA(close_prices, n=3)
ma4 = talib.MA(close_prices, n=4)
ma5 = talib.MA(close_prices, n=5)
# 获取所有交叉点
crossover_points = []
for i in range(n):
if ma1[i] > ma2[i] and ma2[i] > ma3[i] and ma3[i] > ma4[i] and ma4[i] > ma5[i]:
crossover_points.append(timestamps[i])
# 获取所有排名前n的交易日
top_volume_trades = []
for i in range(n):
top_volume_trades.append(timestamps[volume_rank[i]])
# 返回交叉点和交易日所在的时间序列
return pd.DataFrame({'crossover_points': crossover_points, 'top_volume_trades': top_volume_trades})
# 示例数据
data = pd.read_csv('data.csv')
data = data[['close', 'volume']]
data = data.set_index('timestamp')
# 选取前5日和后5日的移动平均线
n1 = 5
n2 = 5
ma1 = get_top_ma_crosso
## 如何进行量化策略实盘?
请把您优化好的选股语句放入文章最下面模板的选股语句中即可。
select_sentence = '市值小于100亿' #选股语句。
模板如何使用?
点击图标右上方的复制按钮,复制到自己的账户即可使用模板进行回测。
## 如果有任何问题请添加 下方的二维码进群提问。
