//+------------------------------------------------------------------+ //| StrategiesList.mqh | //| Copyright 2016, Vasiliy Sokolov, St-Petersburg, Russia | //| https://www.mql5.com/en/users/c-4 | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, Vasiliy Sokolov." #property link "https://www.mql5.com/en/users/c-4" #ifdef SHOW_BASE_SETTINGS input string StrategiesXMLFile="Strategies.xml"; // Upload strategies from the file input bool LoadOnlyCurrentSymbol=false; // Upload only for the current symbol #endif #include #include "Strategy.mqh" #include "StrategyParamsBase.mqh" #include ".\Panel\Panel.mqh" #include "Panel\Events\EventChartListChanged.mqh" //+------------------------------------------------------------------+ //| Container class to manage strategies of the CStrategy type | //+------------------------------------------------------------------+ class CStrategyList { private: CLog* Log; // Logging CArrayObj m_strategies; // Strategies of the CStrategy type void ParseStrategies(CXmlElement *xmlStrategies,bool load_curr_symbol); void ParseLimits(CXmlElement *xmlLimits); CStrBtn StrButton; public: CStrategyList(void); ~CStrategyList(void); void LoadStrategiesFromXML(string xml_name,bool load_curr_symbol); bool AddStrategy(CStrategy *strategy); int Total(); void Clear(); CStrategy *At(int index); void OnTick(); void OnTimer(); void OnBookEvent(string symbol); void OnDeinit(const int reason); void OnChartEvent(const int id, const long &lparam, const double &dparam, const string &sparam); }; //+------------------------------------------------------------------+ //| Default constructor. | //+------------------------------------------------------------------+ CStrategyList::CStrategyList(void) : StrButton(GetPointer(this)) { Log=CLog::GetLog(); StrButton.Show(); m_strategies.Sort(0); } //+------------------------------------------------------------------+ //| Note: this is the only place where CLog is deleted. In other | //| places no need to delete it. | //+------------------------------------------------------------------+ CStrategyList::~CStrategyList(void) { CLog::DeleteLog(); } //+------------------------------------------------------------------+ //| Clear the list of strategies | //+------------------------------------------------------------------+ CStrategyList::Clear(void) { m_strategies.Clear(); } //+------------------------------------------------------------------+ //| Sends the OnTick event to all listed strategies | //+------------------------------------------------------------------+ void CStrategyList::OnTick(void) { for(int i=0; i