Support Board
Date/Time: Tue, 26 Nov 2024 12:43:57 +0000
Post From: Problem with market depth desapearing
[2015-03-30 22:20:49] |
Sierra Chart Engineering - Posts: 104368 |
Post #19 has been updated. You cannot have any definite knowledge of the problem without looking at the Sierra Chart code which is actually quite simple. Please explain to me how this is an IB problem when everyone else's DOM is working exactly as it should be. This is a very vague and indirect, and impossible to directly defend against. What counts is the data being transmitted by TWS, and the logical processing of the data according to the TWS documentation.Seriously, are you trying to tell me that even in the workaround case (false) that totals drawing on top of other DOM levels is an IB issue? Yes of course. And we will say it again, the problem is on the Interactive Brokers side. It is caused by out of order data because of faulty transmission of market depth data from TWS.If there is a problem/bug on our side, do you see it below. This is how the market depth with Interactive Brokers is handled when not clearing out of order prices: UpdateDOMByCommand(BuySellEnum Side, int Level, int Operation, float Price, t_Volume Size, bool ClearOutOfOrderPrices)
{ if (Level < 0 || Level >= MAX_NUM_DOM_LEVELS) { _ASSERT(0); return; } s_SCDomStructure* DomToUpdate; if (Side == BSE_BUY) DomToUpdate = m_BasicData.BidDOM; else if (Side == BSE_SELL) DomToUpdate = m_BasicData.AskDOM; else return; switch (Operation) { case INSERT_DOM: { s_SCDomStructure TempDomStructure = DomToUpdate[Level]; for (int UpdateLevel = Level; UpdateLevel < MAX_NUM_DOM_LEVELS - 1; UpdateLevel++) { if (TempDomStructure.Price == 0) break; // no more DOM Levels Swap(DomToUpdate[UpdateLevel + 1], TempDomStructure); } DomToUpdate[Level].Price = Price; DomToUpdate[Level].Volume = Size; } break; case UPDATE_DOM: { DomToUpdate[Level].Price = Price; DomToUpdate[Level].Volume = Size; } break; case DELETE_DOM: { // Clear the single level memset(&DomToUpdate[Level], 0, sizeof(s_SCDomStructure)); for (int UpdateLevel = Level; UpdateLevel < MAX_NUM_DOM_LEVELS - 1; ++UpdateLevel) { DomToUpdate[UpdateLevel] = DomToUpdate[UpdateLevel+1]; // //if (DomToUpdate[UpdateLevel + 1].Price == 0) // break; // no more DOM Levels } //if (DomToUpdate[MAX_NUM_DOM_LEVELS - 1].Price != 0) { DomToUpdate[MAX_NUM_DOM_LEVELS - 1].Price = 0; DomToUpdate[MAX_NUM_DOM_LEVELS - 1].Volume = 0; } } break; } } Sierra Chart Support - Engineering Level Your definitive source for support. Other responses are from users. Try to keep your questions brief and to the point. Be aware of support policy: https://www.sierrachart.com/index.php?l=PostingInformation.php#GeneralInformation For the most reliable, advanced, and zero cost futures order routing, *change* to the Teton service: Sierra Chart Teton Futures Order Routing Date Time Of Last Edit: 2015-03-30 22:22:58
|