//+------------------------------------------------------------------+ //| SymbolInfoDescriptions.mqh | //| Helper functions for symbol properties | //+------------------------------------------------------------------+ //--- Returns a string description for a given sector ID string GetSymbolSectorDescription(const int sector_id) { switch((ENUM_SYMBOL_SECTOR)sector_id) { case SECTOR_UNDEFINED: return("Undefined"); case SECTOR_BASIC_MATERIALS: return("Basic materials"); case SECTOR_COMMUNICATION_SERVICES: return("Communication services"); // ... a többi case ... default: return("Unknown Sector ID (" + (string)sector_id + ")"); } } //--- Returns a string description for a given industry ID string GetSymbolIndustryDescription(const int industry_id) { switch((ENUM_SYMBOL_INDUSTRY)industry_id) { case INDUSTRY_UNDEFINED: return("Undefined"); case INDUSTRY_AGRICULTURAL_INPUTS: return("Agricultural inputs"); case INDUSTRY_ALUMINIUM: return("Aluminium"); // ... a többi, több száz case... default: return("Unknown Industry ID (" + (string)industry_id + ")"); } } //--- MODIFICATION: New helper function to format the integer value // This function encapsulates the large switch block from OnStart() string FormatIntegerValue(CSymbolInfo &symbol_info, ENUM_SYMBOL_INFO_INTEGER property, long value) { switch(property) { case SYMBOL_TRADE_CALC_MODE: return(symbol_info.TradeCalcModeDescription()); case SYMBOL_TRADE_MODE: return(symbol_info.TradeModeDescription()); case SYMBOL_TRADE_EXEMODE: return(symbol_info.TradeExecutionDescription()); case SYMBOL_SWAP_MODE: return(symbol_info.SwapModeDescription()); case SYMBOL_SWAP_ROLLOVER3DAYS: return(symbol_info.SwapRollover3daysDescription()); case SYMBOL_SELECT: return(symbol_info.Select() ? "True" : "False"); case SYMBOL_VISIBLE: return((bool)value ? "True" : "False"); case SYMBOL_CUSTOM: return((bool)value ? "True" : "False"); case SYMBOL_EXIST: return((bool)value ? "True" : "False"); case SYMBOL_SPREAD_FLOAT: return(symbol_info.SpreadFloat() ? "True" : "False"); case SYMBOL_MARGIN_HEDGED_USE_LEG: return(symbol_info.MarginHedgedUseLeg() ? "True" : "False"); case SYMBOL_START_TIME: return(TimeToString(symbol_info.StartTime(), TIME_DATE | TIME_SECONDS)); case SYMBOL_EXPIRATION_TIME: return(TimeToString(symbol_info.ExpirationTime(), TIME_DATE | TIME_SECONDS)); case SYMBOL_TIME: return(TimeToString(symbol_info.Time(), TIME_DATE | TIME_SECONDS)); case SYMBOL_TIME_MSC: { datetime seconds_part = (datetime)(value / 1000); long milliseconds_part = value % 1000; return(StringFormat("%s.%03d", TimeToString(seconds_part, TIME_DATE | TIME_SECONDS), milliseconds_part)); } case SYMBOL_DIGITS: return((string)symbol_info.Digits()); case SYMBOL_SPREAD: return((string)symbol_info.Spread()); case SYMBOL_TICKS_BOOKDEPTH: return((string)symbol_info.TicksBookDepth()); case SYMBOL_TRADE_STOPS_LEVEL: return((string)symbol_info.StopsLevel()); case SYMBOL_TRADE_FREEZE_LEVEL: return((string)symbol_info.FreezeLevel()); case SYMBOL_VOLUME: return((string)symbol_info.Volume()); case SYMBOL_VOLUMEHIGH: return((string)symbol_info.VolumeHigh()); case SYMBOL_VOLUMELOW: return((string)symbol_info.VolumeLow()); case SYMBOL_SECTOR: return(GetSymbolSectorDescription((int)value)); case SYMBOL_INDUSTRY: return(GetSymbolIndustryDescription((int)value)); // For any other property, just convert the long value to a string default: return((string)value); } } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+