From 3dd5f292f908f9a260707ae0c1e847d17241f05c Mon Sep 17 00:00:00 2001 From: kenorb Date: Sat, 28 Oct 2023 15:51:02 +0100 Subject: [PATCH] StrategiesManager: Adds StrategyInitByEnum() --- manager.h | 130 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 127 insertions(+), 3 deletions(-) diff --git a/manager.h b/manager.h index abbd700..db596d1 100644 --- a/manager.h +++ b/manager.h @@ -24,9 +24,6 @@ #define STRATEGIES_MANAGER_H class StrategiesManager { - protected: - DictStruct> strats; - public: /** * Initialize strategy with the specific timeframe. @@ -41,6 +38,133 @@ class StrategiesManager { static Strategy* StrategyInit(ENUM_TIMEFRAMES _tf) { return ((SClass*)NULL).Init(_tf); } + + /** + * Initialize strategy by enum type. + * + * @param + * _sid - Strategy type + * + * @return + * Returns strategy pointer on successful initialization, otherwise NULL. + */ + static Strategy* StrategyInitByEnum(ENUM_STRATEGY _sid, ENUM_TIMEFRAMES _tf = PERIOD_CURRENT) { + switch (_sid) { + case STRAT_AC: + return StrategyInit(_tf); + case STRAT_AD: + return StrategyInit(_tf); + case STRAT_ADX: + return StrategyInit(_tf); + case STRAT_AMA: + return StrategyInit(_tf); + case STRAT_ARROWS: + return StrategyInit(_tf); + case STRAT_ASI: + return StrategyInit(_tf); + case STRAT_ATR: + return StrategyInit(_tf); + case STRAT_ALLIGATOR: + return StrategyInit(_tf); + case STRAT_AWESOME: + return StrategyInit(_tf); + case STRAT_BWMFI: + return StrategyInit(_tf); + case STRAT_BANDS: + return StrategyInit(_tf); + case STRAT_BEARS_POWER: + return StrategyInit(_tf); + case STRAT_BULLS_POWER: + return StrategyInit(_tf); + case STRAT_CCI: + return StrategyInit(_tf); + case STRAT_CHAIKIN: + return StrategyInit(_tf); + case STRAT_DEMA: + return StrategyInit(_tf); + case STRAT_DPO: + return StrategyInit(_tf); + case STRAT_DEMARKER: + return StrategyInit(_tf); + case STRAT_ENVELOPES: + return StrategyInit(_tf); + case STRAT_FORCE: + return StrategyInit(_tf); + case STRAT_FRACTALS: + return StrategyInit(_tf); + case STRAT_GATOR: + return StrategyInit(_tf); + case STRAT_HEIKEN_ASHI: + return StrategyInit(_tf); + case STRAT_ICHIMOKU: + return StrategyInit(_tf); + case STRAT_INDICATOR: + return StrategyInit(_tf); + case STRAT_MA: + return StrategyInit(_tf); + case STRAT_MA_BREAKOUT: + return StrategyInit(_tf); + case STRAT_MA_CROSS_PIVOT: + return StrategyInit(_tf); + case STRAT_MA_CROSS_SHIFT: + return StrategyInit(_tf); + case STRAT_MA_CROSS_SUP_RES: + return StrategyInit(_tf); + case STRAT_MA_TREND: + return StrategyInit(_tf); + case STRAT_MACD: + return StrategyInit(_tf); + case STRAT_MFI: + return StrategyInit(_tf); + case STRAT_MOMENTUM: + return StrategyInit(_tf); + case STRAT_OBV: + return StrategyInit(_tf); + case STRAT_OSCILLATOR: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_DIVERGENCE: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_MULTI: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_CROSS: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_CROSS_SHIFT: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_CROSS_ZERO: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_RANGE: + return StrategyInit(_tf); + case STRAT_OSCILLATOR_TREND: + return StrategyInit(_tf); + case STRAT_OSMA: + return StrategyInit(_tf); + case STRAT_PATTERN: + return StrategyInit(_tf); + case STRAT_PINBAR: + return StrategyInit(_tf); + case STRAT_PIVOT: + return StrategyInit(_tf); + case STRAT_RSI: + return StrategyInit(_tf); + case STRAT_RVI: + return StrategyInit(_tf); + case STRAT_SAR: + return StrategyInit(_tf); + case STRAT_STDDEV: + return StrategyInit(_tf); + case STRAT_STOCHASTIC: + return StrategyInit(_tf); + case STRAT_WPR: + return StrategyInit(_tf); + case STRAT_ZIGZAG: + return StrategyInit(_tf); + default: + case STRAT_NONE: + break; + } + + return NULL; + } }; #endif // STRATEGIES_MANAGER_H