顯示具有 台指每日行情 標籤的文章。 顯示所有文章
顯示具有 台指每日行情 標籤的文章。 顯示所有文章

2013年12月13日 星期五

QuoteManager 回補期交所行情資料(C#)

 

下單系統有時候難免會出狀況,行情漏接是偶爾會碰到的問題,這時事後就要處理行情的回補。如果是有訂閱行情資料的可以線上回補即可,但沒有的呢? 可能要請別人匯出文字檔來回補,但就是有點麻煩。其實偶爾漏個一兩天,還是有簡便方法可以自己處理的,就是直接拿期交所行情來回補。

 

期交所的網站有過去三十日的行情資料提供下載,如圖。

 

download

 

我們下載之後可以得到一個ZIP檔,解壓縮後得到RPT檔,其實就是文字檔,裡面包含當日所有期貨商品的TICK資料,不過我們僅需要台指期的資料而已,這時就要作些小小處理,先看RPT檔的格式。

 

rpt

 

格式為日期,商品,月份,時間,價位,成交量,還有跨月價差用的欄位。而我們想要轉資料進的QuoteManager,要求的TICK檔格式為日期,時間,價位,成交量,如下圖。

 

tick format

 

所以可以利用一個小程式,將格式轉換輸出文字檔就OK了,如下圖,一個來源的RPT和一個輸出的TXT,兩個檔案的路徑和一個執行按鈕。

 

form

 

程式很短,我們只需要兩個輸出入串流,

FileInfo source = new FileInfo(textBox1.Text);
StreamReader sr = source.OpenText();

FileInfo destination = new FileInfo(textBox2.Text);
StreamWriter sw = destination.CreateText();

 

設定來源及目的的檔案路徑,然後處理來源的期交所資料,

其中要處理的部分有:

1. 只要台指期近月

2.成交量要除以2

3.處理成QM的TICK格式(有符號/、: 這個)

 

關於期交所資料每日下載的排程設定可以參考前文,取得期交所每日行情資料 。

程式碼如下,歡迎參考指教。

 
namespace RPTtoQM
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{

FileInfo source = new FileInfo(textBox1.Text);
StreamReader sr = source.OpenText();

FileInfo destination = new FileInfo(textBox2.Text);
StreamWriter sw = destination.CreateText();

String tmps = "";
String month = "";
int qty=0;

while( sr.Peek()>=0 )
{
tmps = sr.ReadLine();

if ( tmps.Length>=10 && tmps.Substring(9, 2) == "TX")
{
if (month == "") { month = tmps.Substring(17, 6); }

if (tmps.Substring(17, 6) == month && tmps.Substring(23, 4)==" ")
{
if (tmps.Length == 50) { qty = Int32.Parse(tmps.Substring(41, 3)) /2 ; }
else if (tmps.Length == 49) { qty = Int32.Parse(tmps.Substring(41, 2)) / 2; }
else if (tmps.Length == 48) { qty = Int32.Parse(tmps.Substring(41, 1)) / 2; }

sw.Write(tmps.Substring(0, 4) + @"/" + tmps.Substring(4, 2) + @"/" + tmps.Substring(6, 2) +","
+ tmps.Substring(29, 2) + @":" + tmps.Substring(31, 2) + @":" + tmps.Substring(33, 2) + ","
+ tmps.Substring(36, 4) + "," + qty.ToString() +
"\r\n");
}
}

}

sw.Flush();
sw.Close();
sr.Close();

}
}
}

 

 

 

2013年5月1日 星期三

取得期交所每日行情資料

 

建置交易系統的第一步就是要處理歷史報價了,有幾個重點需要注意

 

歷史報價資料是策略的基礎,不能馬虎,簡單道理就是garbage in garbage out,拿不正確的資料來作回溯測試,可想而知開發出來的策略也不正確。google 搜尋 “台指期歷史資料”,可以找到蠻多相關資料,但是資料的正確性如何,可能有點問題。

 

所以若是在網路上取得的歷史資料,需要進行確認後才能開始使用。另一種可信的方法,就是完全由期交所提供的行情來製作一份歷史資料。

 

從期交所的資料轉檔使用,在實作上的問題不是資料正確性,只要寫好轉檔,輸出TXT或XPO來用,它就是正確的。問題是即時的報價和期交所盤後公布的行情資料一定是不同的,關於這點,只能儘量使我們自己的報價來源更快速穩定,更去貼近實際行情。不過基本工作仍是一樣,我們需要一份正確的歷史資料作為回溯測試之用。

 

行情歷史資料有兩個部份要處理,一個是從以前到今天,一個是今天的行情資料要怎麼加進去歷史資料裡。

 

期交所每日下午約三點半之後會提供成交資料檔,例如圖中,點一下”下載”,就可以取得一個例如Daily_2013_04_22.zip,這個壓縮檔解開後是一個rpt檔,裡面就是我們要的行情資料。