我在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,然后复制先前接近其他定价字段,我认为最好保持音量相同。这将每天循环遍历文件夹,以便为所有文件添加虚拟字段,以便我可以更及时地获取信号。然后在每天结束时,我有另一个批处理文件,我已经开始清理我的数据文件夹并用真实的定价数据覆盖。
答案 0 :(得分: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
Getting Yesterdays or Tomorrows Day With Bash Shell Date Command