//+------------------------------------------------------------------+ //| Warrior_EA | //| AnimateDread | //| | //| The read/write surface CTopology needs from the signal. Same | //| shape as Persistence\IPersistenceView.mqh - abstract, pure `= 0`,| //| no signal include. Everything here is either a fingerprint input,| //| a size the shape derivation reads, or the two irreducible | //| pointer operations (the Net swap, the online-learning reset) | //| that are not signal STATE and so are consolidated into one call | //| each rather than exposed field-by-field. | //+------------------------------------------------------------------+ class CTopologyView { public: virtual ~CTopologyView(void) { } //--- IDENTITY + SIZE (reused via the signal's existing Data*()/Chart*() getters) virtual string Id(void) = 0; virtual string SymbolName(void) = 0; virtual ENUM_TIMEFRAMES Timeframe(void) = 0; virtual int OptimizationAlgo(void) = 0; virtual int OutputNeuronsCount(void) = 0; virtual int NeuronsCount(void) = 0; virtual int HistoryBars(void) = 0; virtual int InitialNeuronsCount(void) = 0; virtual int HiddenLayersCount(void) = 0; virtual int ConvFilterCount(void) = 0; virtual int LstmHiddenSize(void) = 0; virtual int MinTrainYear(void) = 0; virtual int FractalPeriods(void) = 0; virtual int OosSplitPct(void) = 0; virtual int SwingConfirmationBars(void) = 0; //--- The LABEL'S pivot source, read at init to measure the swing geometry the window and the //--- capacity budget are both derived from - see CTopology::MeasureSwingGeometry(). virtual int ZigZagHandle(void) = 0; //--- FINGERPRINT INPUT FLAGS (BuildModelFingerprint) - every one already has a signal-side setter; //--- these are the matching getters. virtual bool UseVolumes(void) = 0; virtual bool UseTime(void) = 0; virtual bool UseATR(void) = 0; virtual bool UseSwingContext(void) = 0; virtual bool UseNews(void) = 0; virtual int NewsFeatureWindowMinutes(void) = 0; virtual bool UseMA(void) = 0; virtual bool UseCrossAsset(void) = 0; virtual bool UseSpreadFeature(void) = 0; //--- The DERIVED alt-data flag (InitFeatureIndicators sets it once width is known) - NOT the //--- operator opt-in switch (UseAltData(bool) already means that elsewhere). virtual bool UseAltData(void) = 0; virtual bool IsEnsembleMember(void) = 0; //--- Extra independent observations available from Training\TrainingPool.mqh, already discounted //--- for cross-instrument correlation - see CTopology::EstimatedInSampleBars()'s use of it. 0 when //--- pooling is off or no compatible peer file exists yet. virtual double PooledIndependentBars(void) = 0; //--- SHAPE SEAMS - subclass-overridden virtuals on the signal (CSignalCONV/LSTM/HYBRID/META). virtual bool UsesConvStage(void) = 0; virtual bool UsesLstmStage(void) = 0; virtual bool HasConvBeforeLstm(void) = 0; virtual bool AddCustomLayers(CArrayObj *topology) = 0; virtual ENUM_ACTIVATION HiddenLayerActivation(void) = 0; virtual ENUM_ACTIVATION OutputLayerActivation(void) = 0; virtual int NetInputWidth(void) = 0; //--- IRREDUCIBLE POINTER WORK, consolidated - same doctrine as Persistence's //--- RunCpuInferenceSelfCheck/ChartScoreBarForRescan: not signal state, a whole-object operation. virtual bool ReplaceNetFromTopology(CArrayObj *topology) = 0; //--- A fresh topology invalidates the shadow net and the online-learning history - see //--- COnlineLearning::ResetForFreshTopology()'s comment. virtual void ResetOnlineLearningForFreshTopology(void) = 0; }; //+------------------------------------------------------------------+