顯示具有 QuoteManager 標籤的文章。 顯示所有文章
顯示具有 QuoteManager 標籤的文章。 顯示所有文章

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年10月30日 星期三

Multicharts報價串接DDE

 

本篇先不論有些軟體可以直接串接DDE字串的方法,因為通常可能會用多來源做備援系統或判斷報價速度,透過交易量者較大的在EXCEL上進行判斷,之後取出該格報價作為來源,因此學會EXCEL的串接DDE是特別重要

 

首先準備好報價來源,放置在EXCEL上, J 故意建置兩個分頁,如下圖左下角所示,以便於後續示範如何建立有多分頁的報價字串,注意此處要先存成英文檔名且格式為2007以前使用的.xls(本次示範mc軟體較舊未能試驗是否新版已經支援.xlsx)

 

建置DDE報價1

 

 

下圖為第二分頁,讀者未必要分兩個分頁,需要使用需求與管理是否方便,準備好後我們進行QM的設定。

 

建置DDE報價2

 

打開QM,如下圖選擇Data Sources

 

建置DDE報價3

 

往下拉可以找到universal DDE的選項,點選後按右側,clone(複製),本處讀者當然可以直接使用設定去變更這個未定義的報價來源,但我們通常要製作不只一個報價來源,因此透過複製的方式,可以不斷地建置多重的報價來源

 

建置DDE報價4

 

隨讀者喜好建立名稱,注意,第二欄位只能key 3個字母。

 

建置DDE報價5

 

按下ok後就出現在可用來源裡了,點選他,再按右邊的settings,進入字串設定

 

建置DDE報價6

 

首先示範,有分頁且指定欄位的格式,主要的邏輯為先key入=EXCEL|’[檔名.xls]分頁名’!格子位置完成如下圖。本範例讀者可從本篇最上方第二張圖看到,R2表示第二行,C6表示第六欄,就可以找到成交價的格子,同理R2C8就是累積成交量(某些報價軟體只提供累積成交量,若收取本格則在程式碼中,需要透過減去前一值的方式算出當根K棒單量)。之後再左下角按TEST,若是盤中接報價,即可發現有報價再跳動,若是盤後建置,則可透過在EXCEL上任意地方KEY數字,再還原的做法,讓EXCEL以為有新資訊在跳動

 

建置DDE報價7

 

接著示範不預設商品代碼的作法,首先重新建立另一個資料源。

 

建置DDE報價8

 

進入設定後,KEY法J在此處順便示範不預設分頁的做法,假定讀者並沒有建置分頁可以採用下圖的KEY法,因此主要邏輯就改為=EXCEL|檔名.xls!*, * 的部分,就是本次最大的差異,透過*的方式不先預設報價所在的格子,即可達到同資料源,接許多商品的優勢。

 

字串key好後,一樣在左下角按test,此時會多跳出一個視窗,要key入你要測的報價代碼(EXCEL的格子),如下圖。

 

建置DDE報價9

 

確認後就可以看到如下圖所示,一樣透過在EXCEL上更改報價的方式,讓EXCEL上的報價感覺有跳動,就可以測試有沒有成功。

 

建置DDE報價10

 

完成後,開始建置自訂的商品代碼,可參考J之前的文章 Multicharts建立自訂商品 ,下列步驟就跳快一點。

 

2013年10月20日 星期日

Multicharts建立自訂商品

 

在MC中建立自訂商品,讓我們可以透過外部資訊來研究對走勢的預測性,常見的外部資訊就是籌碼面資料,因此本篇將以台指期OI(未平倉量)作一個示範,讓讀者學習如何自行建立所需的商品於MC中。

 

一開始要先準備所需的外部商品資料檔,常見的可能是TXT檔或是CSV檔,因TXT部分可以先匯入EXCEL中並另存成CSV檔(詳細資料可於 匯入或匯出文字檔案 這個說明網頁中了解細部作法),而本篇將以CSV檔來作介紹,製作成MC可以讀取的格式。

 

首先不論讀者手上擁有的資料為何,至少須將符合如下圖的格式,依照日期、時間(日資料可省略)、開盤價、最高價、最低價、收盤價、交易量(若無可省略)排列,可發現因為OI一天僅有一個數值,故須複製貼上至符合四個價位皆有數值的狀態,存成CSV後關閉。( L 補充: 一般是常用有開高低收的資料,但TICK檔是可以僅有時間和資料兩欄位而已,那同樣也可以只用兩個欄位匯入)

 

MultiCharts中建立自訂商品1

 

接著開啟QutoeManager,在空白處按右鍵,開始建立自訂的商品代碼與相關設定,選法如下圖所示,最後選擇Manually(手動)。

 

MultiCharts中建立自訂商品2

 

跳出如下室窗,key入想取的名稱,並注意Data source如果是盤後資料只做研究用,就選擇ASCII,如果是有接受DDE盤中或盤後自動接受資訊則需要選擇DDE的來源,日後將再詳細介紹DDE建立方法。

 

MultiCharts中建立自訂商品3

 

完成後進入第一個分頁,這部分沒什麼需要動的,只要在描述上面KEY入敘述即可(本例:台指期OI),不KEY也沒差。

 

MultiCharts中建立自訂商品4

 

點選第二個分頁,使用客製化並設定如下圖所示,此處注意如果是籌碼面資料同常可以模仿設定如下,但若是其他商品價格,則須考量其價格跳動的資訊,這部分資訊通常可參考期貨商提供的商品規格網頁。

 

MultiCharts中建立自訂商品5

 

第三個分頁, J 通常習慣在交易區間的選項中選擇使用者自訂,主要是可以更符合交易上的需求,在圖型顯是上也比較好上下對齊,方便研究與觀察,因此即便是日資料, J 還是會將其設定成分線的格式,畢竟日資料也是可以修改成分線資料來匯入,為了保留日後使用彈性,都一律建置成方便DATA1使用的時間

 

MultiCharts中建立自訂商品6

 

完成後就可以在QM中找到這個自訂商品代碼,如下圖所示,在其上按右鍵,選擇匯入資料。

 

MultiCharts中建立自訂商品7

 

此時在跳出視窗中,先選擇要匯入的CSV檔,再調整匯入的周期(本例:DAY)、成交價與當地時間,並檢查QM是否有判讀到正確的欄位(日期、開、高、低、收)若無顯示,則讀者可自行調整成下列格式,一樣可以繼續匯入。

 

MultiCharts中建立自訂商品8

 

按下完成後顯示正在匯入,正常是很快的,如果有過久沒再動,就可能有錯誤,須重新檢查資料是否有誤,另外若不是第一次匯入資料,且已有部分資料與匯入資料重疊時,將跳出室窗詢問是否替代,讀者可自行選擇。

 

MultiCharts中建立自訂商品9

 

完成資料匯入後,打開MC主程式,開啟DATA1的圖(本例:TXF),此時要將想研究的外部資料放在同一張圖上,需要在圖上按下右鍵,選擇新增商品。

 

MultiCharts中建立自訂商品10

 

跳出視窗的第一個分頁中,去選擇商品來源(本例:ASCII),找到需要的商品代碼,如下圖。

 

MultiCharts中建立自訂商品11

 

點選第二個分頁,選擇商品周期(本例僅匯入日層級資料,故若選擇分線或TICK層級將顯示無資料)與顯示時間。

 

MultiCharts中建立自訂商品12

 

最後就大功告成,如下圖所示,可以開始利用DATA2的資料來進行程式撰寫與研究了。

 

MultiCharts中建立自訂商品13