API Documentation

Category Description

These messages indicate the Limit Up/Limit Down price bands used to prevent trades in NMS stocks outside a price range. Make sure to use the Type field when processing the data.

Category Identification

pNxCoreMessage->coreData.Category.pnxStringCategory->Atom 35
pNxCoreMessage->coreData.Category.pnxStringCategory->String LimitUpLimitDown

Update Time and Frequency

Approximate Time Info
09:30 These messages will start at market open.
16:00 These messages will end at market close.
Updates Throughout the Day These messages will update throughout the day based on how much invididual stock prices are moving.

Category Fields | 32

Index FieldName FieldType C Code Info
0 Type NxCFT_32BIT pnxFields[0].data.i32Bit LULD Type
1 LimitUp NxCFT_PRICE pnxFields[1].data.nxPrice Limit Up price.
2 LimitDn NxCFT_PRICE pnxFields[2].data.nxPrice Limit Down price.

Code Sample from CategoryDumper project:

// Added to NxCoreAPI.h with v2.5.472 

// LimitUp/LimitDown codes
#define LULD_BND_EVT_NONE	  0x00        // No Indicator Provided
#define LULD_BND_EVT_OPENING	  0x01        // Opening Update
#define LULD_BND_EVT_INTRADAY	  0x02        // Intra-day Update
#define LULD_BND_EVT_RESTATED	  0x03        // Restated Value
#define LULD_BND_EVT_SUSPENDED	  0x04        // Suspended during Trading Halt or Pause
#define LULD_BND_EVT_REOPENING	  0x05        // Re-Opening Update
#define LULD_BND_EVT_OUTSIDE_HRS  0x06        // Outside Price Band Rule Hours

void onNxCoreCategory_35(const NxCoreMessage *pNxCoreMsg)
{
     NxCategoryField *pField;
			 
     // Print the category num and the Symbol
     PrintSymbol(pNxCoreMsg);
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[0];
     if (pField->Set)	{		 
         switch(pField->data.i32Bit)
         {
                case LULD_BND_EVT_NONE:       
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (No Indicator Provided)",pField->data.i32Bit);
                         break;
                case LULD_BND_EVT_OPENING:    
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (Opening Update)",pField->data.i32Bit);
                         break;
                 case LULD_BND_EVT_INTRADAY:   
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (Intra-day Update)",pField->data.i32Bit);
                         break;
                 case LULD_BND_EVT_RESTATED:   
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (Restated Value)",pField->data.i32Bit);
                         break;
                 case LULD_BND_EVT_SUSPENDED:  
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (Suspended during Trading Halt or Pause)",pField->data.i32Bit);
                         break;
                 case LULD_BND_EVT_REOPENING:  
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (Re-Opening Update)",pField->data.i32Bit);
                         break;
                 case LULD_BND_EVT_OUTSIDE_HRS:
                         sprintf(pAppUserData->GlobalStr,"LULD Code: %d (Outside Price Band Rule Hours)",pField->data.i32Bit);
                         break;
        }
     }
		 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[1];
     if (pField->Set)
         printf("Limit Up: %0.4f \n",
                pfNxCorePriceToDouble(pField->data.nxPrice.Price,
                                      pField->data.nxPrice.PriceType));
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[2];
     if (pField->Set)
         printf("Limit Down: %0.4f \n",
                pfNxCorePriceToDouble(pField->data.nxPrice.Price,
                                      pField->data.nxPrice.PriceType));
}