Files
mql5/Scripts/SymbolInfoIntegerChecker.mq5
T
2025-07-13 18:23:12 +02:00

724 lines
47 KiB
Plaintext

//+------------------------------------------------------------------+
//| 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 <Trade\SymbolInfo.mqh>
// --- 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 ---");
}
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+