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


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

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


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

示例1: processOrder

void BookPublisher::processOrder () 
{   
    MamdaOrderBookPriceLevel* level = NULL;
    MamdaOrderBookEntry*      entry = NULL;
    order thisOrder = orderArray[mOrderCount];
    mBookTime.setToNow();

    if (mProcessEntries)
    {          
        switch (thisOrder.entAction)
        {
            case ENTDELETE:
            {
                level = mBook->getLevelAtPrice (thisOrder.price, thisOrder.side);
                
                if (level)
                    entry = level->findEntry (thisOrder.entId);
                if (entry)
                    mBook->deleteEntry (entry, mBookTime, NULL);
                break;
            }
            case ENTADD:
            {
                mBook->addEntry (thisOrder.entId, thisOrder.entSize,
                                 thisOrder.price, thisOrder.side,
                                 mBookTime, NULL, NULL);
                break;
            }
            case ENTUPDATE:
            {
                entry = level->findEntry (thisOrder.entId);
                mBook->updateEntry (entry, thisOrder.entSize,
                                    mBookTime, NULL);
                break;
            }
        }
    }
    else
    {
        level = mBook->getLevelAtPrice(thisOrder.price, thisOrder.side);
        if (level)
        {
            level->setSizeChange (thisOrder.sizeChange);
            level->setPrice      (thisOrder.price);
            level->setSize       (thisOrder.volume);
            level->setNumEntries (thisOrder.numEntries);           
            level->setTime       (mBookTime);
            level->setAction     (thisOrder.plAction);
        }
        else
        {
            level = new MamdaOrderBookPriceLevel();
            level->setSide       (thisOrder.side);
            level->setSizeChange (thisOrder.sizeChange);
            level->setPrice      (thisOrder.price);
            level->setSize       (thisOrder.volume);
            level->setNumEntries (thisOrder.numEntries);           
            level->setTime       (mBookTime);
            level->setAction     (thisOrder.plAction);                
        }
        
        switch (thisOrder.plAction)
        {
            case PLDELETE:
                mBook->deleteLevel(*level);
                break;
            case PLADD:
                mBook->addLevel(*level);
                break;
            case PLUPDATE:
                mBook->updateLevel(*level);
                break;
        }
    }
    mOrderCount++;
}
开发者ID:reed-jpm-alpert,项目名称:OpenMAMA.233,代码行数:76,代码来源:bookpublisher.cpp

示例2: applyLevel

    /**
     * Helper function to apply a MamdaOrderBookPriceLevel to
     * a MamdaOrderBook
     */
    void applyLevel (MamdaOrderBookPriceLevel& level)
    {
        if(mOrderBook.getQuality() == MAMA_QUALITY_OK)
        {
            switch(level.getAction())
            {
            case MamdaOrderBookPriceLevel::MAMDA_BOOK_ACTION_UPDATE :
                try
                {
                    /*
                     * When in the order book the only Action which makes sense is
                     * ADD
                     */
                    level.setAction(MamdaOrderBookPriceLevel::MAMDA_BOOK_ACTION_ADD);

                    mOrderBook.updateLevel(level);
                }
                catch ( MamdaOrderBookException &e)
                {
                    //Exception is thrown when updating level which does not exist
                    //level will be added so handled internally
                }
                break;
            case MamdaOrderBookPriceLevel::MAMDA_BOOK_ACTION_ADD :
                try
                {
                    mLevelPtr = new MamdaOrderBookPriceLevel(level);
                    /*
                     * When in the order book the only Action which makes sense is
                     * ADD
                     */
                    mLevelPtr->setAction(MamdaOrderBookPriceLevel::MAMDA_BOOK_ACTION_ADD);

                    mOrderBook.addLevel(*mLevelPtr);
                    //ownership of ptr passed to MamdaOrderBook
                }
                catch ( MamdaOrderBookException &e)
                {
                    //Exception is thrown if adding a level already in book
                    //handled internally by updating level
                    delete mLevelPtr;
                }
                break;
            case MamdaOrderBookPriceLevel::MAMDA_BOOK_ACTION_DELETE :
                try
                {
                    mOrderBook.deleteLevel(mReusablePriceLevel);
                }
                catch (MamdaOrderBookException &e)
                {
                    //Thrown if the level cannot be found in the book
                    //No need for handling as level is deleted
                }
                break;
            default:
                cout << "atomicbookbuilder: Unknown price level ["
                     << level.getAction() << "]\n";
                break;
            }

            mLevelPtr = NULL;
        }
    }
开发者ID:OpenMAMA,项目名称:OpenMAMA,代码行数:67,代码来源:atomicbookbuilder.cpp


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