Files
mql5/Scripts/MyScripts/SymbolInfoDescriptions.mqh
T
2025-08-23 15:01:31 +02:00

107 lines
4.1 KiB
Plaintext

//+------------------------------------------------------------------+
//| 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);
}
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+