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));
}