Category Description
Highest and lowest prices and respective dates over contract's lifetime not including current session.
Category Identification
| pNxCoreMessage->coreData.Category.pnxStringCategory->Atom | 15 | 
| pNxCoreMessage->coreData.Category.pnxStringCategory->String | ContractHiLo | 
Update Time and Frequency
| Approximate Time | Info | 
|---|---|
| 00:00 AM | Information from previous session | 
| 05:15 AM | Current session information | 
| Occasional Updates | Occasional updates throughout the day | 
Category Fields | 4
| Index | FieldName | FieldType | C Code | Info | 
|---|---|---|---|---|
| 0 | HighDate | NxCFT_DATE | pnxFields[0].data.nxDate | Date of the high price | 
| 1 | LowDate | NxCFT_DATE | pnxFields[1].data.nxDate | Date of the low price | 
| 2 | High | NxCFT_PRICE | pnxFields[2].data.nxPrice | The high price | 
| 3 | Low | NxCFT_PRICE | pnxFields[3].data.nxPrice | The low price | 
Code Sample from CategoryDumper project:
void onNxCoreCategory_15(const NxCoreMessage *pNxCoreMsg)
{
     NxCategoryField *pField;
			 
     // Print the category num and the Symbol
     PrintSymbol(pNxCoreMsg); 			 
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[0];		 
     if (pField->Set)
         printf("High Date: %02d/%02d/%d \n",
                pField->data.nxDate.Month,
                pField->data.nxDate.Day,
                pField->data.nxDate.Year); 			 
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[1];		 
     if (pField->Set)
         printf("Low Date: %02d/%02d/%d \n",
                pField->data.nxDate.Month,
                pField->data.nxDate.Day,
                pField->data.nxDate.Year); 			 
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[2];
     if (pField->Set)
         printf("High: %0.4f \n",
                pfNxCorePriceToDouble(pField->data.nxPrice.Price,
                                      pField->data.nxPrice.PriceType)); 			 
 			 
     pField=&pNxCoreMsg->coreData.Category.pnxFields[3];
     if (pField->Set)
         printf("Low: %0.4f \n",
                pfNxCorePriceToDouble(pField->data.nxPrice.Price,
                                      pField->data.nxPrice.PriceType));     
}