株価データcsvフォーマット変換
追記)フォーマット変換が複雑になってるので、整理予定
株価データを準備して所定のフォルダに置いて
をクリックすると
tcltk2/scr2.tcl に
.m.m1 add command -label "HenkanDauto" -underline 0 -command {exec bash -c ./henkanDauto &}
と記述されてるので、
henkanDauto
#!/bin/bash for var in `ls ./henkan/before/D*csv` do year=`echo $var | cut -c 18-19` month=`echo $var | cut -c 20-21` day=`echo $var | cut -c 22-23` stocks=./henkan/stocks/stocks_20${year}-${month}-${day}.csv cat $var | awk -f ./awk/henkanD2new.awk > $stocks echo mv -f $var ./henkan mv -f $var ./henkan echo cp $stocks ./stocksnew cp $stocks ./stocksnew done exit
というshell script が実行され、入手データのフォーマットを変換してくれます
実際に変換を行っているのは
#!/bin/awk BEGIN { FS="," #print "henkanD2new" print "コード,銘柄名,市場,始値,高値,安値,終値,出来高,売買代金,henkanD2new" } # 1,2行目を無視 NR>2 { printf("%s-T,",$2) printf("dummy,") printf("dummy,") if ($4==0) {printf(",")} else {printf("%s,",$4)} if ($5==0) {printf(",")} else {printf("%s,",$5)} if ($6==0) {printf(",")} else {printf("%s,",$6)} if ($7==0) {printf(",")} else {printf("%s,",$7)} printf("%s,",$8) printf("%d\n",($4+$7)*$8/2) #売買代金=(始値+終値)*出来高/2で代用 } END {}
です(ちなみに日本語シフトJIS LF(UNIX)となってますね)
もし、入手するデータフォーマットが変わったら、このあたりを変更することになります
更にちなみに変換後のcsvデータは シフトJIS CRLF になってます
これで1回目の変換が実行され、前に入手していた新しいタイプのcsvフォーマットに変換されてます
で、あと2回変換が行われることになります
この辺は何とか簡潔にしたいのですが、動いているからまあいいか状態ですw