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