Skip to content

Commit 9dd9412

Browse files
committed
飞马行情支持
1 parent 169b5b8 commit 9dd9412

22 files changed

Lines changed: 476 additions & 456 deletions

File tree

QuantBox.XAPI/Callback/BaseApi.cs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -184,7 +184,7 @@ public virtual void Connect()
184184

185185
proxy = new Proxy(_Path1);
186186

187-
Handle = proxy.XRequest((byte)RequestType.Create, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, 0, IntPtr.Zero, 0, IntPtr.Zero, 0);
187+
Handle = new IntPtr((long)proxy.XRequest((byte)RequestType.Create, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, 0, IntPtr.Zero, 0, IntPtr.Zero, 0));
188188

189189
// 将API与队列进行绑定
190190
proxy.XRequest((byte)RequestType.Register, Handle, IntPtr.Zero, 0, 0, _Queue.Handle, 0, IntPtr.Zero, 0, IntPtr.Zero, 0);
@@ -243,7 +243,7 @@ internal virtual void Disconnect()
243243

244244
}
245245

246-
private IntPtr _OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
246+
private ulong _OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
247247
{
248248
// 队列过来的消息,如何处理?
249249
switch((ResponeType)type)
@@ -258,12 +258,12 @@ private IntPtr _OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1,
258258
return OnRespone(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size2, ptr3, size3);
259259
}
260260

261-
return IntPtr.Zero;
261+
return 0;
262262
}
263263

264-
protected virtual IntPtr OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
264+
protected virtual ulong OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
265265
{
266-
return IntPtr.Zero;
266+
return 0;
267267
}
268268

269269
private void _OnConnectionStatus(double double1, IntPtr ptr1, int size1)

QuantBox.XAPI/Callback/MarketDataApi.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,7 +85,7 @@ public virtual void Unsubscribe(string szInstrument, string szExchange)
8585
}
8686
#endregion
8787

88-
protected override IntPtr OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
88+
protected override ulong OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
8989
{
9090
switch ((ResponeType)type)
9191
{
@@ -96,7 +96,7 @@ protected override IntPtr OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, doubl
9696
break;
9797
}
9898

99-
return IntPtr.Zero;
99+
return 0;
100100
}
101101

102102
private void _OnRtnDepthMarketData(IntPtr ptr1)

QuantBox.XAPI/Callback/Queue.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public class Queue :IDisposable
1515
public Queue(string path)
1616
{
1717
proxy = new Proxy(path);
18-
Handle = proxy.XRequest((byte)RequestType.Create, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, 0, IntPtr.Zero, 0, IntPtr.Zero, 0);
18+
Handle = new IntPtr((long)proxy.XRequest((byte)RequestType.Create, IntPtr.Zero, IntPtr.Zero, 0, 0, IntPtr.Zero, 0, IntPtr.Zero, 0, IntPtr.Zero, 0));
1919
}
2020

2121
~Queue()

QuantBox.XAPI/Callback/TraderApi.cs

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ public void ReqQrySettlementInfo(string szTradingDay)
5151
Marshal.FreeHGlobal(szTradingDayPtr);
5252
}
5353

54-
public string SendOrder(int OrderRef, ref OrderField order1, ref long ret)
54+
public string SendOrder(int OrderRef, ref OrderField order1, ref ulong ret)
5555
{
5656
int size = Marshal.SizeOf(typeof(OrderField));
5757

@@ -60,21 +60,20 @@ public string SendOrder(int OrderRef, ref OrderField order1, ref long ret)
6060
Marshal.StructureToPtr(order1, order1Ptr, false);
6161
//Marshal.StructureToPtr(order2, order2Ptr, false);
6262

63-
IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderInsert, Handle, IntPtr.Zero,
63+
ret = proxy.XRequest((byte)RequestType.ReqOrderInsert, Handle, IntPtr.Zero,
6464
OrderRef, 0,
6565
order1Ptr, size, IntPtr.Zero, 0, IntPtr.Zero, 0);
6666

6767
Marshal.FreeHGlobal(order1Ptr);
6868
//Marshal.FreeHGlobal(order2Ptr);
6969

70-
ret = ptr.ToInt64();
7170
if (ret <= 0)
7271
return null;
7372

74-
return string.Format("{0}:{1}",UserLoginField.SessionID,ptr);
73+
return string.Format("{0}:{1}",UserLoginField.SessionID,ret);
7574
}
7675

77-
public string SendOrder(int OrderRef, ref OrderField order1, ref OrderField order2, ref long ret)
76+
public string SendOrder(int OrderRef, ref OrderField order1, ref OrderField order2, ref ulong ret)
7877
{
7978
int size = Marshal.SizeOf(typeof(OrderField));
8079

@@ -83,30 +82,29 @@ public string SendOrder(int OrderRef, ref OrderField order1, ref OrderField orde
8382
Marshal.StructureToPtr(order1, order1Ptr, false);
8483
Marshal.StructureToPtr(order2, order2Ptr, false);
8584

86-
IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderInsert, Handle, IntPtr.Zero,
85+
ret = proxy.XRequest((byte)RequestType.ReqOrderInsert, Handle, IntPtr.Zero,
8786
OrderRef, 0,
8887
order1Ptr, size, order2Ptr, size, IntPtr.Zero, 0);
8988

9089
Marshal.FreeHGlobal(order1Ptr);
9190
Marshal.FreeHGlobal(order2Ptr);
9291

93-
ret = ptr.ToInt64();
9492
if (ret <= 0)
9593
return null;
9694

97-
return string.Format("{0}:{1}", UserLoginField.SessionID, ptr);
95+
return string.Format("{0}:{1}", UserLoginField.SessionID, ret);
9896
}
9997

100-
public long CancelOrder(string szId)
98+
public ulong CancelOrder(string szId)
10199
{
102100
IntPtr szIdPtr = Marshal.StringToHGlobalAnsi(szId);
103101

104-
IntPtr ptr = proxy.XRequest((byte)RequestType.ReqOrderAction, Handle, IntPtr.Zero, 0, 0,
102+
ulong ret = proxy.XRequest((byte)RequestType.ReqOrderAction, Handle, IntPtr.Zero, 0, 0,
105103
szIdPtr, 0, IntPtr.Zero, 0, IntPtr.Zero, 0);
106104

107105
Marshal.FreeHGlobal(szIdPtr);
108106

109-
return ptr.ToInt64();
107+
return ret;
110108
}
111109

112110
public string SendQuote(ref OrderField order1, ref OrderField order2)
@@ -137,7 +135,7 @@ public void CancelQuote(string szId)
137135
Marshal.FreeHGlobal(szIdPtr);
138136
}
139137

140-
protected override IntPtr OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
138+
protected override ulong OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
141139
{
142140
switch ((ResponeType)type)
143141
{
@@ -160,7 +158,7 @@ protected override IntPtr OnRespone(byte type, IntPtr pApi1, IntPtr pApi2, doubl
160158
break;
161159
}
162160

163-
return IntPtr.Zero;
161+
return 0;
164162
}
165163

166164
private void _OnRspQryInstrument(IntPtr ptr1,int size1, double double1)

QuantBox.XAPI/Program.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,9 @@ static void OnRtnTrade(object sender, ref TradeField trade)
6060

6161
static void Main(string[] args)
6262
{
63+
UIntPtr a = new UIntPtr(456);
64+
Console.WriteLine(a);
65+
return;
6366
test_CTP_Main(args);
6467
}
6568

QuantBox.XAPI/Proxy.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace QuantBox.XAPI
88
{
9-
public delegate IntPtr XCall(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3);
9+
public delegate ulong XCall(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3);
1010

1111
public class Proxy
1212
{
@@ -61,17 +61,17 @@ protected virtual void Dispose(bool disposing)
6161
//base.Dispose(disposing);
6262
}
6363

64-
public IntPtr XRequest(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
64+
public ulong XRequest(byte type, IntPtr pApi1, IntPtr pApi2, double double1, double double2, IntPtr ptr1, int size1, IntPtr ptr2, int size2, IntPtr ptr3, int size3)
6565
{
6666
if (_XRequest == null)
6767
{
6868
if (_Invoke == null)
69-
return IntPtr.Zero;
69+
return 0;
7070

7171
//_XRequest = (XCall)_Invoke.Invoke("_XRequest@52", typeof(XCall));
7272
_XRequest = (XCall)_Invoke.Invoke("XRequest", typeof(XCall));
7373
if (_XRequest == null)
74-
return IntPtr.Zero;
74+
return 0;
7575
}
7676
return _XRequest(type, pApi1, pApi2, double1, double2, ptr1, size1, ptr2, size3, ptr3, size3);
7777
}

QuantBox.XAPI/QuantBox.XAPI.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
66
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
77
<ProjectGuid>{6AA065F5-2E4A-4112-A3AE-1F75CAE42FFB}</ProjectGuid>
8-
<OutputType>Exe</OutputType>
8+
<OutputType>Library</OutputType>
99
<AppDesignerFolder>Properties</AppDesignerFolder>
1010
<RootNamespace>QuantBox.XAPI</RootNamespace>
1111
<AssemblyName>QuantBox.XAPI</AssemblyName>

QuantBox_CTP_Quote/main.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ inline CMdUserApi* GetApi(void* pApi)
99
return static_cast<CMdUserApi*>(pApi);
1010
}
1111

12-
void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3)
12+
long long __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3)
1313
{
1414
RequestType rt = (RequestType)type;
1515
if (rt == RequestType::Create)
1616
{
17-
return new CMdUserApi();
17+
return (long long)new CMdUserApi();
1818
}
1919

2020
if (pApi1 == nullptr)
2121
{
22-
return nullptr;
22+
return 0;
2323
}
2424

2525
CMdUserApi* pApi = GetApi(pApi1);
@@ -28,12 +28,12 @@ void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, do
2828
{
2929
case RequestType::Release:
3030
delete pApi;
31-
return nullptr;
31+
return 0;
3232
case RequestType::Register:
3333
pApi->Register(ptr1);
3434
break;
3535
case RequestType::Config:
36-
return (void*)pApi->Config((ConfigInfoField*)ptr1);
36+
return (long long)pApi->Config((ConfigInfoField*)ptr1);
3737
break;
3838
case RequestType::Connect:
3939
pApi->Connect((const char*)ptr3, (ServerInfoField*)ptr1, (UserInfoField*)ptr2);
@@ -58,5 +58,5 @@ void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, do
5858
break;
5959
}
6060

61-
return pApi1;
61+
return (long long)pApi1;
6262
}

QuantBox_CTP_Trade/TraderApi.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,7 @@ int CTraderApi::ReqOrderInsert(
605605

606606
OrderField* pField = new OrderField();
607607
memcpy(pField, pOrder1, sizeof(OrderField));
608+
strcpy(pField->ID, orderId);
608609
m_id_platform_order.insert(pair<string, OrderField*>(orderId, pField));
609610
}
610611
}
@@ -1391,8 +1392,7 @@ void CTraderApi::OnOrder(CThostFtdcOrderField *pOrder)
13911392

13921393
// 保存SysID用于定义成交回报与订单
13931394
sprintf(orderSydId, "%s:%s", pOrder->ExchangeID, pOrder->OrderSysID);
1394-
//m_sysId_orderId.insert(pair<string, string>(string(orderSydId), string(orderId)));
1395-
m_sysId_orderId[orderSydId] = orderId;
1395+
m_sysId_orderId.insert(pair<string, string>(orderSydId, orderId));
13961396
}
13971397

13981398
{

QuantBox_CTP_Trade/main.cpp

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,17 +9,17 @@ inline CTraderApi* GetApi(void* pApi)
99
return static_cast<CTraderApi*>(pApi);
1010
}
1111

12-
void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3)
12+
long long __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, double double2, void* ptr1, int size1, void* ptr2, int size2, void* ptr3, int size3)
1313
{
1414
RequestType rt = (RequestType)type;
1515
if (rt == RequestType::Create)
1616
{
17-
return new CTraderApi();
17+
return (long long)new CTraderApi();
1818
}
1919

2020
if (pApi1 == nullptr)
2121
{
22-
return nullptr;
22+
return 0;
2323
}
2424

2525
CTraderApi* pApi = GetApi(pApi1);
@@ -28,7 +28,7 @@ void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, do
2828
{
2929
case Release:
3030
delete pApi;
31-
return nullptr;
31+
return 0;
3232
case Register:
3333
pApi->Register(ptr1);
3434
break;
@@ -50,21 +50,21 @@ void* __stdcall XRequest(char type, void* pApi1, void* pApi2, double double1, do
5050
case ReqOrderInsert:
5151
if (double2 == 0)
5252
{
53-
return (void*)pApi->ReqOrderInsert((int)double1, (OrderField*)ptr1, (OrderField*)ptr2);
53+
return (long long)pApi->ReqOrderInsert((int)double1, (OrderField*)ptr1, (OrderField*)ptr2);
5454
}
5555
else
5656
{
57-
return (void*)pApi->ReqParkedOrderInsert((int)double1, (OrderField*)ptr1, (OrderField*)ptr2);
57+
return (long long)pApi->ReqParkedOrderInsert((int)double1, (OrderField*)ptr1, (OrderField*)ptr2);
5858
}
5959
case ReqQuoteInsert:
60-
return (void*)pApi->ReqQuoteInsert((int)double1, (OrderField*)ptr1, (OrderField*)ptr2);
60+
return (long long)pApi->ReqQuoteInsert((int)double1, (OrderField*)ptr1, (OrderField*)ptr2);
6161
case ReqOrderAction:
62-
return (void*)pApi->ReqOrderAction((const char*)ptr1);
62+
return (long long)pApi->ReqOrderAction((const char*)ptr1);
6363
break;
6464
default:
6565
// 通知
6666
break;
6767
}
6868

69-
return pApi1;
69+
return (long long)pApi1;
7070
}

0 commit comments

Comments
 (0)