Login Page - Create Account

Support Board


Date/Time: Fri, 03 Apr 2026 04:24:52 +0000



DTC Binary Type 101 - TradeAccount Field Alignment

View Count: 17

[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:

Login

Login Page - Create Account