用于将记录追加到csv文件的批处理脚本

时间:2013-01-16 20:30:50

标签: csv windows-7 batch-file algorithmic-trading

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

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