Skip to content

Commit 4c8291e

Browse files
committedJan 27, 2015
LTS API更新
1 parent caa98a4 commit 4c8291e

26 files changed

+1304
-4843
lines changed
 

‎QuantBox_LTS_Trade/TraderApi.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -1127,6 +1127,7 @@ void CTraderApi::OnRspQryInstrument(CSecurityFtdcInstrumentField *pInstrument, C
11271127
strncpy(field.ExpireDate, pInstrument->ExpireDate, sizeof(TSecurityFtdcDateType));
11281128
field.OptionsType = CSecurityFtdcInstrumentField_2_PutCall(pInstrument);
11291129
field.StrikePrice = pInstrument->ExecPrice;
1130+
11301131

11311132
// 期权的标的物
11321133
if (strlen(pInstrument->InstrumentID) == 8)

‎QuantBox_LTS_Trade/TypeConvert.cpp

+189-11
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
#include "stdafx.h"
22
#include "TypeConvert.h"
33

4+
#include <stdlib.h>
5+
46
#include <string.h>
57
/// 类似于OpenQuant FIX一样的效果,插件层简单,基本不要做怎么计算或处理
68
/// 对于一个单子的某个状态可能是这样的,新单,部分成交,完全成交
@@ -206,6 +208,112 @@ ExecType CSecurityFtdcOrderField_2_ExecType(CSecurityFtdcOrderField* pIn)
206208
}
207209
}
208210

211+
PutCall CSecurityFtdcInstrumentField_2_PutCall(CSecurityFtdcInstrumentField* pIn)
212+
{
213+
if (strlen(pIn->InstrumentID) == 8)
214+
{
215+
if (pIn->ExchangeInstID[6] == 'C')
216+
{
217+
return PutCall::Call;
218+
}
219+
}
220+
return PutCall::Put;
221+
}
222+
223+
// 上海证券交易所证券代码分配规则
224+
// http://wenku.baidu.com/link?url=fhnAW62VTXqHTn8p9xlyXKa_oDIfR2xIxBF3y_fryeoFnz7MFbeWJbMLx4n1H61ERFnhr6PtaxF_j01x8iIT0wArZzrBtABRysi-KEpBa9S
225+
InstrumentType CSecurityFtdcInstrumentField_2_InstrumentType_SSE(CSecurityFtdcInstrumentField* pIn)
226+
{
227+
// 只有6位,8位的期权已经提前过滤
228+
int prefix1 = atoi(pIn->InstrumentID) / 100000;
229+
int prefix3 = atoi(pIn->InstrumentID) / 1000;
230+
switch (prefix1)
231+
{
232+
case 0:
233+
switch (prefix3)
234+
{
235+
case 0:
236+
return InstrumentType::Index;
237+
case 9:
238+
case 10:
239+
case 90:
240+
case 99:
241+
return InstrumentType::Bond;
242+
default:
243+
return InstrumentType::Index;
244+
}
245+
case 1:
246+
return InstrumentType::Bond;
247+
case 2:
248+
return InstrumentType::Bond;
249+
case 3:
250+
return InstrumentType::Future;
251+
case 5:
252+
switch (prefix3)
253+
{
254+
case 500:
255+
case 510:
256+
case 519:
257+
case 521:
258+
case 522:
259+
case 523:
260+
case 524:
261+
return InstrumentType::ETF;
262+
case 580:
263+
case 582:
264+
return InstrumentType::Option;
265+
default:
266+
return InstrumentType::ETF;
267+
}
268+
case 6:
269+
return InstrumentType::Stock;
270+
case 9:
271+
return InstrumentType::Stock;
272+
default:
273+
return InstrumentType::Synthetic;
274+
}
275+
}
276+
277+
// 深圳证券交易所证券代码编码方案
278+
// http://wenku.baidu.com/view/e41fba85ec3a87c24028c416.html
279+
InstrumentType CSecurityFtdcInstrumentField_2_InstrumentType_SZE(CSecurityFtdcInstrumentField* pIn)
280+
{
281+
// 只有6位,取前2
282+
int prefix1 = atoi(pIn->InstrumentID) / 100000;
283+
int prefix2 = atoi(pIn->InstrumentID) / 10000;
284+
switch (prefix2)
285+
{
286+
case 0:
287+
case 7:
288+
case 9:
289+
return InstrumentType::Stock;
290+
case 3:
291+
case 8:
292+
return InstrumentType::Option;
293+
case 10:
294+
case 11:
295+
case 12:
296+
case 13:
297+
return InstrumentType::Bond;
298+
case 17:
299+
case 18:
300+
return InstrumentType::ETF;
301+
case 20:
302+
case 30:
303+
return InstrumentType::Stock;
304+
case 27:
305+
case 37:
306+
return InstrumentType::Stock;
307+
case 28:
308+
case 38:
309+
return InstrumentType::Option;
310+
case 39:
311+
return InstrumentType::Index;
312+
default:
313+
return InstrumentType::Synthetic;
314+
}
315+
}
316+
209317
InstrumentType CSecurityFtdcInstrumentField_2_InstrumentType(CSecurityFtdcInstrumentField* pIn)
210318
{
211319
switch (pIn->ProductClass)
@@ -218,27 +326,90 @@ InstrumentType CSecurityFtdcInstrumentField_2_InstrumentType(CSecurityFtdcInstru
218326
return InstrumentType::MultiLeg;
219327
case SECURITY_FTDC_PC_EFP:
220328
return InstrumentType::Future;
221-
//case SECURITY_FTDC_PC_SpotOption:
222-
// return InstrumentType::Option;
329+
case SECURITY_FTDC_PC_ETF:
330+
return InstrumentType::ETF;
331+
case SECURITY_FTDC_PC_ETFPurRed:
332+
return InstrumentType::ETF;
223333
default:
224334
if (strlen(pIn->InstrumentID) == 8)
225335
{
226336
return InstrumentType::Option;
227337
}
228-
return InstrumentType::Stock;
338+
if (pIn->ExchangeID[1] == 'Z')
339+
{
340+
return CSecurityFtdcInstrumentField_2_InstrumentType_SZE(pIn);
341+
}
342+
else
343+
{
344+
return CSecurityFtdcInstrumentField_2_InstrumentType_SSE(pIn);
345+
}
229346
}
230347
}
231348

232-
PutCall CSecurityFtdcInstrumentField_2_PutCall(CSecurityFtdcInstrumentField* pIn)
349+
PriceType CSecurityFtdcInstrumentField_2_PriceTick_SSE(CSecurityFtdcInstrumentField* pIn)
233350
{
234-
if (strlen(pIn->InstrumentID) == 8)
351+
// 只有6位,8位的期权已经提前过滤
352+
int prefix1 = atoi(pIn->InstrumentID) / 100000;
353+
int prefix3 = atoi(pIn->InstrumentID) / 1000;
354+
switch (prefix1)
235355
{
236-
if (pIn->ExchangeInstID[6] == 'C')
237-
{
238-
return PutCall::Call;
239-
}
356+
case 0:
357+
return 0.01;
358+
case 1:
359+
return 0.01;
360+
case 2:
361+
return 0.001;
362+
case 3:
363+
return 0.01;
364+
case 5:
365+
return 0.001;
366+
case 6:
367+
return 0.01;
368+
case 9:
369+
return 0.001;
370+
default:
371+
return 0.01;
372+
}
373+
374+
return 0.01;
375+
}
376+
377+
PriceType CSecurityFtdcInstrumentField_2_PriceTick_SZE(CSecurityFtdcInstrumentField* pIn)
378+
{
379+
// 只有6位,取前2
380+
int prefix1 = atoi(pIn->InstrumentID) / 100000;
381+
int prefix2 = atoi(pIn->InstrumentID) / 10000;
382+
switch (prefix2)
383+
{
384+
case 0:
385+
case 7:
386+
case 9:
387+
return 0.01;
388+
case 3:
389+
case 8:
390+
return 0.001;
391+
case 10:
392+
case 11:
393+
case 12:
394+
case 13:
395+
return 0.001;
396+
case 17:
397+
case 18:
398+
return 0.001;
399+
case 20:
400+
case 30:
401+
return 0.01;
402+
case 27:
403+
case 37:
404+
return 0.01;
405+
case 28:
406+
case 38:
407+
return 0.001;
408+
case 39:
409+
return 0.01;
410+
default:
411+
return 0.01;
240412
}
241-
return PutCall::Put;
242413
}
243414

244415
PriceType CSecurityFtdcInstrumentField_2_PriceTick(CSecurityFtdcInstrumentField* pIn)
@@ -252,5 +423,12 @@ PriceType CSecurityFtdcInstrumentField_2_PriceTick(CSecurityFtdcInstrumentField*
252423
return 0.001;
253424
}
254425

255-
return 0.01;
426+
if (pIn->ExchangeID[1] == 'Z')
427+
{
428+
return CSecurityFtdcInstrumentField_2_PriceTick_SZE(pIn);
429+
}
430+
else
431+
{
432+
return CSecurityFtdcInstrumentField_2_PriceTick_SSE(pIn);
433+
}
256434
}

‎QuantBox_Queue/QuantBox_Queue.vcxproj

+2
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@
9999
</PropertyGroup>
100100
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
101101
<LinkIncremental>true</LinkIncremental>
102+
<OutDir>C:\Program Files\SmartQuant Ltd\OpenQuant 2014\XAPI</OutDir>
103+
<TargetName>QuantBox_Queue_x64</TargetName>
102104
</PropertyGroup>
103105
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug64|Win32'">
104106
<LinkIncremental>true</LinkIncremental>

‎QuantBox_Queue/main.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, do
1919
case GetApiType:
2020
return nullptr;
2121
case GetApiVersion:
22-
return (void*)"0.1.0.20150112";
22+
return (void*)"0.2.0.20150126";
2323
case GetApiName:
2424
return (void*)"Queue";
2525
case Create:

‎QuantBox_XAPI_Windows.sln

+2-2
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ Global
6262
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Any CPU.ActiveCfg = Debug|Win32
6363
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
6464
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Mixed Platforms.Build.0 = Debug|Win32
65-
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Win32.ActiveCfg = Debug|Win32
66-
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Win32.Build.0 = Debug|Win32
65+
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Win32.ActiveCfg = Debug|x64
66+
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Debug|Win32.Build.0 = Debug|x64
6767
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Release|Any CPU.ActiveCfg = Release|Win32
6868
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Release|Mixed Platforms.ActiveCfg = Release|Win32
6969
{3A9173AA-92DB-49F9-88E3-09419C1D8E9F}.Release|Mixed Platforms.Build.0 = Release|Win32

‎include/LTS/SecurityFtdcTraderApi.h

+75-6
Original file line numberDiff line numberDiff line change
@@ -81,12 +81,27 @@ class CSecurityFtdcTraderSpi
8181
///请求查询行情响应
8282
virtual void OnRspQryDepthMarketData(CSecurityFtdcDepthMarketDataField *pDepthMarketData, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
8383

84-
///请求查询投资者持仓明细响应
85-
virtual void OnRspQryInvestorPositionDetail(CSecurityFtdcInvestorPositionDetailField *pInvestorPositionDetail, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
86-
8784
///请求查询债券利息响应
8885
virtual void OnRspQryBondInterest(CSecurityFtdcBondInterestField *pBondInterest, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
8986

87+
///请求查询市值配售信息响应
88+
virtual void OnRspQryMarketRationInfo(CSecurityFtdcMarketRationInfoField *pMarketRationInfo, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
89+
90+
///请求查询合约手续费率响应
91+
virtual void OnRspQryInstrumentCommissionRate(CSecurityFtdcInstrumentCommissionRateField *pInstrumentCommissionRate, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
92+
93+
///请求查询ETF合约响应
94+
virtual void OnRspQryETFInstrument(CSecurityFtdcETFInstrumentField *pETFInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
95+
96+
///请求查询ETF股票篮响应
97+
virtual void OnRspQryETFBasket(CSecurityFtdcETFBasketField *pETFBasket, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
98+
99+
///请求查询OF合约响应
100+
virtual void OnRspQryOFInstrument(CSecurityFtdcOFInstrumentField *pOFInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
101+
102+
///请求查询SF合约响应
103+
virtual void OnRspQrySFInstrument(CSecurityFtdcSFInstrumentField *pSFInstrument, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
104+
90105
///请求查询报单响应
91106
virtual void OnRspQryOrder(CSecurityFtdcOrderField *pOrder, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
92107

@@ -107,6 +122,33 @@ class CSecurityFtdcTraderSpi
107122

108123
///报单操作错误回报
109124
virtual void OnErrRtnOrderAction(CSecurityFtdcOrderActionField *pOrderAction, CSecurityFtdcRspInfoField *pRspInfo) {};
125+
126+
///Liber发起出金应答
127+
virtual void OnRspFundOutByLiber(CSecurityFtdcInputFundTransferField *pInputFundTransfer, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
128+
129+
///Liber发起出金通知
130+
virtual void OnRtnFundOutByLiber(CSecurityFtdcFundTransferField *pFundTransfer) {};
131+
132+
///Liber发起出金错误回报
133+
virtual void OnErrRtnFundOutByLiber(CSecurityFtdcInputFundTransferField *pInputFundTransfer, CSecurityFtdcRspInfoField *pRspInfo) {};
134+
135+
///银行发起入金通知
136+
virtual void OnRtnFundInByBank(CSecurityFtdcFundTransferField *pFundTransfer) {};
137+
138+
///资金转账查询应答
139+
virtual void OnRspQryFundTransferSerial(CSecurityFtdcFundTransferField *pFundTransfer, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
140+
141+
///资金内转应答
142+
virtual void OnRspFundInterTransfer(CSecurityFtdcFundInterTransferField *pFundInterTransfer, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
143+
144+
///资金内转流水查询应答
145+
virtual void OnRspQryFundInterTransferSerial(CSecurityFtdcFundInterTransferSerialField *pFundInterTransferSerial, CSecurityFtdcRspInfoField *pRspInfo, int nRequestID, bool bIsLast) {};
146+
147+
///资金内转流水通知
148+
virtual void OnRtnFundInterTransferSerial(CSecurityFtdcFundInterTransferSerialField *pFundInterTransferSerial) {};
149+
150+
///资金内转错误回报
151+
virtual void OnErrRtnFundInterTransfer(CSecurityFtdcFundInterTransferField *pFundInterTransfer, CSecurityFtdcRspInfoField *pRspInfo) {};
110152
};
111153

112154
#ifndef WINDOWS
@@ -203,12 +245,27 @@ class TRADER_API_EXPORT CSecurityFtdcTraderApi
203245
///请求查询行情
204246
virtual int ReqQryDepthMarketData(CSecurityFtdcQryDepthMarketDataField *pQryDepthMarketData, int nRequestID) = 0;
205247

206-
///请求查询投资者持仓明细
207-
virtual int ReqQryInvestorPositionDetail(CSecurityFtdcQryInvestorPositionDetailField *pQryInvestorPositionDetail, int nRequestID) = 0;
208-
209248
///请求查询债券利息
210249
virtual int ReqQryBondInterest(CSecurityFtdcQryBondInterestField *pQryBondInterest, int nRequestID) = 0;
211250

251+
///请求查询市值配售信息
252+
virtual int ReqQryMarketRationInfo(CSecurityFtdcQryMarketRationInfoField *pQryMarketRationInfo, int nRequestID) = 0;
253+
254+
///请求查询合约手续费率
255+
virtual int ReqQryInstrumentCommissionRate(CSecurityFtdcQryInstrumentCommissionRateField *pQryInstrumentCommissionRate, int nRequestID) = 0;
256+
257+
///请求查询ETF合约
258+
virtual int ReqQryETFInstrument(CSecurityFtdcQryETFInstrumentField *pQryETFInstrument, int nRequestID) = 0;
259+
260+
///请求查询ETF股票篮
261+
virtual int ReqQryETFBasket(CSecurityFtdcQryETFBasketField *pQryETFBasket, int nRequestID) = 0;
262+
263+
///请求查询OF合约
264+
virtual int ReqQryOFInstrument(CSecurityFtdcQryOFInstrumentField *pQryOFInstrument, int nRequestID) = 0;
265+
266+
///请求查询SF合约
267+
virtual int ReqQrySFInstrument(CSecurityFtdcQrySFInstrumentField *pQrySFInstrument, int nRequestID) = 0;
268+
212269
///请求查询报单
213270
virtual int ReqQryOrder(CSecurityFtdcQryOrderField *pQryOrder, int nRequestID) = 0;
214271

@@ -217,6 +274,18 @@ class TRADER_API_EXPORT CSecurityFtdcTraderApi
217274

218275
///请求查询投资者持仓
219276
virtual int ReqQryInvestorPosition(CSecurityFtdcQryInvestorPositionField *pQryInvestorPosition, int nRequestID) = 0;
277+
278+
///Liber发起出金请求
279+
virtual int ReqFundOutByLiber(CSecurityFtdcInputFundTransferField *pInputFundTransfer, int nRequestID) = 0;
280+
281+
///资金转账查询请求
282+
virtual int ReqQryFundTransferSerial(CSecurityFtdcQryFundTransferSerialField *pQryFundTransferSerial, int nRequestID) = 0;
283+
284+
///资金内转请求
285+
virtual int ReqFundInterTransfer(CSecurityFtdcFundInterTransferField *pFundInterTransfer, int nRequestID) = 0;
286+
287+
///资金内转流水查询请求
288+
virtual int ReqQryFundInterTransferSerial(CSecurityFtdcQryFundInterTransferSerialField *pQryFundInterTransferSerial, int nRequestID) = 0;
220289
protected:
221290
~CSecurityFtdcTraderApi(){};
222291
};

0 commit comments

Comments
 (0)
Please sign in to comment.