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