//+------------------------------------------------------------------+ //| SymbolInfoIntegerChecker.mq5 | //| Copyright 2025, MetaQuotes Ltd. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2025, MetaQuotes Ltd." #property link "https://www.mql5.com" #property version "1.00" #include // --- Helper functions to get descriptions for integer enums --- string GetSymbolSectorDescription(int sector_id) { string str; switch((ENUM_SYMBOL_SECTOR)sector_id) { case SECTOR_UNDEFINED: str = "Undefined"; break; case SECTOR_BASIC_MATERIALS: str = "Basic materials"; break; case SECTOR_COMMUNICATION_SERVICES: str = "Communication services"; break; case SECTOR_CONSUMER_CYCLICAL: str = "Consumer cyclical"; break; case SECTOR_CONSUMER_DEFENSIVE: str = "Consumer defensive"; break; case SECTOR_CURRENCY: str = "Currencies"; break; case SECTOR_CURRENCY_CRYPTO: str = "Cryptocurrencies"; break; case SECTOR_ENERGY: str = "Energy"; break; case SECTOR_FINANCIAL: str = "Finance"; break; case SECTOR_HEALTHCARE: str = "Healthcare"; break; case SECTOR_INDUSTRIALS: str = "Industrials"; break; case SECTOR_REAL_ESTATE: str = "Real estate"; break; case SECTOR_TECHNOLOGY: str = "Technology"; break; case SECTOR_UTILITIES: str = "Utilities"; break; default: str = "Unknown Sector ID"; break; } return str; } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ string GetSymbolIndustryDescription(int industry_id) { string str; switch((ENUM_SYMBOL_INDUSTRY)industry_id) { case INDUSTRY_UNDEFINED: str = "Undefined"; break; // Basic materials case INDUSTRY_AGRICULTURAL_INPUTS: str = "Agricultural inputs"; break; case INDUSTRY_ALUMINIUM: str = "Aluminium"; break; case INDUSTRY_BUILDING_MATERIALS: str = "Building materials"; break; case INDUSTRY_CHEMICALS: str = "Chemicals"; break; case INDUSTRY_COKING_COAL: str = "Coking coal"; break; case INDUSTRY_COPPER: str = "Copper"; break; case INDUSTRY_GOLD: str = "Gold"; break; case INDUSTRY_LUMBER_WOOD: str = "Lumber and wood production"; break; case INDUSTRY_INDUSTRIAL_METALS: str = "Other industrial metals and mining"; break; case INDUSTRY_PRECIOUS_METALS: str = "Other precious metals and mining"; break; case INDUSTRY_PAPER: str = "Paper and paper products"; break; case INDUSTRY_SILVER: str = "Silver"; break; case INDUSTRY_SPECIALTY_CHEMICALS: str = "Specialty chemicals"; break; case INDUSTRY_STEEL: str = "Steel"; break; // Communication services case INDUSTRY_ADVERTISING: str = "Advertising agencies"; break; case INDUSTRY_BROADCASTING: str = "Broadcasting"; break; case INDUSTRY_GAMING_MULTIMEDIA: str = "Electronic gaming and multimedia"; break; case INDUSTRY_ENTERTAINMENT: str = "Entertainment"; break; case INDUSTRY_INTERNET_CONTENT: str = "Internet content and information"; break; case INDUSTRY_PUBLISHING: str = "Publishing"; break; case INDUSTRY_TELECOM: str = "Telecom services"; break; // Consumer cyclical case INDUSTRY_APPAREL_MANUFACTURING: str = "Apparel manufacturing"; break; case INDUSTRY_APPAREL_RETAIL: str = "Apparel retail"; break; case INDUSTRY_AUTO_MANUFACTURERS: str = "Auto manufacturers"; break; case INDUSTRY_AUTO_PARTS: str = "Auto parts"; break; case INDUSTRY_AUTO_DEALERSHIP: str = "Auto and truck dealerships"; break; case INDUSTRY_DEPARTMENT_STORES: str = "Department stores"; break; case INDUSTRY_FOOTWEAR_ACCESSORIES: str = "Footwear and accessories"; break; case INDUSTRY_FURNISHINGS: str = "Furnishing, fixtures and appliances"; break; case INDUSTRY_GAMBLING: str = "Gambling"; break; case INDUSTRY_HOME_IMPROV_RETAIL: str = "Home improvement retail"; break; case INDUSTRY_INTERNET_RETAIL: str = "Internet retail"; break; case INDUSTRY_LEISURE: str = "Leisure"; break; case INDUSTRY_LODGING: str = "Lodging"; break; case INDUSTRY_LUXURY_GOODS: str = "Luxury goods"; break; case INDUSTRY_PACKAGING_CONTAINERS: str = "Packaging and containers"; break; case INDUSTRY_PERSONAL_SERVICES: str = "Personal services"; break; case INDUSTRY_RECREATIONAL_VEHICLES: str = "Recreational vehicles"; break; case INDUSTRY_RESIDENT_CONSTRUCTION: str = "Residential construction"; break; case INDUSTRY_RESORTS_CASINOS: str = "Resorts and casinos"; break; case INDUSTRY_RESTAURANTS: str = "Restaurants"; break; case INDUSTRY_SPECIALTY_RETAIL: str = "Specialty retail"; break; case INDUSTRY_TEXTILE_MANUFACTURING: str = "Textile manufacturing"; break; case INDUSTRY_TRAVEL_SERVICES: str = "Travel services"; break; // Consumer defensive case INDUSTRY_BEVERAGES_BREWERS: str = "Beverages - Brewers"; break; case INDUSTRY_BEVERAGES_NON_ALCO: str = "Beverages - Non-alcoholic"; break; case INDUSTRY_BEVERAGES_WINERIES: str = "Beverages - Wineries and distilleries"; break; case INDUSTRY_CONFECTIONERS: str = "Confectioners"; break; case INDUSTRY_DISCOUNT_STORES: str = "Discount stores"; break; case INDUSTRY_EDUCATION_TRAINIG: str = "Education and training services"; break; case INDUSTRY_FARM_PRODUCTS: str = "Farm products"; break; case INDUSTRY_FOOD_DISTRIBUTION: str = "Food distribution"; break; case INDUSTRY_GROCERY_STORES: str = "Grocery stores"; break; case INDUSTRY_HOUSEHOLD_PRODUCTS: str = "Household and personal products"; break; case INDUSTRY_PACKAGED_FOODS: str = "Packaged foods"; break; case INDUSTRY_TOBACCO: str = "Tobacco"; break; // Energy case INDUSTRY_OIL_GAS_DRILLING: str = "Oil and gas drilling"; break; case INDUSTRY_OIL_GAS_EP: str = "Oil and gas extraction and processing"; break; case INDUSTRY_OIL_GAS_EQUIPMENT: str = "Oil and gas equipment and services"; break; case INDUSTRY_OIL_GAS_INTEGRATED: str = "Oil and gas integrated"; break; case INDUSTRY_OIL_GAS_MIDSTREAM: str = "Oil and gas midstream"; break; case INDUSTRY_OIL_GAS_REFINING: str = "Oil and gas refining and marketing"; break; case INDUSTRY_THERMAL_COAL: str = "Thermal coal"; break; case INDUSTRY_URANIUM: str = "Uranium"; break; // Finance case INDUSTRY_EXCHANGE_TRADED_FUND: str = "Exchange traded fund"; break; case INDUSTRY_ASSETS_MANAGEMENT: str = "Assets management"; break; case INDUSTRY_BANKS_DIVERSIFIED: str = "Banks - Diversified"; break; case INDUSTRY_BANKS_REGIONAL: str = "Banks - Regional"; break; case INDUSTRY_CAPITAL_MARKETS: str = "Capital markets"; break; case INDUSTRY_CLOSE_END_FUND_DEBT: str = "Closed-End fund - Debt"; break; case INDUSTRY_CLOSE_END_FUND_EQUITY: str = "Closed-end fund - Equity"; break; case INDUSTRY_CLOSE_END_FUND_FOREIGN: str = "Closed-end fund - Foreign"; break; case INDUSTRY_CREDIT_SERVICES: str = "Credit services"; break; case INDUSTRY_FINANCIAL_CONGLOMERATE: str = "Financial conglomerates"; break; case INDUSTRY_FINANCIAL_DATA_EXCHANGE: str = "Financial data and stock exchange"; break; case INDUSTRY_INSURANCE_BROKERS: str = "Insurance brokers"; break; case INDUSTRY_INSURANCE_DIVERSIFIED: str = "Insurance - Diversified"; break; case INDUSTRY_INSURANCE_LIFE: str = "Insurance - Life"; break; case INDUSTRY_INSURANCE_PROPERTY: str = "Insurance - Property and casualty"; break; case INDUSTRY_INSURANCE_REINSURANCE: str = "Insurance - Reinsurance"; break; case INDUSTRY_INSURANCE_SPECIALTY: str = "Insurance - Specialty"; break; case INDUSTRY_MORTGAGE_FINANCE: str = "Mortgage finance"; break; case INDUSTRY_SHELL_COMPANIES: str = "Shell companies"; break; // Healthcare case INDUSTRY_BIOTECHNOLOGY: str = "Biotechnology"; break; case INDUSTRY_DIAGNOSTICS_RESEARCH: str = "Diagnostics and research"; break; case INDUSTRY_DRUGS_MANUFACTURERS: str = "Drugs manufacturers - general"; break; case INDUSTRY_DRUGS_MANUFACTURERS_SPEC: str = "Drugs manufacturers - Specialty and generic"; break; case INDUSTRY_HEALTHCARE_PLANS: str = "Healthcare plans"; break; case INDUSTRY_HEALTH_INFORMATION: str = "Health information services"; break; case INDUSTRY_MEDICAL_FACILITIES: str = "Medical care facilities"; break; case INDUSTRY_MEDICAL_DEVICES: str = "Medical devices"; break; case INDUSTRY_MEDICAL_DISTRIBUTION: str = "Medical distribution"; break; case INDUSTRY_MEDICAL_INSTRUMENTS: str = "Medical instruments and supplies"; break; case INDUSTRY_PHARM_RETAILERS: str = "Pharmaceutical retailers"; break; // Industrials case INDUSTRY_AEROSPACE_DEFENSE: str = "Aerospace and defense"; break; case INDUSTRY_AIRLINES: str = "Airlines"; break; case INDUSTRY_AIRPORTS_SERVICES: str = "Airports and air services"; break; case INDUSTRY_BUILDING_PRODUCTS: str = "Building products and equipment"; break; case INDUSTRY_BUSINESS_EQUIPMENT: str = "Business equipment and supplies"; break; case INDUSTRY_CONGLOMERATES: str = "Conglomerates"; break; case INDUSTRY_CONSULTING_SERVICES: str = "Consulting services"; break; case INDUSTRY_ELECTRICAL_EQUIPMENT: str = "Electrical equipment and parts"; break; case INDUSTRY_ENGINEERING_CONSTRUCTION: str = "Engineering and construction"; break; case INDUSTRY_FARM_HEAVY_MACHINERY: str = "Farm and heavy construction machinery"; break; case INDUSTRY_INDUSTRIAL_DISTRIBUTION: str = "Industrial distribution"; break; case INDUSTRY_INFRASTRUCTURE_OPERATIONS: str = "Infrastructure operations"; break; case INDUSTRY_FREIGHT_LOGISTICS: str = "Integrated freight and logistics"; break; case INDUSTRY_MARINE_SHIPPING: str = "Marine shipping"; break; case INDUSTRY_METAL_FABRICATION: str = "Metal fabrication"; break; case INDUSTRY_POLLUTION_CONTROL: str = "Pollution and treatment controls"; break; case INDUSTRY_RAILROADS: str = "Railroads"; break; case INDUSTRY_RENTAL_LEASING: str = "Rental and leasing services"; break; case INDUSTRY_SECURITY_PROTECTION: str = "Security and protection services"; break; case INDUSTRY_SPEALITY_BUSINESS_SERVICES: str = "Specialty business services"; break; case INDUSTRY_SPEALITY_MACHINERY: str = "Specialty industrial machinery"; break; case INDUSTRY_STUFFING_EMPLOYMENT: str = "Stuffing and employment services"; break; case INDUSTRY_TOOLS_ACCESSORIES: str = "Tools and accessories"; break; case INDUSTRY_TRUCKING: str = "Trucking"; break; case INDUSTRY_WASTE_MANAGEMENT: str = "Waste management"; break; // Real estate case INDUSTRY_REAL_ESTATE_DEVELOPMENT: str = "Real estate - Development"; break; case INDUSTRY_REAL_ESTATE_DIVERSIFIED: str = "Real estate - Diversified"; break; case INDUSTRY_REAL_ESTATE_SERVICES: str = "Real estate services"; break; case INDUSTRY_REIT_DIVERSIFIED: str = "REIT - Diversified"; break; case INDUSTRY_REIT_HEALTCARE: str = "REIT - Healthcase facilities"; break; case INDUSTRY_REIT_HOTEL_MOTEL: str = "REIT - Hotel and motel"; break; case INDUSTRY_REIT_INDUSTRIAL: str = "REIT - Industrial"; break; case INDUSTRY_REIT_MORTAGE: str = "REIT - Mortgage"; break; case INDUSTRY_REIT_OFFICE: str = "REIT - Office"; break; case INDUSTRY_REIT_RESIDENTAL: str = "REIT - Residential"; break; case INDUSTRY_REIT_RETAIL: str = "REIT - Retail"; break; case INDUSTRY_REIT_SPECIALITY: str = "REIT - Specialty"; break; // Technology case INDUSTRY_COMMUNICATION_EQUIPMENT: str = "Communication equipment"; break; case INDUSTRY_COMPUTER_HARDWARE: str = "Computer hardware"; break; case INDUSTRY_CONSUMER_ELECTRONICS: str = "Consumer electronics"; break; case INDUSTRY_ELECTRONIC_COMPONENTS: str = "Electronic components"; break; case INDUSTRY_ELECTRONIC_DISTRIBUTION: str = "Electronics and computer distribution"; break; case INDUSTRY_IT_SERVICES: str = "Information technology services"; break; case INDUSTRY_SCIENTIFIC_INSTRUMENTS: str = "Scientific and technical instruments"; break; case INDUSTRY_SEMICONDUCTOR_EQUIPMENT: str = "Semiconductor equipment and materials"; break; case INDUSTRY_SEMICONDUCTORS: str = "Semiconductors"; break; case INDUSTRY_SOFTWARE_APPLICATION: str = "Software - Application"; break; case INDUSTRY_SOFTWARE_INFRASTRUCTURE: str = "Software - Infrastructure"; break; case INDUSTRY_SOLAR: str = "Solar"; break; // Utilities case INDUSTRY_UTILITIES_DIVERSIFIED: str = "Utilities - Diversified"; break; case INDUSTRY_UTILITIES_POWERPRODUCERS: str = "Utilities - Independent power producers"; break; case INDUSTRY_UTILITIES_RENEWABLE: str = "Utilities - Renewable"; break; case INDUSTRY_UTILITIES_REGULATED_ELECTRIC: str = "Utilities - Regulated electric"; break; case INDUSTRY_UTILITIES_REGULATED_GAS: str = "Utilities - Regulated gas"; break; case INDUSTRY_UTILITIES_REGULATED_WATER: str = "Utilities - Regulated water"; break; default: str = "Unknown Industry ID"; break; } return str; } //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { string symbol = _Symbol; CSymbolInfo m_symbol_info; if(!m_symbol_info.Name(symbol)) { PrintFormat("Error: Failed to initialize CSymbolInfo for symbol '%s'. Error: %d", symbol, GetLastError()); return; } if(!m_symbol_info.Refresh()) { PrintFormat("Error: Failed to refresh symbol data for '%s'. Error: %d", symbol, GetLastError()); return; } Print("--- Symbol Property Checker Started ---"); PrintFormat("Checking symbol: %s", symbol); Print("--- Integer Properties (ENUM_SYMBOL_INFO_INTEGER) ---"); ENUM_SYMBOL_INFO_INTEGER int_properties[] = { SYMBOL_SUBSCRIPTION_DELAY, SYMBOL_SECTOR, SYMBOL_INDUSTRY, SYMBOL_CUSTOM, SYMBOL_BACKGROUND_COLOR, SYMBOL_CHART_MODE, SYMBOL_EXIST, SYMBOL_SELECT, SYMBOL_VISIBLE, SYMBOL_SESSION_DEALS, SYMBOL_SESSION_BUY_ORDERS, SYMBOL_SESSION_SELL_ORDERS, SYMBOL_VOLUME, SYMBOL_VOLUMEHIGH, SYMBOL_VOLUMELOW, SYMBOL_TIME, SYMBOL_TIME_MSC, SYMBOL_DIGITS, SYMBOL_SPREAD_FLOAT, SYMBOL_SPREAD, SYMBOL_TICKS_BOOKDEPTH, SYMBOL_TRADE_CALC_MODE, SYMBOL_TRADE_MODE, SYMBOL_START_TIME, SYMBOL_EXPIRATION_TIME, SYMBOL_TRADE_STOPS_LEVEL, SYMBOL_TRADE_FREEZE_LEVEL, SYMBOL_TRADE_EXEMODE, SYMBOL_SWAP_MODE, SYMBOL_SWAP_ROLLOVER3DAYS, SYMBOL_MARGIN_HEDGED_USE_LEG, SYMBOL_EXPIRATION_MODE, SYMBOL_FILLING_MODE, SYMBOL_ORDER_MODE, SYMBOL_ORDER_GTC_MODE, SYMBOL_OPTION_MODE, SYMBOL_OPTION_RIGHT }; long value; string display_value; string result_str; for(int i = 0; i < ArraySize(int_properties); i++) { ResetLastError(); bool success = m_symbol_info.InfoInteger(int_properties[i], value); int error = GetLastError(); if(success) { switch(int_properties[i]) { case SYMBOL_TRADE_CALC_MODE: display_value = m_symbol_info.TradeCalcModeDescription(); break; case SYMBOL_TRADE_MODE: display_value = m_symbol_info.TradeModeDescription(); break; case SYMBOL_TRADE_EXEMODE: display_value = m_symbol_info.TradeExecutionDescription(); break; case SYMBOL_SWAP_MODE: display_value = m_symbol_info.SwapModeDescription(); break; case SYMBOL_SWAP_ROLLOVER3DAYS : display_value = m_symbol_info.SwapRollover3daysDescription(); break; case SYMBOL_SELECT: display_value = m_symbol_info.Select() ? "True" : "False"; break; case SYMBOL_VISIBLE: display_value = (bool)value ? "True" : "False"; break; case SYMBOL_CUSTOM: display_value = (bool)value ? "True" : "False"; break; case SYMBOL_EXIST: display_value = (bool)value ? "True" : "False"; break; case SYMBOL_SPREAD_FLOAT: display_value = m_symbol_info.SpreadFloat() ? "True" : "False"; break; case SYMBOL_MARGIN_HEDGED_USE_LEG : display_value = m_symbol_info.MarginHedgedUseLeg() ? "True" : "False"; break; case SYMBOL_START_TIME: display_value = TimeToString(m_symbol_info.StartTime(), TIME_DATE|TIME_SECONDS); break; case SYMBOL_EXPIRATION_TIME: display_value = TimeToString(m_symbol_info.ExpirationTime(), TIME_DATE|TIME_SECONDS); break; case SYMBOL_TIME: display_value = TimeToString(m_symbol_info.Time(), TIME_DATE|TIME_SECONDS); break; case SYMBOL_TIME_MSC: { datetime seconds_part = (datetime)(value / 1000); long milliseconds_part = value % 1000; display_value = StringFormat("%s.%03d", TimeToString(seconds_part, TIME_DATE|TIME_SECONDS), milliseconds_part); } break; case SYMBOL_DIGITS: display_value = (string)m_symbol_info.Digits(); break; case SYMBOL_SPREAD: display_value = (string)m_symbol_info.Spread(); break; case SYMBOL_TICKS_BOOKDEPTH: display_value = (string)m_symbol_info.TicksBookDepth(); break; case SYMBOL_TRADE_STOPS_LEVEL: display_value = (string)m_symbol_info.StopsLevel(); break; case SYMBOL_TRADE_FREEZE_LEVEL: display_value = (string)m_symbol_info.FreezeLevel(); break; case SYMBOL_VOLUME: display_value = (string)m_symbol_info.Volume(); break; case SYMBOL_VOLUMEHIGH: display_value = (string)m_symbol_info.VolumeHigh(); break; case SYMBOL_VOLUMELOW: display_value = (string)m_symbol_info.VolumeLow(); break; case SYMBOL_ORDER_MODE: display_value = (string)value; break; case SYMBOL_SECTOR: display_value = GetSymbolSectorDescription((int)value); break; case SYMBOL_INDUSTRY: display_value = GetSymbolIndustryDescription((int)value); break; default: display_value = (string)value; break; } result_str = StringFormat("Property: %s, Status: SUPPORTED, Value: %s", EnumToString(int_properties[i]), display_value); Print(result_str); } else { result_str = StringFormat("Property: %s, Status: QUERY FAILED (Error: %d)", EnumToString(int_properties[i]), error); Print(result_str); } } Print("--- Check Completed ---"); } //+------------------------------------------------------------------+ //+------------------------------------------------------------------+