跳到主要内容

越来越多的需求

commit事件 #

  • 修改了信号提醒内容,添加了字段:信号最近出现次数:
# 找到最后一次"S"出现的位置
last_s_index = len(singles) - 1 - singles[::-1].tolist().index("S")
# 计算最后一次"S"出现后,"B"出现的次数
b_count_after_last_s = singles[last_s_index:].tolist().count("B")

效果如下:

20231220

代码 买/卖 前日收盘价 出现次数
000596 B 224.13 3
603688 B 72.90 5
  • 修改了股票池的更新周期,由两月一次,改为两周一次。

    由于加快了股票池的更新周期,因此有些股票会在交易周期内被筛选进来,所以要提示股票出现的次数。如果某支股票在刚出现时,它的次数大于2,那么需要人为判断一下当前的价格是否合适买入。

  • 修改backtest跑批规则,改为全量跑批。

    之前在SQL中判断是否更新,现在改为在python判断,更加灵活。

backtest #

今天的市场依然下行,估计明天还要买入一些股票。下午的时候突然好奇23年的市场会是什么样子,所以新开了个账户,回测了一下23年的市场,结果如下:

收益率比较可观,但问题是回测期间股票池没有变过,与实际情况有些出入。

只看账单的收益率并不能说明太多问题,还有很多指标需要计算:

  • 最大回撤Max. Drawdown
  • 夏普比率Sharpe Ratio
  • 年化收益率Return (Ann.)
  • 胜率Win Rate
  • 盈亏比Profit Factor等。

跑账单的时间有点长,因为每次账单要从第一个信号开始计算,需要优化。

股市操作 #

依然买入了000596603688

开发计划 #

  • 计算股票池的时候,添加一个参数:record_date,其用来截取历史数据;
  • 按照新的股票池重新backtest
  • 计算账单的其他指标;
  • 优化账单计算速度,计算bill的时候跑增量,而非全量;