1

我在 csv 中有一堆股票数据,我正在对交易策略进行回测。问题是如果昨天发现信号,我的策略会购买公开市场价格,不幸的是我的数据仅在一天结束时发布,这意味着我不知道我是否应该在市场收盘后进入交易,当数据发布。但是因为我的策略是仅根据昨天的数据进行交易,我认为一种解决方法是简单地在代表下一个交易日的数据的末尾附加一条记录,并且只显示昨天收盘时的当天价格,以免造成利润损失。因此,例如说我的一个 csv 看起来像这样(虽然不是这种格式,但实际文件没有标题并且用逗号分隔)

Date     |   Open  |   High  |   Low   |   Close  |  Volume  |
20121228 |  12.23  |  12.80  |  12.23  |   12.60  |  129690  |
20121231 |  13.16  |  13.20  |  12.83  |   13.10  |  141290  |
20130102 |  13.03  |  13.42  |  12.97  |   13.23  |  112390  |
20130103 |  13.23  |  13.80  |  12.23  |   12.60  |  100990  |
20130104 |  12.83  |  12.84  |  12.23  |   12.40  |   89690  |

我想附加以下记录:

20130105 |  12.40  |  12.40  |  12.40  |   12.40  |   89690  |

所以我需要增加日期 1,然后将之前的收盘价复制到其他定价字段,我认为最好保持交易量不变。这将每天循环遍历文件夹,以便为所有文件添加一个虚拟字段,以便我可以更及时地获得信号。然后在每天结束时,我有另一个批处理文件,我已经开始清理我的数据文件夹并用真实的定价数据覆盖。

4

1 回答 1

1

这应该可以,但它需要 Bash,你可以从现有的 Cygwin 安装中获得它。

ls | while read csvfile
do
  IFS=, read olddate open high low close volume < <(tac $csvfile)
  read newdate < <(date -d "$olddate + 1 day" +%Y%m%d)
  echo $newdate,$close,$close,$close,$close,$volume >> $csvfile
done

使用 Bash Shell 日期命令获取昨天或明天

于 2013-01-17T02:35:19.817 回答