Quote from UDon'tKnowMe:
Unless I am reading this wrong it does apply to quote events?
http://sterlingfinancialsystems.com/documents/Documentation/ActiveX_API_Guide.pdf
Yep, looks like I had it wrong. Sorry about that.
Quote from UDon'tKnowMe:
Unless I am reading this wrong it does apply to quote events?
http://sterlingfinancialsystems.com/documents/Documentation/ActiveX_API_Guide.pdf
Quote from Shreddog:
I don't see why the exchange would matter in my case. I want to mass cancel 1800 orders. I don't care how long it takes for NYSE to confirm, I just want Sterling to send cancels on all of them immediately. To be clear it wasn't the confirms that took 3 minutes. Rather, after 3 minutes there were still orders Sterling hadn't gotten around to sending the cancel for.
Quote from UDon'tKnowMe:
I think I recall reading that Sterlings API only allows 30 orders per second, so maybe that could be why it took long for the 1,800 cancel messages to be sent?
Quote from Shreddog:
My best guess as to why having the Sterling platform do the cancels is so amazingly slow is that it waits for a cancel confirm before moving on to the next order? If so, that is completely idiotic.
Quote from bespoke:
What languages are you guys developing in? Anyone have quote bottlenecks with .NET languages?
The MDX case I mentioned earlier, what other instances does that happen? It was the first time I noticed something like that today. Generally I run 1 main ATS from open to close, and I load up a few others throughout the day dependent on time and situations. And I usually reregister the same quotes again in the new programs.
Quote from Shreddog:
I use VB.net 2003 and yes, now that you mention it, it does seem like quotes bottleneck on me, though I haven't quantified it. Why do you attribute the bottleneck to the .Net languages rather than the Sterling API itself?
Quote from bespoke:
Well, in C#.NET I can only receive up to about 700 quotes per second when using a counter in the QuoteUpdate event (and nothing but a counter in the event), whereas in VB6 I have received up to 5000 quotes per second and that also includes all the code I execute for my ATS, even including GUI changes.
So if COM servers with dual interfaces are better than those with IDispatch interfaces, where do you find dual interfaces? The answer is: almost everywhere. For example, youâll always get them from Visual Basic. In fact, there are only two development tools I know of that create dispatch-only ActiveX components. Unfortunately, one of them is probably the most common tool for creating components: the Microsoft Foundation Class (MFC) library. The other is the Delphi programming environment(version 2).
Generally, the bottleneck for controls is window creation and management. The bottleneck for COM EXE servers is transfer across process boundaries through a process called marshaling. The Performance sidebar in Chapter 10 illustrates that a Visual Basic DLL component compiled to native code is significantly faster than an equivalent C++ MFC component. Dual interfaces, not the programming language or the compiler, make the difference.
// *********************************************************************//
// Interface: ISTIOrderUpdateMsg
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {B9919086-687B-4117-9B2A-D0C9DFE34979}
// *********************************************************************//
ISTIOrderUpdateMsg = interface(IDispatch)
['{B9919086-687B-4117-9B2A-D0C9DFE34979}']
function Get_Action: WideString; safecall;
function Get_UserID: WideString; safecall;
// *********************************************************************//
// DispIntf: ISTIOrderUpdateMsgDisp
// Flags: (4416) Dual OleAutomation Dispatchable
// GUID: {B9919086-687B-4117-9B2A-D0C9DFE34979}
// *********************************************************************//
ISTIOrderUpdateMsgDisp = dispinterface
['{B9919086-687B-4117-9B2A-D0C9DFE34979}']
property Action: WideString readonly dispid 1;
property UserID: WideString readonly dispid 2;
