2013-01-16 3 views
1

나는 csv의 주식 데이터를 가지고 있는데 나는 그 거래 전략에 대한 백 테스팅을하고 있습니다. 문제는 신호가 어제 발견되면 내 전략이 공개 시장 가격을 매입한다는 것입니다. 불행히도 내 데이터는 하루가 끝날 때만 공개됩니다. 시장이 끝날 때까지 시장에 진입하기 전까지는 데이터가 공개됩니다. 그러나 내 전략은 전날의 데이터만을 다루고 있기 때문에 해결 방법은 단순히 다음 거래일을 나타내는 데이터의 끝에 레코드를 추가하고 이익 손실로 엉망이되어서는 안되기 때문에 어제의 마감일을 가격으로 표시하는 것입니다.레코드를 CSV 파일에 추가하는 일괄 처리 스크립트

20130105 | 12.40 | 12.40 | 12.40 | 12.40 | 89690 | 
: 그래서 예를 들어 (이 형식으로, 실제 파일이 더 헤더가 없으며 쉼표로 구분되어 있지 불구하고)

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 | 

나는 다음과 같은 기록을 추가하려는이 같은 내 CSV의 외모 중 하나를 말한다

그래서 날짜를 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 

Getting Yesterdays or Tomorrows Day With Bash Shell Date Command

+0

내가 그러나 나는 그것이 ... Heres는 내가'****을 시도하고있는 무슨 박쥐에서 실행에 도착하지 못할 Cygwin에서 그것을 실행할 때이 아름답게 작동은 @ 시작 C를 에코 : \ cygwin \ bin \ bash.exe -1 #!/bin/bash cd "C :/Users/research1/Desktop/Test" ls | read csvfile do IFS = 읽기 olddate 열린 높은 낮은 닫기 볼륨 > $ csvfile done' –

관련 문제