
//.cc#include"SigMACh"#include#include#include#includenamespacelongbeach{namespacesignals{/************************************************************************************************///SigMACDSpec/************************************************************************************************/SigMACDSpec::SigMACDSpec{initMembers;}voidSigMACDSpec::initMembers{if{MemberList::className;MemberList::add;MemberList::add;MemberList::add;MemberList::add;MemberList::add;MemberList::m_bInitialized=true;}}boolSigMACDSpec::registerScripting{initMembers;LONGBEACH_REGISTER_SCRIPTING_ONCE;//eachSpecclassmustbeaddedtoregisterScriptinginSignals_Scripting.ccluabind::module[luabind::class_.def).def_readwrite.def_readwrite.def_readwrite.def_readwrite];luaL_dostring+"=SigMACDSpec").c_str);returntrue;}voidSigMACDSpec::getDataRequirementsconst{SignalSpec::getDataRequirements;}voidSigMACDSpec::checkValidconst{SignalSpec::checkValid;}ISignalPtrSigMACDSpec::buildconst{IPriceProviderPtrref_pxp=builder->getPxPBuilder->buildPxProvider;returnISignalPtr,ref_pxp,short_window,long_window,mid_window,getDescription,builder->getVerboseLevel));}/************************************************************************************************///SigMACD/************************************************************************************************/SigMACD::SigMACD:SignalSmonImpl,desc,cc->getClockMonitor,vbose),m_ref_pxp,m_macd{usingnamespaceboost::assign;initSignalStates);m_ref_pxp->addPriceListener);}voidSigMACD::onInputChange{if){doublepx=pxp.getRefPrice;m_macd.update;setDirty;setOK;notifySignalListeners;}}voidSigMACD::recomputeStateconst{if&&m_macd.get_dea){setSignalState.get);setSignalState.get);setSignalState.get);setDirty;}else{setSignalState;setSignalState;setSignalState;setDirty;}}}//namespacesignals}//namespacelongbeach
文章为作者独立观点,不代表股票交易接口观点