二、常用免費資料來源

1、文化、TB、易盛、MC等平臺匯出資料。

其中我只用過易盛和MC的資料匯出功能,易盛的提供的歷史資料時間較短且不支援tick資料, MC支援tick資料,但是沒有持倉量和開平方向。資料質量三顆星。

2、透過程式爬取新浪、和訊的歷史資料。

透過爬蟲爬取網頁上的資料,這裡我曾經爬取過和訊的資料。其中tick資料儲存的時間很短,同樣沒有持倉和開平方向,過了時間點就沒有了。資料質量兩顆星。

3、自己寫程式採集。

開啟CTP介面的官網,簡陋的開發文件和demo,是不是有種想要撞牆的感覺。如果不是對整個報單業務非常熟悉,不跌坑裡才怪了。筆者曾經用c++開發ctp交易程式時,在持倉回報中有個叫YdPosition的欄位,弄得筆者還以為自己的程式出bug了。當然此次我們不涉及到交易介面的開發,不做過多討論。這裡我推薦使用quantbox的開源專案XAPI2,支援java、python、C#呼叫ctp介面,使用起來非常方便。資料質量4顆星

三、自建資料平臺

有了資料來源,只能算完成一半。期貨全市場tick大約每天250萬筆,一年就是6億多。要安全、方便的把這些tick存起來,方便研究開發策略、實盤交易時快速方便的呼叫,這裡我用mongo來儲存資料,暫時還沒有遇到瓶頸問題。程式語言我選擇的是c#,比python效能高,比java整潔,比c++優雅。

好了廢話不多說,新手趕緊上車,來不及解釋,老司機請後門下車。

首先開啟quantbox的github,QuantBox/XAPI2

找到language下的csharp,開啟demo看看。

step1:初始化介面

XApi mdApi = new XApi(“CTP_Quote_x86。dll”);

mdApi。Server。Address = “行情地址”;

mdApi。Server。BrokerID = “交易商程式碼”;

mdApi。User。UserID = “賬號”;

mdApi。User。Password = “密碼”;

step2:將資料接入mongo

mdApi。OnRtnDepthMarketData = (object sender, ref DepthMarketDataNClass marketData) =>

{

//建立資料連線

MongoClient client = new MongoClient(“mongo連線字串”);

MongoServer server = client。GetServer();

//獲取指定資料庫

MongoDatabase db = server。GetDatabase(“Futures”);

//獲取表

MongoCollection col = db。GetCollection(“Ticks”);

//插入資料

col。InsertBatch(marketData);

//關閉連線

server。Disconnect();

}

step3:連線伺服器,並開始訂閱行情

mdApi。Connect();

Thread。Sleep(5 * 1000);

mdApi。Subscribe(“rb1709”, “”);

step4:把程式編譯執行一下,點燃一支香菸,源源不斷的資料就過來了,是不是感覺超簡單。

setp5:

上面的程式雖然可以執行,但是還有些要最佳化的地方,比如怎麼動態得獲取當日交易的所有合約、這樣寫mongo是不是有效能問題,是不是應該緩衝一部分批次寫入、能不能開機自動後臺啟動,每天自動定時採集、行情回報這麼多欄位,怎麼過濾一下。如果你實在太懶不想寫程式碼,直接下載下來編譯一下可好:goodluck028/datareceiver - 碼雲 - 開源中國

四、配置執行環境

mongo的安裝配置:請自行百度。

五、最後說一句

野生寬客入門系列(一):只需幾行程式碼,手工打造高質量期貨Tick資料接收器

野生寬客入門系列(一):只需幾行程式碼,手工打造高質量期貨Tick資料接收器