1. 程式人生 > >CTP開發——初始化

CTP開發——初始化

最近完成了公司的CTP委託開發,現在可以總結一下了。

一、CTP用到的檔案

ThostFtdcTraderApi.h C++標頭檔案,包含交易相關的指令,如報單。
ThostFtdcMdApi.h C++標頭檔案,包含獲取行情相關的指令。
ThostFtdcUserApiStruct.h 包含了所有用到的資料結構。
ThostFtdcUserApiDataType.h 包含了所有用到的資料型別。
thosttraderapi.dll 交易部分的動態連結庫和靜態連結庫。
thosttraderapi.lib
thostmduserapi.dll 行情部分的動態連結庫和靜態連結庫。
thostmduserapi.lib
error.dtd 包含所有可能的錯誤資訊。
error.xml

二、CTP初始化

1. 建立SPI 和API 例項。
這裡的SPI 是指開發者建立的自己的類,該類已經繼承了介面中的SPI 介面類(CThostFtdcTraderSpi 或
CThostFtdcMdSpi)。而API 即介面中提供的CThostFtdcMdApi 或CThostFtdcTraderApi。
2. 向API 例項註冊SPI 例項。
3. 向API 例項註冊前置地址。交易介面需要註冊交易前置地址,行情介面需要註冊行情前置地址。
4. 訂閱公有流(僅限交易介面,行情介面不需要)。用於接收公有資料,如合約在場上的交易狀態。預設
模式是從上次斷開連線處繼續收取交易所釋出資料(Resume 模式)開發者還可以指定全部重新獲取
(Restart),或從登陸後獲取(Quick)。
5. 訂閱私有流(僅限交易介面,行情介面不需要)。用於接收私有資料,如報單回報。預設模式是從上次
斷開連線處繼續收取交易所釋出資料(Resume 模式)開發者還可以指定全部重新獲取(Restart),或從
登陸後獲取(Quick)。
6. 初始化。(Init)
7. 等待執行緒退出。(Join)

這裡我就不貼程式碼了,我這裡主要講一下注意事項。

1、CTP支援TCP/UDP協議,支援socks4、socks4a 及 socks5代理,以及支援SSL安全套接字。

2、RegisterFront格式,這裡給幾個例子:

//udp://180.168.212.79:31205
//"tcp:// asp-sim2-front1.financial-trading-platform.com:26205 sock5://user:[email protected]:10001" //socks4、socks4a 及 socks5
//RegisterFront("ssl:// ssl 前置 IP 地址或域名:埠號"); 

3、RegisterFront可以呼叫多次,如果你有多個前端地址的話,等於註冊了多個前端地址,CTP內部會在網路斷了的情況下自動去切換的。

4、公有流和私有流的訂閱

SubscribePublicTopic(THOST_TERT_RESTART); //公有流只有OnRtnInstrumentStatus,THOST_TERT_RESTART這樣你可以實時跟蹤每一種分類、每一個程式碼的當前狀態

/////////////////////////////////////////////////////////////////////////
///TFtdcInstrumentStatusType是一個合約交易狀態型別
/////////////////////////////////////////////////////////////////////////
///開盤前
#define THOST_FTDC_IS_BeforeTrading '0'
///非交易
#define THOST_FTDC_IS_NoTrading '1'
///連續交易
#define THOST_FTDC_IS_Continous '2'
///集合競價報單
#define THOST_FTDC_IS_AuctionOrdering '3'
///集合競價價格平衡
#define THOST_FTDC_IS_AuctionBalance '4'
///集合競價撮合
#define THOST_FTDC_IS_AuctionMatch '5'
///收盤
#define THOST_FTDC_IS_Closed '6'

SubscribePrivateTopic(THOST_TERT_QUICK); //私有流,建議使用THOST_TERT_QUICK,這樣在登入上之後,可以自己主動請求市場、分類、合約、持倉、委託、成交等等,然後等待私有推送,這種模式是最適合保持資料一致的。

5、CTP斷開OnFrontDisconnected,你不用主動去重新連線,CTP後臺會自己去重連的。

6、為了保證CTP的工作效率,最好不要在CTP執行緒裡處理耗時的工作,可以自己建立單獨執行緒處理。

7、CTP join函式是防止主執行緒退出的,實際專案開發中不需要使用這個函式的

三、CTP退出

呼叫Release函式即可,不需要delete的

這裡要注意的是:在Release之前不需要呼叫RegisterSpi(NULL);登出Spi的,如果這樣做了,有可能導致CTP退不出的。

相關推薦

CTP開發——初始

最近完成了公司的CTP委託開發,現在可以總結一下了。 一、CTP用到的檔案 ThostFtdcTraderApi.h C++標頭檔案,包含交易相關的指令,如報單。 ThostFtdcMdApi.h C++標頭檔案,包含獲取行情相關的指令。 ThostFtdcUse

Ios短視訊開發初始短視訊失敗或延時太長的問題原因分析

在人們都追求快節奏的現在,手機APP開啟速度都會成為購買手機時要考慮的重要問題,聯通網路公司斷網半個小時能引起民憤,那麼移情考慮到短視訊平臺上來說,在視訊播放方面,初始化短視訊的時間當然是越短越好。 現如今所有的短視訊平臺在音視訊傳輸方面大都使用的是流媒體傳輸,至於伺服器方面也不是我們敲段程式碼

微信公眾號開發初始接入

1.開通測試號:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login 手機微信掃描確認登入之後,網頁端可以獲取一個測試的介面。 2.因為測試號的URL地址的配置要求,所以本地網路必須暴露在外網,需要藉助穿透

平臺開發組件初始

text tex 加載 toolbar set handle cls and student 列表組件的初始化 toList:去列表的處理器 listMeta:獲取元數據的處理器 listLoad:加載列表數據的處理器 listDelete listSave listNew

buildroot構建項目(四)--- u-boot 2017.11 適配開發板修改 2 ---- 系統啟動初始之一

鏈接 extc 信號 分析 col clock -h 17.1 標誌位 一、代碼分析   上一節已經分析了鏈接文件,知道了首先代碼是從 _start 開始,之後設置了中斷向量表,然後從 start.s 開始運行。 _start:vectors.S (arch\arm\li

buildroot構建項目(五)--- u-boot 2017.11 適配開發板修改 4 ---- 系統啟動初始之三

vid def include cmp ble soft setup.s bubuko 賦值 一、內存控制器   在關閉了MMU和caches 之後 就進入lowlevel_init 函數,對內存控制器進行初始化。lowlevel_init.S (board\samsung

buildroot構建項目(七)--- u-boot 2017.11 適配開發板修改 4 ---- 系統啟動初始之四

ack tar span mov tel 變量初始化 清零 ppi ntb   設置完寄存器控制器後,則跳出cpu_init_crit,進入_main 函數。即進入crt0.S (arch\arm\lib)   跟著代碼流程慢慢走 一、crt0.S 1.1 第一步執行代碼

Web開發中Listener、Filter、Servlet的初始及調用

children tomcat啟動 什麽 lis exceptio try 部分 OS findchild 我們在使用Spring+SpringMVC開發項目中,web.xml中一般的配置如下: 1 <?xml version="1.0" encoding=

[轉]WordPress主題開發:主題初始

alt 方法 開發 ont tom 出錯 oid div TP 本文轉自:http://www.cnblogs.com/tinyphp/p/4391182.html 在最簡單的情況下,一個WordPress主題由兩個文件構成: index.php

開發個人圖書收藏清單小程序開發(八)初始書房信息修改

pan errors configure not ref del rep model res 因為之前邏輯設計有點小問題,所以修改了一下: 增加core._User的Table: 1 CREATE TABLE [core].[_User] 2 ( 3 [ID]

Golang區塊鏈開發001-初始區塊鏈

orm Once 返回 print Coding hash 進行 space tps 一. 代碼結構Block.go :定義區塊結構與方法BlockChain.go :定義區塊鏈結構與方法help.go :將常用代碼塊進行封裝,形成幫助庫main.go:測試代碼二.定義區塊

Golang區塊鏈開發002-初始區塊鏈與POW挖礦實現

pow append var space [] sha2 測試結果 rep ring 目錄:一.初始化區塊鏈1.代碼結構2. 定義區塊結構與方法3. 定義區塊鏈結構與方法4. 幫助庫代碼5. 測試生成區塊與初始化區塊鏈6. 測試代碼二. POW挖礦實現1.代碼結構2. 定義

Vue+koa2開發一款全棧小程序(5.服務端環境搭建和項目初始

net pro 腳手架 column 小程序 ans msg 角點 import 1.微信公眾平臺小程序關聯騰訊雲 騰訊雲的開發環境是給免費的一個後臺,但是只能夠用於開發,如果用於生產是需要花錢的,我們先用開發環境吧 1.用小程序開發郵箱賬號登錄微信公眾平臺 2.【設置】→

一、【用django2.0來開發】 環境部署和初始項目

text pro use name 支持 art 簡易 發布 server 一、【用django2.0來開發】 環境部署和初始化項目 發現網上沒有什麽比較好的django系列的教程, 所以打算寫一整套教程來教會大家如何使用django2.0 整個教程都會圍繞一個開發一個項目

從零開始學習比特幣開發(四)--網路初始,載入區塊鏈和錢包,匯入區塊啟動節點

寫在前面: 本篇文章接續 從零開始學習區塊鏈技術(三)-接入比特幣網路的關鍵步驟解析、建立比特幣錢包,以及重要rpc指令 從零開始學習區塊鏈技術(二)–如何接入比特幣網路以及其原理分析 以及從零開始學習區塊鏈技術(一)–從原始碼編譯比特幣 如果這篇文章看不明白,請務必先閱讀之前的文章

Linux驅動開發(6)——GPIO初始

gpio-exynos4.c檔案的最後一行core_initcall(exynos4_gpiolib_init); core_initcall代表在linux初始化過程中會呼叫 exynos4_gpiolib_init函式中包括chip = exynos4_gpio_

使用Vue開發移動端專案初始需要

1、增加移動端適配標籤| <meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=no"> 2、將r

nginx模組開發—HTTP初始之listen

1、知識百科 nginx作為一個高效能的HTTP伺服器,網路的處理是其核心,瞭解網路的初始化有助於加深對nginx網路處理的瞭解。與網路有關的配置命令主要有兩個:listen和sever_name。listen命令設定nginx監聽地址,對於IP協議,這個地址就是address和port,對於U

C程式碼開發遇到的問題 變數初始和結構體指標移動

1. 變數初始化 函式內部的變數如果不初始化的話預設不是0而是一個隨機值。 下面的程式用來列印一個未初始化的無符號的整型值,執行幾遍,每次的結果都會不一樣 #include <stdio.h> void PrintUint() { /* 預設是隨機值,不一定是0 *

Ionic專案開發環境初始

一.使用Ionic CLI進行專案的初始化構建 1.構建專案 執行npm install -g cordova ionic安裝cordova和ionic外掛 建立一個APPionic start 專案名 tabs 其中tabs是圖示形式(下方圖示