昨天五月一日(星期五)沒交易, 在自家的主機(Debian)上, 用shell script 配合crontab寫了每天(星期一至星期五)16:30左右, 自動到期交所抓當天成交資料, 並分拆成台指, 小台指, 金指期, 電指期的tick檔, 下星期開始跑, 先暫時這樣。
這個程式只取當期(近月)的tick, 若是4月29日當天,會做以下動作
- 到期交所抓當天成交資料(Daily_2009_04_29.zip)
- 解Daily_2009_04_29.zip成Daily_2009_04_29.rpt
- 參考最後結算日檔(last-trading-days)取出近月tick, 並分成台指, 小台指, 金指期, 電指期,及產生2009_04_29.TX , 2009_04_29.MTX , 2009_04_29.TF , 2009_04_29.TE 四個檔
待處理
- 還沒有統計成1分鐘K,
- 及改成perl寫的程式
- 合併到原有的K線中
用 wget 下載的 script - wget-future-tick
#!/bin/sh
today_tickfile=http://www.taifex.com.tw/DailyDownload/Daily_`date +%Y_%m_%d`.zip
wget -c -a /daily/future_tick.log -P /daily/ $today_tickfile
分拆成台指,小台指,金指期,電指期的 script - proc-tick
#!/bin/sh
todayfile=`date +%Y_%m_%d` # -> 2009_04_29
today=`date +%Y%m%d` # -> 20090429
zipfile=Daily_$todayfile.zip # -> Daily_2009_04_29.zip
workmonth=./tmp1 # 暫存用
# 取得下載檔 size
filesize=`ls -l Daily_$todayfile.zip | cut -d ' ' -f 5 `
if [ "$filesize" -ne '93' ]; then # 超過 93 才有資料
unzip $zipfile # 解zip
# echo Daily_$todayfile.rpt
# echo $todayfile.TX
ltd=`tac last-trading-days` # 最後結算日檔
for td in $ltd
do
#echo "$td="$td , "$today="$today
if [ "$td" -ge "$today" ]; then
#echo " $td > $today "
wkmonth=`echo $td` # 取得最近的結算日 -> wkmonth
fi
done
echo $wkmonth > $workmonth
wkproduct=`cut -c 1-6 $workmonth` # 當期交易商品月份
# echo $wkproduct
# 用 sed 及 awk 分拆檔案
# TX 台指
head -n 1 Daily_$todayfile.rpt > $todayfile.TX # 留表頭第一行
sed '/MTX/d' Daily_$todayfile.rpt | sed -n '/TX/p' | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6 }' >> $todayfile.TX
# MTX 小台
head -n 1 Daily_$todayfile.rpt > $todayfile.MTX
sed -n '/MTX/p' Daily_$todayfile.rpt | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6 }' >> $todayfile.MTX
# TE 電指期
head -n 1 Daily_$todayfile.rpt > $todayfile.TE
sed -n '/TE/p' Daily_$todayfile.rpt | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6 }' >> $todayfile.TE
## TF 金指期
head -n 1 Daily_$todayfile.rpt > $todayfile.TF
sed '/GTF/d' Daily_$todayfile.rpt | sed -n '/TF/p' | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6 }' >> $todayfile.TF
rm $workmonth # 刪除暫存檔
fi
crontab中的內容
# 分 時 日 月 星期 要執行的指令
34 16 * * 1-5 redjoetseng cd /daily/ && run-parts /etc/cron.tick/01get/wget-future-tick #每天抓future成交記錄
44 16 * * 1-5 redjoetseng cd /daily/ && run-parts /etc/cron.tick/02proc/proc-tick #依商品分拆future成交記錄
註:
- windows下也有crontab 排程(自動執行)程式 - CRONw
- 修改
金指期
(TF)部份,有GTF要除掉。(2009-05-06)
台灣期交所下載網頁
沒有留言:
張貼留言