//.h#ifndefLONGBEACH_SIGNALS_SIGLASTTRADEDQUANTITY_H#defineLONGBEACH_SIGNALS_SIGLASTTRADEDQUANTITY_H#include#include#include#include#include#includenamespacelongbeach{namespacesignals{templateintsgn{returnm_tradedQuantities;doublem_expireSmoothingFactor;doublem_smoothExpiryAdjustment;};classSigLastTradedQuantity:publicSignalStateImpl,privateIClockListener,privateITickListener,privateIBookListener{public:SigLastTradedQuantity;///Destructorvirtual~SigLastTradedQuantity;conststd::vector&getWindowDurationsconst{returnm_vWindowDurations;}private://IClockListenerinterfacevirtualvoidonWakeupCall;//IBookListenerinterface///InvokedwhenthesubscribedBookchanges.///ThelevelChangedentriesarenegativeifthereisnochange,ora0-baseddepth.virtualvoidonBookChanged;///InvokedwhenthesubscribedBookisflushed.virtualvoidonBookFlushed{};///ThiswillbecalledwhentheITickProvider"sreceivesanewTradeTick.///Thatlasttradetickispassed.///Spuriouscallsareallowed.tpwillneverbeNULL.virtualvoidonTickReceived;//wedon"tcareaboutthisvirtualvoidonTickVolumeUpdated{};voidreset;virtualvoidrecomputeStateconst;virtualvoidupdateStateconst;protected:ClockMonitorPtrm_spCM;IBookPtrm_spBook;ITickProviderCPtrm_spTickProvider;//Subscriptionm_spBookSub,m_spTickProviderSub;std::vectorm_vWindowDurations;boost::optionalm_lotSize;std::vectorm_rollingWindows;doublem_currentBestBidPrice;doublem_currentBestAskPrice;doublem_currentMidPrice;doublem_lastBestBidPrice;doublem_lastBestAskPrice;doublem_lastMidPrice;timeval_tm_lastBookUpdateTime;ReturnModem_returnMode;};LONGBEACH_DECLARE_SHARED_PTR;///SignalSpecforSigLastTradedQuantityclassSigLastTradedQuantitySpec:publicSignalSpec{public:LONGBEACH_DECLARE_SCRIPTING;SigLastTradedQuantitySpec:m_expireSmoothingFactor{};SigLastTradedQuantitySpec;virtualinstrument_tgetInstrumentconst{returnm_inputBook->getInstrument;}virtualISignalPtrbuildconst;virtualvoidcheckValidconst;virtualvoidhashCombineconst;virtualboolcompareconst;virtualvoidprintconst;virtualvoidgetDataRequirementsconst;virtualSigLastTradedQuantitySpec*cloneconst;IBookSpecPtrm_inputBook;source_tm_tickSource;std::vectorm_vWindowDurations;doublem_expireSmoothingFactor;ReturnModem_returnMode;};LONGBEACH_DECLARE_SHARED_PTR;classWindowAtTime{public:WindowAtTime:m_total,m_time{};constdoublegetTotalconst{returnm_total;};consttimeval_tgetTimeconst{returnm_time;};private:doublem_total;timeval_tm_time;};classBaselineRollingWindow:publicRollingWindow{public:BaselineRollingWindow;virtual~BaselineRollingWindow{};virtualvoidupdate;virtualdoublegetSignalconst;private:uint32_tm_numberOfHistorySamples;longbeach::ptime_duration_tm_samplePeriod;std::vectorm_tradedQuantities;doublem_smoothingFactor;doublem_smoothedTotalAtStart;std::dequem_sampledHistory;std::dequem_recentHistory;};classSigBaselineLastTradedQuantity:publicSigLastTradedQuantity{public:SigBaselineLastTradedQuantity;///Destructorvirtual~SigBaselineLastTradedQuantity{};private:virtualvoidupdateStateconst;private:doublem_cutoff;};LONGBEACH_DECLARE_SHARED_PTR;///SignalSpecforSigBaselineLastTradedQuantityclassSigBaselineLastTradedQuantitySpec:publicSignalSpec{public:LONGBEACH_DECLARE_SCRIPTING;SigBaselineLastTradedQuantitySpec:m_numberOfHistorySamples,m_cutoff,m_windowsToSample,m_expireSmoothingFactor,m_smoothingFactor{};SigBaselineLastTradedQuantitySpec;virtualinstrument_tgetInstrumentconst{returnm_inputBook->getInstrument;}virtualISignalPtrbuildconst;virtualvoidcheckValidconst;virtualvoidhashCombineconst;virtualboolcompareconst;virtualvoidprintconst;virtualvoidgetDataRequirementsconst;virtualSigBaselineLastTradedQuantitySpec*cloneconst;IBookSpecPtrm_inputBook;source_tm_tickSource;std::vectorm_vWindowDurations;uint32_tm_numberOfHistorySamples;doublem_cutoff;uint32_tm_windowsToSample;doublem_expireSmoothingFactor;doublem_smoothingFactor;};LONGBEACH_DECLARE_SHARED_PTR;}//namespacesignals}//namespacelongbeach#endif//LONGBEACH_SIGNALS_SIGLASTTRADEDQUANTITY_H
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点