当前位置: 首页>>代码示例>>C++>>正文


C++ MamdaOrderBook::findLevel方法代码示例

本文整理汇总了C++中MamdaOrderBook::findLevel方法的典型用法代码示例。如果您正苦于以下问题:C++ MamdaOrderBook::findLevel方法的具体用法?C++ MamdaOrderBook::findLevel怎么用?C++ MamdaOrderBook::findLevel使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在MamdaOrderBook的用法示例。


在下文中一共展示了MamdaOrderBook::findLevel方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: applyEntry

    /**
     * Helper function to apply a MamdaBookAtomicLevelEntry to
     * a MamdaOrderBook
     */
    void applyEntry (const MamdaBookAtomicLevelEntry& levelEntry)
    {
        MamdaOrderBookEntry::Action entryAction;

        if(mOrderBook.getQuality() == MAMA_QUALITY_OK)
        {
            entryAction = (MamdaOrderBookEntry::Action) levelEntry.getPriceLevelEntryAction();

            switch(entryAction)
            {
            case MamdaOrderBookEntry::MAMDA_BOOK_ACTION_UPDATE :
                try
                {
                    //get the price level by price
                    mLevelPtr = mOrderBook.findLevel(
                                    levelEntry.getPriceLevelPrice(),
                                    (MamdaOrderBookPriceLevel::Side) levelEntry.getPriceLevelSide());
                    if(mLevelPtr != NULL)
                    {
                        //get the entry by id
                        mEntryPtr = mLevelPtr->findEntry(levelEntry.getPriceLevelEntryId());

                        if(mEntryPtr != NULL)
                        {
                            mOrderBook.updateEntry(
                                mEntryPtr,
                                levelEntry.getPriceLevelEntrySize(),
                                levelEntry.getPriceLevelEntryTime(),
                                (MamdaOrderBookBasicDelta*) NULL);
                            break;
                        }
                    }
                    /*
                     * intentional fall through to add the entry if
                     * the entry or level cannot be found to update it
                     */
                }
                catch ( MamdaOrderBookInvalidEntry &e)
                {
                    cout<< "atomicbookbuilder: could not update entry.\n";
                    cout << "Caught MamdaOrderBookInvalidEntry [" << e.what() << "]\n";
                }
                catch (MamdaOrderBookException &e)
                {
                    cout<< "atomicbookbuilder: could not update entry.\n";
                    cout<< "Caught MamdaOrderBookException [" << e.what() << "[\n";
                }
            case MamdaOrderBookEntry::MAMDA_BOOK_ACTION_ADD :
                mEntryPtr = mOrderBook.addEntry(
                                levelEntry.getPriceLevelEntryId(),
                                levelEntry.getPriceLevelEntrySize(),
                                levelEntry.getPriceLevelPrice(),
                                (MamdaOrderBookPriceLevel::Side) levelEntry.getPriceLevelSide(),
                                levelEntry.getPriceLevelEntryTime(),
                                (const MamaSourceDerivative*) NULL,
                                (MamdaOrderBookBasicDelta*) NULL);

                mEntryPtr->setReason(
                    (MamdaOrderBookTypes::Reason)levelEntry.getPriceLevelEntryReason());
                break;
            case MamdaOrderBookEntry::MAMDA_BOOK_ACTION_DELETE :
                try
                {
                    //get the price level by price
                    mLevelPtr = mOrderBook.findLevel(
                                    levelEntry.getPriceLevelPrice(),
                                    (MamdaOrderBookPriceLevel::Side) levelEntry.getPriceLevelSide());
                    if(mLevelPtr != NULL)
                    {
                        //get the entry by id
                        mEntryPtr = mLevelPtr->findEntry(levelEntry.getPriceLevelEntryId());

                        if(mEntryPtr != NULL)
                            mOrderBook.deleteEntry(
                                mEntryPtr,
                                levelEntry.getPriceLevelEntryTime(),
                                (MamdaOrderBookBasicDelta*) NULL);
                    }
                }
                catch ( MamdaOrderBookInvalidEntry &e)
                {
                    cout<< "atomicbookbuilder: could not delete entry.\n";
                    cout << "Caught MamdaOrderBookInvalidEntry [" << e.what() << "]\n";
                }
                catch (MamdaOrderBookException &e)
                {
                    cout<< "atomicbookbuilder: could not delete entry.\n";
                    cout<< "Caught MamdaOrderBookException [" << e.what() << "[\n";
                }
                break;
            default:
                cout << "atomicbookbuilder: Unknown entry action ["
                     << (char)entryAction << "]\n";
                break;
            }

//.........这里部分代码省略.........
开发者ID:OpenMAMA,项目名称:OpenMAMA,代码行数:101,代码来源:atomicbookbuilder.cpp


注:本文中的MamdaOrderBook::findLevel方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。