API Documentation

Syntax


    typedef NxCoreCallback(__stdcall *NxCoreSetCallback) (NxCoreCallback nxCoreCallback);
    #define cszNxCoreSetCallback "sNxCoreSetCallback"

    int __stdcall SetCallback(NxCoreCallback nxCoreCallback);

Parameters

nxCoreCallback

Specifies the function to use as a callback from now on.

Return Value

Returns the old nxCoreCallback function

Example

Here's an example of switching callbacks

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include "NxCoreAPI.h"
#include "NxCoreAPI_Wrapper_C++.h"              
              
NxCoreClass NxCore;

void PrintSymbol(const NxCoreMessage *pNxCoreMsg)
{
    // If a valid option header 
    if (pNxCoreMsg->coreHeader.pnxOptionHdr)
    {
        // If pnxsDateAndStrike->String[1] == ' ', then this symbol is in new OSI format.     
        if (pNxCoreMsg->coreHeader.pnxOptionHdr->pnxsDateAndStrike->String[1]==' ')            
        {
        // Construct OSI symbol
        printf("Symbol: %s%02d%02d%02d%c%08d\n",               
               pNxCoreMsg->coreHeader.pnxStringSymbol->String,
               pNxCoreMsg->coreHeader.pnxOptionHdr->nxExpirationDate.Year-2000,
               pNxCoreMsg->coreHeader.pnxOptionHdr->nxExpirationDate.Month,
               pNxCoreMsg->coreHeader.pnxOptionHdr->nxExpirationDate.Day,
               (pNxCoreMsg->coreHeader.pnxOptionHdr->PutCall == 0) ? 'C' : 'P',
               pNxCoreMsg->coreHeader.pnxOptionHdr->strikePrice);
        }
        // Otherwise the symbol is in old OPRA format.
        else
        {
            printf("Symbol: %s%c%c\n",                   
                   pNxCoreMsg->coreHeader.pnxStringSymbol->String,
                   pNxCoreMsg->coreHeader.pnxOptionHdr->pnxsDateAndStrike->String[0],
                   pNxCoreMsg->coreHeader.pnxOptionHdr->pnxsDateAndStrike->String[1]);      
        }
    }
    // Else non-option, print symbol only
    else
        printf("Symbol: %s\n",pNxCoreMsg->coreHeader.pnxStringSymbol->String);              
}    

int __stdcall nxCoreCallback(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage)
{
    // normal stuff
    return NxCALLBACKRETURN_CONTINUE;
}

int __stdcall nxCoreCallbackInitialSpin(const NxCoreSystem* pNxCoreSys, const NxCoreMessage* pNxCoreMessage)
{
    switch (pNxCoreMessage->MessageType)
    {
        case NxMSG_SYMBOLSPIN:
            PrintSymbol(pNxCoreMessage);

            break;
        case NxMSG_STATUS:
            switch (pNxCoreSys->Status)
            {
                case NxCORESTATUS_SYMBOLSPIN:
                    if (pNxCoreSys->StatusData == NxCSSYMBOLSPIN_COMPLETE) {
                        NxCore.SetCallback(nxCoreCallback);

                        return NxCALLBACKRETURN_RESTART;
                    }

                    break;
            }
            break;
    }

    return NxCALLBACKRETURN_CONTINUE;
}

int main(int argc, char** argv)
{
    if (!NxCore.LoadNxCore("NxCoreAPI64.dll") &&
        !NxCore.LoadNxCore("NxCoreAPI.dll"))
    {
        printf("loading library failed\n");
        return -1;
    }
    NxCore.ProcessTape(argv[1], 0, NxCF_EXCLUDE_CRC_CHECK, 0, nxCoreCallbackInitialSpin);
    return 0;
}