53歳限界プログラマの憂鬱

SU/CAR-ST-APplication-cellsから派生したプログラマのブログ

来訪ありがとうございます
シストレツールを自作してました
自分用の記事が多いのであまり役には立たないブログでした

f:id:sucar:20150414193802p:plain

自作システム詳細目次

株価データcsvフォーマット変換

追記)フォーマット変換が複雑になってるので、整理予定

株価データを準備して所定のフォルダに置いて

f:id:sucar:20190321105900p:plain

をクリックすると

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 が実行され、入手データのフォーマットを変換してくれます

実際に変換を行っているのは

awk/henkanD2new.awk

#!/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