1

取引戦略をバックテストしているcsvの株式データがたくさんあります。問題は、私の戦略では、昨日シグナルが見つかった場合に公開市場価格を購入することです。残念ながら、私のデータは 1 日の終わりにのみ公開されます。データが公開されています。しかし、私の戦略は昨日のデータのみに基づいて取引されているため、回避策は次の取引日を表すデータの末尾にレコードを追加し、利益の損失を台無しにしないように、昨日の終わりまでの価格を表示することだと思います。たとえば、私のcsvの1つがこのように見えるとします(この形式ではありませんが、実際のファイルにはヘッダーがなく、カンマで区切られています)

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

これは機能するはずですが、標準の Cygwin インストールから取得できる Bash が必要になります。

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シェルの日付コマンドで昨日または明日の日を取得する

于 2013-01-17T02:35:19.817 に答える