//+------------------------------------------------------------------+ //| Manager.mqh | //| Copyright 2015, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2015, MetaQuotes Software Corp." #property link "https://www.mql5.com" input string StrategiesXMLFile="Strategies.xml"; // Upload strategies from the file input bool LoadOnlyCurrentSymbol=false; // Upload only for the current symbol #include #include #include #include #include #include #include ".\Panel\Panel.mqh" #include //+------------------------------------------------------------------+ //| 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(); 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(); } //+------------------------------------------------------------------+ //| Sends the OnTick event to all listed strategies | //+------------------------------------------------------------------+ void CStrategyList::OnTick(void) { for(int i=0; i