顯示具有 回測資料 標籤的文章。 顯示所有文章
顯示具有 回測資料 標籤的文章。 顯示所有文章

2017年4月1日 星期六

使用BASH下載期貨交易記錄,並轉成tick檔

環境 : Linux Bash 

說明 : 到期交所下載期貨交易記錄轉成 tick


程式碼 ( Bash Code )

#!/bin/sh

# Get Tick

# V 1.2.0 2016-02-27 change url
# V 1.1.1 2015-04-24 change prg dir ( tick -> trade )
# V 1.1   2009-10-10

# 2016-02-26 change url
# url_zipDailyFile=http://www.taifex.com.tw/DailyDownload/Daily_`date +%Y_%m_%d`.zip
url_zipDailyFile=http://www.taifex.com.tw/DailyDownload/DailyDownload/Daily_`date +%Y_%m_%d`.zip
dailyStoreDir=/home/redjoe/trade/prg_bash/daily/
tickStoreDir=/home/redjoe/trade/prg_bash/tick/
log_File=/home/redjoe/trade/prg_bash/rj_crontab.log
ltd=`tac /home/redjoe/trade/last-trading-days/last-trading-days`

wget -c -a $log_File -P $dailyStoreDir $url_zipDailyFile


# Process Tick

cd $dailyStoreDir

workFile=`date +%Y_%m_%d`
workday=`date +%Y%m%d`
workMonth=`date +%Y%m`

zip_DailyFile=Daily_$workFile.zip
rpt_DailyFile=Daily_$workFile.rpt

workmonth=./tmp1

wkproduct=`ls -l $zip_DailyFile | cut -d ' ' -f 5 `

# echo $wkproduct

if [ "$wkproduct" -ne '93' ]; then

  unzip $zip_DailyFile

  # echo $rpt_DailyFile
  # echo $workFile.TX

  for td in $ltd
  do
    #echo "$td="$td , "$workday="$workday
    if [ "$td" -ge "$workday" ]; then
      #echo " $td > $workday "
      wkmonth=`echo $td`
    fi
  done

  echo $wkmonth > $workmonth

  wkproduct=`cut -c 1-6 $workmonth`
  # echo $wkproduct


  # TX 台指
  head -n 1 $rpt_DailyFile > $workFile.TX
  sed '/MTX/d' $rpt_DailyFile | sed -n '/TX/p' | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6/2 }' >> $workFile.TX
  echo "TickTime,Price,Vol" > txf$workday.csv
  sed '/MTX/d' $rpt_DailyFile | sed -n '/TX/p' | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $4,$5,$6/2 }' >> txf$workday.csv

  # MTX 小台
  head -n 1 $rpt_DailyFile > $workFile.MTX
  sed -n '/MTX/p' $rpt_DailyFile | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6/2 }' >> $workFile.MTX
  echo "TickTime,Price,Vol" > mxf$workday.csv
  sed -n '/MTX/p' $rpt_DailyFile | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $4,$5,$6/2 }' >> mxf$workday.csv

  # TE 電指期
  head -n 1 $rpt_DailyFile > $workFile.TE
  sed -n '/TE/p' $rpt_DailyFile | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6/2 }' >> $workFile.TE
  echo "TickTime,Price,Vol" > exf$workday.csv
  sed -n '/TE/p' $rpt_DailyFile | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $4,$5,$6/2 }' >> exf$workday.csv

  ## TF 金指期
  head -n 1 $rpt_DailyFile > $workFile.TF
  sed '/GTF/d' $rpt_DailyFile | sed -n '/TF/p' | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $1,$2,$3,$4,$5,$6/2 }' >> $workFile.TF
  echo "TickTime,Price,Vol" > fxf$workday.csv
  sed '/GTF/d' $rpt_DailyFile | sed -n '/TF/p' | sed -n 's/ //gp' | awk -F, 'BEGIN{OFS=","}($3=='$wkproduct'){ print $4,$5,$6/2 }' >> fxf$workday.csv

  rm $workmonth


  if [ ! -d $workMonth ]; then
    mkdir $workMonth
  fi
  mv $rpt_DailyFile $zip_DailyFile  $workMonth/

  if [ ! -d "/home/redjoe/trade/prg_bash/tick/$workMonth" ]; then
    mkdir /home/redjoe/trade/prg_bash/tick/$workMonth
  fi
  mv $workFile.TX txf$workday.csv $workFile.MTX mxf$workday.csv $workFile.TE exf$workday.csv $workFile.TF fxf$workday.csv $tickStoreDir$workMonth/


fi

2014年6月3日 星期二

台指期轉檔程式 - part5 (只用AutoHotkey)

AutoHotkey到期交所抓交易檔, 並分拆成Tick及K線 (多天)

寫過幾個 到期交所抓交易檔, 並分拆成Tick及K線 "台指期轉檔程式" - 轉檔程 Linux Bash ~ 轉檔程 part4.

這次是只用 AutoHotkey 及外部程式 unzip.exe 來處理





ahk 程式
  \twfTrade2K.exe  (主程式)
  \Tick2mk.exe
  \Tick2dk.exe
  \chk_Ver.exe   檢查 AutoHotkey 版本

設定檔
  \twfTrade2K.ini (設定檔)

  \last-trading-days (期貨最後交易日檔)

Source code 在 ahk_code 目錄下

程式



相關


2012年2月13日 星期一

台灣期貨交易所最近30天交易檔

記一下, 有時要查, 會忘了。

台灣期貨交易所最近30天交易檔位置 :
台灣期貨交易所 -> 交易資訊 -> 盤後資料 -> 期貨 -> 前30個交易日期貨每筆成交資料

下載
  1. 使用 wget 抓取 - wget http://www.taifex.com.tw/DailyDownload/Daily_yyyy_mm_dd.zip
  2. 用瀏覽器打開 - http://www.taifex.com.tw/DailyDownload/Daily_yyyy_mm_dd.zip

最後 Daily_yyyy_mm_dd.zip 中, yyyy是四位數西元年, mm為兩位數月份, dd為
位數日期
, 例西元2012年01月15日, 即為 Daily_2012_01_15.zip


-

聯絡表單

名稱

以電子郵件傳送 *

訊息 *