Support Board
Date/Time: Mon, 20 Apr 2026 12:29:55 +0000
Post From: IBKR claims Deprecated TWS API version
| [2026-03-10 13:27:38] |
| User113810 - Posts: 21 |
|
Morning I have been back and forth with IBKR. I will offer an attempted synopsis. IBKR is correct that the Contract object is returned via distinct callback functions IBKR is correct that the position data is present IBKR is correct that the logs show the data being delivered But: IBKR does NOT guarantee consistency across callbacks IBKR does NOT normalize contract fields IBKR does NOT provide a canonical symbol format IBKR does NOT guarantee the same fields are populated every time Sierra Chart’s integration layer is negatively impacted due to potentially fragile string parsing and call back reconciliation Sierra Chart relies on string matching instead of conId Sierra Chart discards updates when symbol mapping fails (?) Sierra Chart does not normalize IBKR’s inconsistent formats (?) So yes — Sierra Chart can be at fault, but only because IBKR’s API design forces them into a fragile position. The suggestion was that Sierra Chart’s internal string matching architecture predates IBKR's API and uses canonical, stable symbol strings and was not designed to use: contract IDs instrument IDs GUIDs canonical contract objects The logs show inconsistent formats. Sierra does not like inconsistent formats. --------------------------------------------------------------------------------------------------- On the Sierra Support Board I have read Sierra expressed no interest in changing their internal architecture given IBKR is the apparently the only vendor that sends data in this manner. IBKR claims they pass information via callback function that will work. IBKR requests that I pass logs back to Sierra and "Suggest their technical team reach out to api@interactivebrokers.com if they need technical clarification from IBKR" From my perspective, given the random (and infrequent) nature of the issue, either Sierra or IBKR is NOT being consistent...agreed? And given the synopsis, seems like we will be at a standoff unless I change brokers. ------------------------------------------------------------------------------------------------------ What follows is the annotated (by IBKR) logs from a trading day WITH positions ERRORS and one WITHOUT. IBKR annotated message logs from trade date 20260217 (ERROR day) # The reqPositions function is called to subscribe to position updates. 07:59:41:139 (sync 07:59:40:281) <- [61;1;] # TRADE ID 35474 (FILLED, POSITION = 1) 09:40:28:577 (sync 09:40:28:121) <- [3;35474;;MNQ;FUT;202603;;;;CME ;;USD;;;;;BUY;1;LMT;24793.50;0 .0;DAY;;ACCT#REMOVED;;0;;1;;0;0;0 ;0;1;0;;;;;;;;;;0;;;3;;;0;;;0; 0;1.7976931348623157e+308;0;;;;;;0;;;;;;;;;;;;;;;;;; ;0;0;;;0;;0;0;0;0;;;;;;;;;;;;; ;;;;;;;;;;;20260217-14:40:28;] 09:40:28:923 (sync 09:40:28:467) -> [3;35474;Filled;1;0;24793.50;13 4978453;0;24793.50;0;;0] # TRADE ID 35475 (FILLED, POSITION = 2) 09:40:28:586 (sync 09:40:28:130) <- [3;35475;;MNQ;FUT;202603;;;;CME ;;USD;;;;;BUY;1;LMT;24793.50;0 .0;DAY;;ACCT#REMOVED;;0;;1;;0;0;0 ;0;1;0;;;;;;;;;;0;;;3;;;0;;;0; 0;1.7976931348623157e+308;0;;;;;;0;;;;;;;;;;;;;;;;;; ;0;0;;;0;;0;0;0;0;;;;;;;;;;;;; ;;;;;;;;;;;20260217-14:40:28;] 09:40:29:119 (sync 09:40:28:663) -> [3;35475;Filled;1;0;24793.50;13 4978454;0;24793.50;0;;0] # POSITION UPDATES RECEIVED - The position is shown as 1, and then 2, which is correct from observing the fills/executions above for two BUY orders 09:40:28:938 (sync 09:40:28:482) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;1;49587.62] 09:40:29:117 (sync 09:40:28:661) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;2;49587.31] 09:40:29:124 (sync 09:40:28:668) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;2;49587.619999999995] # TRADE ID 35476 (FILLED, POSITION = 1) 09:40:35:526 (sync 09:40:35:070) <- [3;35476;;MNQ;FUT;202603;;;;CME ;;USD;;;;;SELL;1;LMT;24809.25; 0.0;DAY;;ACCT#REMOVED;;0;;1;;0;0; 0;0;1;0;;;;;;;;;;0;;;3;;;0;;;0 ;0;1.7976931348623157e+308;0;;;;;;0;;;;;;;;;;;;;;;;;; ;0;0;;;0;;0;0;0;0;;;;;;;;;;;;; ;;;;;;;;;;;20260217-14:40:35;] 09:40:36:017 (sync 09:40:35:561) -> [3;35476;Filled;1;0;24809.25;13 4978455;0;24809.25;0;;0] # POSITION UPDATES RECEIVED - The position is shown as 1, which is correct 09:40:36:014 (sync 09:40:35:558) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;1;49587.619999999995] 09:40:36:023 (sync 09:40:35:567) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;1;49587.619999999995] 09:40:36:025 (sync 09:40:35:569) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;1;49587.619999999995] # TRADE ID 35479 (FILLED, POSITION = 0) 09:40:36:135 (sync 09:40:35:679) <- [3;35479;;MNQ;FUT;202603;;;;CME ;;USD;;;;;SELL;1;STP;0.0;24787 .50;DAY;;ACCT#REMOVED;;0;;1;;0;0; 0;0;1;0;;;;;;;;;;0;;;3;;;0;;;0 ;0;1.7976931348623157e+308;0;;;;;;0;;;;;;;;;;;;;;;;;; ;0;0;;;0;;0;0;0;0;;;;;;;;;;;;; ;;;;;;;;;;;20260217-14:40:36;] 09:40:46:508 (sync 09:40:46:052) -> [3;35479;Filled;1;0;24786.75;13 4978458;0;24786.75;0;;0] # POSITION UPDATES RECEIVED - The position is show as 0, which is correct 09:40:46:505 (sync 09:40:46:049) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;0;0.0] 09:40:46:511 (sync 09:40:46:055) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;0;0.0] 09:40:46:515 (sync 09:40:46:059) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;0;0.0] ---------------------------------------------------------------------------------------------------- IBKR annotated message logs from trade date 20260220 (NON-ERROR day) # TRADE 09:39:50:498 (sync 09:39:49:799) -> [3;35890;Filled;1;0;24835.00;34 6583279;0;24835.00;0;;0] # POSITION UPDATES RECEIVED (POSITION = 1 BECAUSE BUY) 09:39:50:503 (sync 09:39:49:804) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;1;49670.62] # TRADE 09:39:50:531 (sync 09:39:49:832) -> [3;35891;Filled;1;0;24836.25;34 6583280;0;24836.25;0;;0] # POSITION UPDATES RECEIVED (POSITION = 2 BECAUSE BUY) 09:39:50:535 (sync 09:39:49:836) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;2;49671.869999999995] # TRADE 09:40:00:098 (sync 09:39:59:399) -> [3;35892;Filled;1;0;24850.50;34 6583281;0;24850.50;0;;0] # POSITION UPDATES RECEIVED (POSITION = 1 BECAUSE SELL) 09:40:00:107 (sync 09:39:59:408) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;1;49671.869999999995] # TRADE 09:40:20:437 (sync 09:40:19:738) -> [3;35894;Filled;1;0;24866.75;34 6583283;0;24866.75;0;;0] # POSITION UPDATES RECEIVED (POSITION = 0 BECAUSE SELL) 09:40:20:448 (sync 09:40:19:749) -> [61;3;ACCT#REMOVED;750150193;MNQ;F UT;20260320;0.0;;2;;USD;MNQH6; MNQ;0;0.0] |
