Support Board
Date/Time: Fri, 03 Apr 2026 02:44:29 +0000
DTC Binary Type 101 - TradeAccount Field Alignment
View Count: 14
| [2026-04-02 23:59:05] |
| User920074 - Posts: 1 |
|
I am using a Python client via DTC Binary (Type 101). I am receiving "Trade Account is empty" rejections. Message Log: Trade Account is empty | Symbol: MESM26_FUT_CME | TradeAccount: (unset) I have confirmed my LOGON_REQUEST (Type 1) successfully negotiates Integer_1 = 1 (Trading). In my SUBMIT_NEW_SINGLE_ORDER message, I am sending four 64-byte null-padded strings (Symbol, Exchange, ClientOrderID, TradeAccount) before the numerical fields. Does the DTC Server require the TradeAccount field in Type 101 to be a VLS field if the Logon used VLS, or does Type 101 strictly use the Fixed-Length Binary structure regardless of Logon encoding? |
| [2026-04-03 01:27:43] |
| Sierra_Chart Engineering - Posts: 23417 |
|
This is the data structure and those first four fields are not all 64 bytes. In the header file, check the value for each of the constant lengths: struct s_SubmitNewSingleOrder
{ static constexpr uint16_t MESSAGE_TYPE = SUBMIT_NEW_SINGLE_ORDER; uint16_t Size = sizeof(*this); uint16_t Type = MESSAGE_TYPE; char Symbol[SYMBOL_LENGTH] = {}; char Exchange[EXCHANGE_LENGTH] = {}; char TradeAccount[TRADE_ACCOUNT_LENGTH] = {}; char ClientOrderID[ORDER_ID_LENGTH] = {}; OrderTypeEnum OrderType = ORDER_TYPE_UNSET; BuySellEnum BuySell = BUY_SELL_UNSET; double Price1 = 0; double Price2 = 0; double Quantity = 0; TimeInForceEnum TimeInForce = TIF_UNSET; t_DateTime GoodTillDateTime = 0; uint8_t IsAutomatedOrder = 0; uint8_t IsParentOrder = 0; char FreeFormText[ORDER_FREE_FORM_TEXT_LENGTH] = {}; OpenCloseTradeEnum OpenOrClose = TRADE_UNSET; double MaxShowQuantity = 0; char Price1AsString[PRICE_STRING_LENGTH] = {}; char Price2AsString[PRICE_STRING_LENGTH] = {}; double IntendedPositionQuantity = 0; uint16_t GetMessageSize() const; void CopyFrom(void * p_SourceData); const char* GetSymbol(); void SetSymbol(const char* NewValue); const char* GetExchange(); void SetExchange(const char* NewValue); const char* GetTradeAccount(); void SetTradeAccount(const char* NewValue); const char* GetClientOrderID(); void SetClientOrderID(const char* NewValue); OrderTypeEnum GetOrderType() const; BuySellEnum GetBuySell() const; double GetPrice1() const; double GetPrice2() const; double GetQuantity() const; TimeInForceEnum GetTimeInForce() const; t_DateTime GetGoodTillDateTime() const; uint8_t GetIsAutomatedOrder() const; uint8_t GetIsParentOrder() const; const char* GetFreeFormText(); void SetFreeFormText(const char* NewValue); OpenCloseTradeEnum GetOpenOrClose() const; double GetMaxShowQuantity() const; const char* GetPrice1AsString(); void SetPrice1AsString(const char* NewValue); const char* GetPrice2AsString(); void SetPrice2AsString(const char* NewValue); double GetIntendedPositionQuantity() const; }; You definitely cannot mix encodings. You cannot use one type of encoding for one structure and another encoding for another structure. It does not work that way: Does the DTC Server require the TradeAccount field in Type 101 to be a VLS field if the Logon used VLS, or does Type 101 strictly use the Fixed-Length Binary structure regardless of Logon encoding? 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, use the Teton service: Sierra Chart Teton Futures Order Routing Date Time Of Last Edit: 2026-04-03 01:29:08
|
To post a message in this thread, you need to log in with your Sierra Chart account:
