mirror of
https://github.com/softwaredevelop/mql5.git
synced 2026-07-27 20:47:44 +00:00
184 lines
13 KiB
Plaintext
184 lines
13 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>
|
|
|
|
//+------------------------------------------------------------------+
|
|
//| 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_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)m_symbol_info.OrderMode();
|
|
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 ---");
|
|
}
|
|
//+------------------------------------------------------------------+
|
|
//+------------------------------------------------------------------+
|