//.cc#include#include#include#include#include#include#include#include#include#include#include#include#includenamespacelongbeach{namespacesignals{SigBookBiasL2::SigBookBiasL2:SignalStateImpl,m_spCM),m_spBook//,m_volFilter),m_updatePeriod),m_lambda{ifLONGBEACH_THROW_ERROR_SS;ifLONGBEACH_THROW_ERROR_SS;//getticksize//{//boost::optionalentry=spCC->getCommoditiesSpecificationsMap->findByInstrument;//LONGBEACH_THROW_EXASSERT_SSX,"Noentryfoundininstrumentspecificationslistfor"<getTickSize;std::cout<<"ticksize:"<addBookListener;if.type==SRC_CRYPTO){spCC->getEventDistributor->subscribeEvents,m_spBook->getSource,CryptoOrderDepthMsg::kMType,m_spBook->getInstrument,PRIORITY_SIGNALS_Signal);}if.type==SRC_WIND_STOCK){spCC->getEventDistributor->subscribeEvents,m_spBook->getSource,WindStockMarketDataMsg::kMType,m_spBook->getInstrument,PRIORITY_SIGNALS_Signal);}if.type==SRC_MH_L{spCC->getEventDistributor->subscribeEvents,m_spBook->getSource,MhMdMsg::kMType,m_spBook->getInstrument,PRIORITY_SIGNALS_Signal);}if.type==SRC_GD_ETF){spCC->getEventDistributor->subscribeEvents,m_spBook->getSource,GdEtfQdMsg::kMType,m_spBook->getInstrument,PRIORITY_SIGNALS_Signal);}/*m_spCM->scheduleWakeupCall,m_spCM->getTime+m_updatePeriod,PRIORITY_CC_Misc);*/m_spCM->scheduleClockNotice,PRIORITY_SIGNALS_Signal);//setupstatenamesallocState;//allocState;}SigBookBiasL2::~SigBookBiasL2{}namespace{//boolcheckMhL2BookboolcheckMhL2Book{returnbook->isOK;//&&.getSpread<5*m_ticksize))//filteroutwidemarketprobablyduetobaddata)//&&.getSpread)<15*ticksize);//filteroutwidemarketprobablyduetobaddata)}}/*voidSigBookBiasL2::updateVolatility{//schedulenextcallm_spCM->scheduleWakeupCall,m_spCM->getTime+m_updatePeriod,PRIORITY_CC_Misc);if{if{doublemidpx=m_spBook->getMidPrice;doublemidpx0=m_prevMidPx.get;//doubleret=log*10000;doubleret=midpx-midpx0;m_volFilter.update,ret);//std::cout<<"updateVolatilitymid:"<getMidPrice;}}*/voidSigBookBiasL2::onMsg{//m_isOK=checkMhL2Book);m_isOK=checkMhL2Book;LONGBEACH_MESSAGE_SWITCH_BEGINLONGBEACH_MESSAGE_CASE//std::cout<getTime<<"onMsg"<<*market_data<getInstrument.sym)ifnotifySignalListeners);LONGBEACH_MESSAGE_CASE_ENDLONGBEACH_MESSAGE_CASE//std::cout<getTime<<"onMsg"<<*market_data<getInstrument)ifnotifySignalListeners);LONGBEACH_MESSAGE_CASE_ENDLONGBEACH_MESSAGE_CASE//std::cout<getTime<<"onMsg"<<*market_data<getInstrument)ifnotifySignalListeners);LONGBEACH_MESSAGE_CASE_ENDLONGBEACH_MESSAGE_CASE//std::cout<getTime<<"onMsg"<<*market_data<getInstrument)ifnotifySignalListeners);LONGBEACH_MESSAGE_CASE_ENDLONGBEACH_MESSAGE_SWITCH_END}voidSigBookBiasL2::onBookFlushed{notifySignalListeners);}voidSigBookBiasL2::onWakeupCall{//atopen,resetif_reset;//atendofday,scheduleATOPENandnextENDOFDAYelseif{std::vectorcns=cm::getClockNotice,m_instr,m_spCM->getYMDDate,cm::ATOPEN);m_spCM->scheduleClockNotices;cns=cm::getClockNotice,m_instr,m_spCM->getYMDDate,cm::ENDOFDAY);m_spCM->scheduleClockNotices;}}voidSigBookBiasL2::_reset{//resetthestatem_state.assign;notifySignalListeners);}std::pairSigBookBiasL2::evalSideWeightedAvgPriceSizeconst{//std::cout<getTime<getBookLevelIter;int32_tlevelCnt=0;while){//std::cout<<"levelCnt:"<next;doublelevelPrice=level->getPrice;doublelevelSize=level->getSize;if&&/*excludetoplevel*/){doubledistance=fabs;//doubleadjust_sz=log*exp;//doubleadjust_sz=log*exp);doubleadjust_sz=log*exp;total_sz+=adjust_sz;total_pxsz+=levelPrice*adjust_sz;//fmt::print;}}//std::cout<<"side:"<;}voidSigBookBiasL2::recomputeStateconst{//std::cout<<"
"<<*m_spBook<getMidPrice;std::pairbid=evalSideWeightedAvgPriceSize;std::pairask=evalSideWeightedAvgPriceSize;//doubleavgpx=/;doubleavgpx=&&)?/):midpx;//std::cout<<"bid:"<getTime<<"SigBookBiasL2::recomputeStatesig"<getPxPBuilder->buildPxProvider;IBookPtrbook=builder->getBookBuilder->buildBook;returnISignalPtr,m_description,builder->getClientContext,*this,/*priceProv,*/book));}voidSigBookBiasL2Spec::checkValidconst{SignalSpec::checkValid;ifLONGBEACH_THROW_ERROR_SS;//if//LONGBEACH_THROW_ERROR_SS;ifLONGBEACH_THROW_ERROR_SS;m_book->checkValid;}SigBookBiasL2Spec*SigBookBiasL2Spec::cloneconst{returnnewSigBookBiasL2Spec;}voidSigBookBiasL2Spec::hashCombineconst{SignalSpec::hashCombine;boost::hash_combine;}boolSigBookBiasL2Spec::compareconst{if)returnfalse;constSigBookBiasL2Spec*b=dynamic_cast;ifreturnfalse;ifreturnfalse;returntrue;}voidSigBookBiasL2Spec::printconst{constLuaPrintSettingsonei=ps.next;//indentationonepastcurrento<<"--SigBookBiasL2Spec"<getDataRequirements;}boolSigBookBiasL2Spec::registerScripting{//eachSpecclassmustbeaddedtoregisterScriptinginSignals_Scripting.ccluabind::module[luabind::class_.def).def_readwrite//.def_readwrite.def_readwrite];returntrue;}}//namespacesignals}//namespacelongbeach
文章为作者独立观点,不代表股票交易接口观点