SecurityTradingStatus (FIX tag 326)

intFIX 4.4FIX 4.2FIX 5.0 SP2

SecurityTradingStatus (tag 326) is an int field defined in FIX 4.4, FIX 4.2 and FIX 5.0 SP2. It appears in 1 message type, always optionally. It is an enumerated field with 22 defined values.

At a glance

Tag
326
Name
SecurityTradingStatus
Datatype
int
Dialects
FIX 4.4, FIX 4.2 and FIX 5.0 SP2
Messages
1
Valid values
22

What the specification says

FIX 4.4

Identifies the trading status applicable to the transaction

FIX 4.2

Identifies the trading status applicable to the transaction.

FIX 5.0 SP2

Identifies the trading status applicable to the security.

Descriptions are quoted from the FIX Orchestra sources under the Apache 2.0 licence.

A real message using tag 326

SecurityStatus · FIX 4.4
TagFieldWire valueMeaning
8BeginStringFIX.4.4
9BodyLength69
35MsgTypefSecurity Status
49SenderCompIDBOARTEAM
56TargetCompIDCOUNTERPARTY
34MsgSeqNum2
52SendingTime20240101-12:00:00.000
326SecurityTradingStatus1Opening Delay
10CheckSum244
Edit and decode it yourself

Shown with | separators for readability. On the wire FIX uses SOH (0x01), an invisible control byte — and because BodyLength and CheckSum are computed over the actual bytes, the two forms have different checksums. Both are valid and both decode here.

Open in the full decoder →

Generated from the FIX 4.4 dictionary and verified at build time: it parses and validates with no issues. Open the decoder to try your own message.

Valid values

A value outside this list is not a parse error — the message still decodes — but validate() reports it as validate/value-not-in-enum.

ValueMeaningSymbolic nameDialects
1Opening DelayOPENING_DELAY / OpeningDelayFIX 4.4, FIX 4.2, FIX 5.0 SP2
2Trading HaltTRADING_HALT / TradingHaltFIX 4.4, FIX 4.2, FIX 5.0 SP2
3ResumeRESUME / ResumeFIX 4.4, FIX 4.2, FIX 5.0 SP2
4No Open/No ResumeNO_OPEN_NO_RESUME / NoOpenFIX 4.4, FIX 4.2, FIX 5.0 SP2
5Price IndicationPRICE_INDICATION / PriceIndicationFIX 4.4, FIX 4.2, FIX 5.0 SP2
6Trading Range IndicationTRADING_RANGE_INDICATION / TradingRangeIndicationFIX 4.4, FIX 4.2, FIX 5.0 SP2
7Market Imbalance BuyMARKET_IMBALANCE_BUY / MarketImbalanceBuyFIX 4.4, FIX 4.2, FIX 5.0 SP2
8Market Imbalance SellMARKET_IMBALANCE_SELL / MarketImbalanceSellFIX 4.4, FIX 4.2, FIX 5.0 SP2
9Market On Close Imbalance BuyMARKET_ON_CLOSE_IMBALANCE_BUY / MarketOnCloseImbalanceBuyFIX 4.4, FIX 4.2, FIX 5.0 SP2
10Market On Close Imbalance SellMARKET_ON_CLOSE_IMBALANCE_SELL / MarketOnCloseImbalanceSellFIX 4.4, FIX 4.2, FIX 5.0 SP2
12No Market ImbalanceNO_MARKET_IMBALANCE / NoMarketImbalanceFIX 4.4, FIX 4.2, FIX 5.0 SP2
13No Market On Close ImbalanceNO_MARKET_ON_CLOSE_IMBALANCE / NoMarketOnCloseImbalanceFIX 4.4, FIX 4.2, FIX 5.0 SP2
14ITS Pre-OpeningITS_PRE_OPENING / ITSPreOpeningFIX 4.4, FIX 4.2, FIX 5.0 SP2
15New Price IndicationNEW_PRICE_INDICATION / NewPriceIndicationFIX 4.4, FIX 4.2, FIX 5.0 SP2
16Trade Dissemination TimeTRADE_DISSEMINATION_TIME / TradeDisseminationTimeFIX 4.4, FIX 4.2, FIX 5.0 SP2
17Ready to trade (start of session)READY_TO_TRADE / ReadyToTradeFIX 4.4, FIX 4.2, FIX 5.0 SP2
18Not Available for trading (end of session)NOT_AVAILABLE_FOR_TRADING / NotAvailableForTradingFIX 4.4, FIX 4.2, FIX 5.0 SP2
19Not Traded on this MarketNOT_TRADED_ON_THIS_MARKET / NotTradedOnThisMarketFIX 4.4, FIX 4.2, FIX 5.0 SP2
20Unknown or InvalidUNKNOWN_OR_INVALID / UnknownOrInvalidFIX 4.4, FIX 4.2, FIX 5.0 SP2
21Pre-OpenPRE_OPENFIX 4.4, FIX 5.0 SP2
22Opening RotationOPENING_ROTATIONFIX 4.4, FIX 5.0 SP2
23Fast MarketFAST_MARKETFIX 4.4, FIX 5.0 SP2
24Pre-Cross - system is in a pre-cross state allowing market to respond to either side of crossPRE_CROSS_SYSTEM_IS_IN_A_PRE_CROSS_STATE_ALLOWING_MARKET_TO_RESPOND_TO_EITHER_SIDE_OF_CROSSFIX 5.0 SP2
25Cross - system has crossed a percentage of the orders and allows market to respond prior to crossing remaining portionCROSS_SYSTEM_HAS_CROSSED_A_PERCENTAGE_OF_THE_ORDERS_AND_ALLOWS_MARKET_TO_RESPOND_PRIOR_TO_CROSSING_REMAINING_PORTIONFIX 5.0 SP2
26Post-closePOST_CLOSEFIX 5.0 SP2

Where tag 326 appears

Requiredness is a property of the message, not of the field: the same tag can be optional in one message and conditionally required in another.

MessageMsgTypeFIX 4.4FIX 4.2FIX 5.0 SP2Where in the message
MarketDataIncrementalRefreshXOptionalinside the MDIncGrp component
MarketDataSnapshotFullRefreshWOptionalinside the MDFullGrp component
SecurityStatusfOptionalOptionalOptionaldirectly on the message body

Wire format

A whole number, optionally signed. Leading zeros are legal on the wire and are preserved in the raw value. @boarteam/fix parses the value as a number and reports parse/invalid-int when it does not lex as one; the raw string is kept either way.

Read tag 326 in TypeScript

decode.tsts
import { createFixEngine } from "@boarteam/fix";import { dictionary } from "@boarteam/fix-dict-fix44";const fix = createFixEngine(dictionary);const { message, issues } = fix.parse(raw);const securityTradingStatus = message.fields[326]?.raw;// e.g. "1" — Opening Delay// The dictionary also carries the labels:const label = fix.dictionary  .fieldByTag(326)  ?.enumValues?.find((e) => e.value === securityTradingStatus)  ?.description;

Other int fields

Decode this in your own code

The same engine that produced the decoded example above is an Apache-2.0 npm package with zero runtime dependencies. It runs in Node and in the browser, and parse() returns problems as data instead of throwing.

npm i @boarteam/fix @boarteam/fix-dict-fix44