1. 程式人生 > >淺談CTP期貨行情交易API

淺談CTP期貨行情交易API

1、什麼是CTP

     綜合交易平臺(Comprehensive Transaction Platform,CTP)是專門為期貨公司開發的一套期貨經紀業務管理
系統,由交易、風險控制和結算三大系統組成。
     其中,交易系統主要負責訂單處理、行情轉發及銀期轉賬業務,結算系統負責交易管理、帳戶管理、經紀人
管理、資金管理、費率設定、日終結算、資訊查詢以及報表管理等,風控系統則主要在盤中進行高速的實時
試算,以及時揭示並控制風險。系統能夠同時連通國內四家期貨交易所,支援國內商品期貨和股指期貨的交
易結算業務,並能自動生成、報送保證金監控檔案和反洗錢監控檔案。
     綜合交易平臺借鑑代表了國際衍生品領域交易系統先進水平的上期所“新一代交易所繫統”的核心技術,採
用創新的完全精確重演的分散式體系架構。
     綜合交易平臺是基於全記憶體的交易系統,支援7x24小時連續交易,運維人員不必每日啟停系統,可以做到“一
鍵運維”。該特性使得綜合交易平臺新增交易中心以擴充套件業務規模時不用增加運維人力的成本。
     支援FENS機制的“一鍵切換”多活交易中心也是目前市場上只有CTP系統實現了的特性。該機制使得交易系統
可在某個交易中心宕機的情況下立即切換到另一個備用交易中心,得以實現真真正正的連續交易。
綜合交易平臺公開並對外開放交易系統介面,使用該介面可以接收交易所的行情資料和執行交易指令。該接
口採用開放介面(API)的方式接入,早已在期貨界已經形成事實上的行業標準。
     綜合交易平臺mini版(CTP mini),是一款速度更快,更輕量級的CTP系統。相對於CTP來說,它追求的是更
小型化的配置,更節約化的資源配備。而用CTP的API開發的客戶端程式也可以完美相容CTP mini系統。


2、用途

     做自己的期貨交易軟體、自動化交易系統、貼水差價交易、行情資料服務等待。

3、API解析


上期所提供了以上幾個標頭檔案,實現相應的方法即可。

(1)行情模組

ThostFtdcMdApi.h

//using namespace std;
class CustomMdSpi: public CThostFtdcMdSpi
{
	// ---- 繼承自CTP父類的回撥介面並實現 ---- //
public:
	double begintime1;
	double begintime2;
	double begintime3;
	double begintime4;

	double endtime1;
	double endtime2;
	double endtime3;
	double endtime4;

	std::map<std::string, int> gMarket;


	///當客戶端與交易後臺建立起通訊連線時(還未登入前),該方法被呼叫。
	void OnFrontConnected();

	///當客戶端與交易後臺通訊連線斷開時,該方法被呼叫。當發生這個情況後,API會自動重新連線,客戶端可不做處理。
	///@param nReason 錯誤原因
	///        0x1001 網路讀失敗
	///        0x1002 網路寫失敗
	///        0x2001 接收心跳超時
	///        0x2002 傳送心跳失敗
	///        0x2003 收到錯誤報文
	void OnFrontDisconnected(int nReason);

	///心跳超時警告。當長時間未收到報文時,該方法被呼叫。
	///@param nTimeLapse 距離上次接收報文的時間
	void OnHeartBeatWarning(int nTimeLapse);

	///登入請求響應
	void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///登出請求響應
	void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///錯誤應答
	void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///訂閱行情應答
	void OnRspSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///取消訂閱行情應答
	void OnRspUnSubMarketData(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///訂閱詢價應答
	void OnRspSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///取消訂閱詢價應答
	void OnRspUnSubForQuoteRsp(CThostFtdcSpecificInstrumentField *pSpecificInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///深度行情通知
	void OnRtnDepthMarketData(CThostFtdcDepthMarketDataField *pDepthMarketData);

	///詢價通知
	void OnRtnForQuoteRsp(CThostFtdcForQuoteRspField *pForQuoteRsp);
};


(2)交易模組

   ThostFtdcTraderApi.h

#pragma once
// ---- 派生的交易類 ---- //
#include "CTP_API/ThostFtdcTraderApi.h"
#include <map>
#include <unordered_map>
#include <string>
#include <algorithm>
#include "iostream"
#include <iostream> 
#include <windows.h>
#include <vector>

class CustomTradeSpi : public CThostFtdcTraderSpi
{
// ---- ctp_api部分回撥介面 ---- //
public:
	///當客戶端與交易後臺建立起通訊連線時(還未登入前),該方法被呼叫。
	void OnFrontConnected();

	///登入請求響應
	void OnRspUserLogin(CThostFtdcRspUserLoginField *pRspUserLogin, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///錯誤應答
	void OnRspError(CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///當客戶端與交易後臺通訊連線斷開時,該方法被呼叫。當發生這個情況後,API會自動重新連線,客戶端可不做處理。
	void OnFrontDisconnected(int nReason);

	///心跳超時警告。當長時間未收到報文時,該方法被呼叫。
	void OnHeartBeatWarning(int nTimeLapse);

	///登出請求響應
	void OnRspUserLogout(CThostFtdcUserLogoutField *pUserLogout, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///投資者結算結果確認響應
	void OnRspSettlementInfoConfirm(CThostFtdcSettlementInfoConfirmField *pSettlementInfoConfirm, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///請求查詢合約響應
	void OnRspQryInstrument(CThostFtdcInstrumentField *pInstrument, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///請求查詢資金賬戶響應
	void OnRspQryTradingAccount(CThostFtdcTradingAccountField *pTradingAccount, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///請求查詢投資者持倉響應
	void OnRspQryInvestorPosition(CThostFtdcInvestorPositionField *pInvestorPosition, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///報單錄入請求響應
	void OnRspOrderInsert(CThostFtdcInputOrderField *pInputOrder, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///報單操作請求響應
	void OnRspOrderAction(CThostFtdcInputOrderActionField *pInputOrderAction, CThostFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast);

	///報單通知
	void OnRtnOrder(CThostFtdcOrderField *pOrder);

	///成交通知
	void OnRtnTrade(CThostFtdcTradeField *pTrade);
	
// ---- 自定義函式 ---- //
public:
	bool loginFlag; // 登陸成功的標識
	// 報單引用
	int iOrderRef;
	int iRequestID;

	// 所有成功訂單記錄
	std::map<char *, int> tradeOrderRefs;

	//int FRONT_ID;
	//int SESSION_ID;

	void reqOrderInsert(
		TThostFtdcInstrumentIDType instrumentID,
		TThostFtdcPriceType price,
		TThostFtdcVolumeType volume,
		TThostFtdcDirectionType direction); // 個性化報單錄入,外部呼叫
	//
	int InsertOrder(char *InstrumentID, TThostFtdcDirectionType dir, char offsetFlag, char priceType, double price, int num);
	//
	int DeleteOrder(char *InstrumentID, int orderRef);

	void CallBackCloseOrder(bool flag, int iOrderRef);
private:
	void reqUserLogin(); // 登入請求
	void reqUserLogout(); // 登出請求
	void reqSettlementInfoConfirm(); // 投資者結果確認
	void reqQueryInstrument(); // 請求查詢合約
	void reqQueryTradingAccount(); // 請求查詢資金帳戶
	void reqQueryInvestorPosition(); // 請求查詢投資者持倉
	void reqOrderInsert(); // 請求報單錄入
	
	void reqOrderAction(CThostFtdcOrderField *pOrder); // 請求報單操作
	bool isErrorRspInfo(CThostFtdcRspInfoField *pRspInfo); // 是否收到錯誤資訊
	bool isMyOrder(CThostFtdcOrderField *pOrder); // 是否我的報單回報
	bool isTradingOrder(CThostFtdcOrderField *pOrder); // 是否正在交易的報單
};

測試原始碼:http://download.csdn.net/download/lt623265189/9964977

相關推薦

CTP期貨行情交易API

1、什麼是CTP      綜合交易平臺(Comprehensive Transaction Platform,CTP)是專門為期貨公司開發的一套期貨經紀業務管理 系統,由交易、風險控制和結算三大系統組成。      其中,交易系統主要負責訂單處理、行情轉發及銀期轉賬業務

CTP期貨期權交易開發

3.2 open 期權 immediate level ast 發的 gfs 發布者 CTP交易部分接口說明 綜合交易平臺(Comprehensive Transaction Platform,CTP)是專門為期貨公司開發的一套期貨經紀業務管理系統,由交易、風險控制和結算三

移動端車牌識別api介面呼叫方法

關鍵字:移動端車牌識別api介面、車牌識別api、iOS車牌識別、安卓車牌識別、掃描車牌識別、掃一掃識別車牌 一、移動端車牌識別api介面的背景 移動端車牌識別api介面是文通科技為促進人工智慧化建設研發而來的應用。此應用基於移動端平臺,例如手機應用、例如PDA應用,該手機端車牌識別

CTP期貨行情介面使用筆記

CTP開發文件 期貨行情訂閱 使用流程 建立繼承自 CThostFtdcMdSpi 的類 通過 CThostFtdcMdApi::CreateFtdcMdApi() 建立api物

基於CTP的國內期貨程式化交易行情獲取講解

       前面兩篇文章主要講了國外期貨相關程式開發,使用的是鄭州易盛的行情及交易api,而國內期貨相關程式開發易盛貌似也是有sdk的,不過專案中使用的是上期技術的sdk,即大家經常提到的CTP a

[01] RESTful風格的API

blog height -s inf pos git col 也好 img 1、什麽是RESTful風格的APIREST,即Representational State Transfer,可以理解為“(資源的)表現層狀態轉化”。在網絡上,我們通過瀏覽器輸入url,來訪問和獲

Office 365 SharePoint 遷移 (三)使用SP Migration API遷移

O365 SHAREPOINT 遷移 Office 365 Migration 下邊開始進入正題,首先來談談如何使用SharePoint Migration API進行文檔庫的遷移。 操作說明之前先來說下SharePoint Migration API他的大概功能,本

API測試與UI Auomation一點心得

API測試 自動化測試 background:最近兩個月被分配做UI automation,原因是換了一套平臺,需要重新部署,有些業務需求改了case都跑不過了,我的任務是debug case,把case都跑通。工具是Robot Framework。當時感覺task相對輕松,因為業務相對簡單,只是Ca

API網關(API Gateway)如何承載API經濟生態鏈

edi dfa 中間 反向 51cto 運維 需要 更新 完成 序言API經濟生態鏈已經在全球範圍覆蓋, 絕大多數企業都已經走在數字化轉型的道路上,API成為企業連接業務的核心載體, 並產生巨大的盈利空間。快速增長的API規模以及調用量,使得企業IT在架構上、模式上面臨著更

《短線交易秘訣》感悟

一點 基本概念 是否 力量 開盤 技巧 為我 移動 事情 《短線交易秘訣》是一本由拉裏·威廉斯著作,著名的交易員,曾獲羅賓斯世界杯(Robbins World Cup)期貨交易錦標賽的全時冠軍,在不到12個月的時間裏,將賬戶資金從1萬美元經營到110萬美元。他曾在全美期貨委

REST API

淺談REST API   說明: 本文部分內容根據其它網路文章編寫,如有版權問題請及時通知。   背景       發跡於網際網路的REST,在國內國外混得可謂是風生水起,如今又進入電信行業的視野,連TMF都將其作為戰略

關於Java基礎的複習總結(七)java API

鳥隨鸞鳳飛騰遠,人伴賢良品自高 API(Application Programming Interface,應用程式程式設計介面)是一些預先定義的函式,目的是提供應用程式與開發人員基於某軟體或硬體得以訪問一組例程的能力,而又無需訪問原始碼,或理解內部工作機制的細節。 一:集合框架和

前後端分離及RESTful API

一、綜述        前端、後端這兩個名詞無數次出現在專業應用當中。從最開始不懂得網站上的內容從何而來,到現在經手幾個專案後對前後端和網際網路有了專業上的粗淺認知,所學越多,需學越多。當專業課上還在講解著基於C#的ASP.NET開發中,如何拖動But

外盤期貨平臺搭建期貨行情軟件定制CRM後臺管理系統-外盤期貨交易軟件-易投

毫秒 穩定 日誌管理 管理 健全 包含 指標 分享圖片 競爭力 1、致力於提供更為健全、更為穩定、更具競爭力的產品體驗,目前交易系統已達毫秒級別,可實現單元每秒數百萬筆數據處理,並建立強大的商務夥伴網絡,含CME、CBOT、LME、港交所,新加坡交易所等。 2、優勢:我公司

期貨資管軟體都有哪些?好用的期貨配資軟體有哪些?期貨行情子賬戶系統交易軟體

期貨資管軟體都有哪些?好用的期貨配資軟體有哪些?期貨行情交易軟體 目前市場上用的最多的期貨交易軟體無非:文華財經、博弈大師,其他的都是小眾的期貨交易軟體,但這幾款軟體均無法給予投資公司配資使用,文華財經之前給多家期貨公司資管介面均已下線,博弈大師-鑫管家之前也有給投資公司使用資管功能,但

Windows API程式設計 (這個經典)

原文地址:http://blog.sina.com.cn/s/blog_46d85b2a01010qpt.html WinSDK是程式設計中的傳統難點,個人寫的WinAPI程式也不少了,其實之所以難就難在每個呼叫的API都包含著Windows這個作業系統的潛規則或者是w

Android 智慧合約Web3j的錢包建立與交易

對於智慧合約來說,大家應該都有所瞭解吧,至少也聽說過吧?當然,智慧合約、以太坊、以太幣這些關鍵詞也會在國內普遍的流行起來,這是國際的趨勢所在。什麼是以太坊?以太坊是一個平臺,有開原始碼,相當於作業系統,如android,程式碼開源,你可以在這個平臺上開發智慧合約。由於得到很多

基於CTP的國內期貨程式化交易之報單流程講解

       相比國外期貨交易開發,國內期貨交易開發就有些繁瑣了,坑比較多。第一就是交易時間段多,像國外期貨美原油,全天23小時連續交易,而國內期貨滬金,全天分四個時間段交易,分別為9:00至10:1

HTML5中的Canvas基本繪圖API簡易封裝和使用(一)

     HTML5的Canvas的功能可謂是非常強大,它可以做出很多炫酷的效果,從而更好的增加使用者的體驗。今天我們就來一起看下HTML5一些常用的API,個人根據實際的使用把它再次進行一次封裝,使用起來感覺更方便,可能封裝的不全面,但是這個個人感覺後期可以自動新增,主要

eBay API之時間

       常用US eBayAPI的開發者 ,應該會經常用SOAP去請求API。        在請求API時,免不了帶入時間,比如TradingAPI中的GetItemTransactions。在取item一定時間段內的transaction時,我們會帶入ModTimeFrom和ModTimTo。