Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 58
- Рейтинг:
- Опубликован:
- 2025.06.23 12:07
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
Библиотека PrintXYZ()
Небольшой набор функций для печати массивной информации из терминала на вкладку Experts.
Это наиболее полезно для печати (и отладки) спецификаций торгового счета, свойств клиентского терминала, устройств OpenCL, конкретного графика или символа, информации о программе mql или печати конкретной позиции/сделки/ордера в истории торговли. Печать всех статистических данных тестера доступна внутри OnTester() или OnDeinit() в тестере.
Определения всех перечислимых типов языка MQL5 также могут быть красиво распечатаны общим способом (без жесткого кодирования перечислений, чтобы обеспечить печать всех вновь добавляемых в MQL5 значений) с помощью функции PrintEnum<T>(), где T - тип перечисления, например ENUM_TIMEFRAMES.
Функция PrintStruct(var) используется для красивой печати структурной переменной (с отображением всех имен и значений ее полей).
Функциональный макрос PrintExpr(x) печатает строковое выражение вместе с его значением и типом. Вывод этого скрипта может быть отправлен удаленному сотруднику службы поддержки или внештатному разработчику для помощи в обнаружении и устранении проблем на вашем терминале.
Функции:
//+------------------------------------------------------------------+ //| Функции в библиотеке 'PrintXYZ'.| //+------------------------------------------------------------------+ void PrintAccount(); void PrintTerminal(); void PrintMQLInfo(); void PrintChart( long chart_id ); void PrintObject( long chart_id, string name ); void PrintSymbol( string symbol ); void PrintSeries( string symbol, ENUM_TIMEFRAMES timeframe ); void PrintPosition( ulong pos_ticket ); void PrintOrder( ulong order_ticket ); void PrintDeal( ulong deal_ticket ); void PrintHistoryOrder( ulong order_ticket ); void PrintOpenCL( int device ); void PrintTesterStatistics(); void PrintEnum<T> (); void PrintStruct<T> (T& struct_var); PrintExpr(x); // макрос
MetaEditor Совет:
Если включить библиотеку 'PrintXYZ' в ваши проекты, то вышеуказанные функции станут доступны в окне автозаполнения MetaEditor везде, где вы набираете 'Print'. Вы можете быстро скомпилировать файл проекта для печати результатов MQL5-функций на вкладке 'Experts', а затем решить, какая комбинация MQL-функция/значение перечисления лучше всего подойдет для ваших требований.
Тестовый сценарий:
//+------------------------------------------------------------------+ //| Тестовый сценарий| //+------------------------------------------------------------------+ #include "PrintXYZ.mqh" void OnStart() { //--- Выведите массивную информацию для отладки PrintAccount(); PrintTerminal(); PrintOpenCL(0); // по индексу устройства OpenCL в системе //PrintOpenCL(CL_USE_GPU_ONLY); // по типу устройства OpenCL //--- Выведите информацию о запущенной программе, конкретном графике, символе или серии. PrintMQLInfo(); PrintChart(0); PrintObject(0,"Horizontal Line 54478"); PrintSymbol(_Symbol); PrintSeries(_Symbol, PERIOD_CURRENT); //--- Выведите конкретную позицию или отложенный ордер. //PrintPosition(925571424); // по билету позиции PrintPosition(PositionGetTicket(0)); // по индексу позиции [ добавить дополнительную позицию PositionGetTicket(index) ] PrintOrder(OrderGetTicket(0)); //--- Выведите на печать конкретную историческую сделку или заказ. HistorySelect(0,INT_MAX); PrintDeal(HistoryDealGetTicket(0)); // по индексу сделки PrintHistoryOrder(HistoryOrderGetTicket(0)); //--- Выведите определение перечисления, структурную переменную или выражение. PrintEnum<ENUM_TIMEFRAMES>(); MqlDateTime dt; TimeToStruct(TimeCurrent(), dt); PrintStruct(dt); PrintExpr( AccountInfoInteger(ACCOUNT_LOGIN) ); PrintExpr( _Point ); PrintExpr( ((int)1 << 16) | 0xFFF ); }
Образец вывода:
/*
Пример вывода:
ACCOUNT INFORMATION <<==============================
AccountInfoInteger(ENUM_ACCOUNT_INFO_INTEGER):
ACCOUNT_LOGIN = 51986913
ACCOUNT_TRADE_MODE = ACCOUNT_TRADE_MODE_DEMO(0)
ACCOUNT_TRADE_ALLOWED = 1
ACCOUNT_TRADE_EXPERT = 1
ACCOUNT_LEVERAGE = 1000
ACCOUNT_MARGIN_SO_MODE = ACCOUNT_STOPOUT_MODE_PERCENT(0)
ACCOUNT_LIMIT_ORDERS = 200
ACCOUNT_MARGIN_MODE = ACCOUNT_MARGIN_MODE_RETAIL_HEDGING(2)
ACCOUNT_CURRENCY_DIGITS = 2
ACCOUNT_FIFO_CLOSE = 0
ACCOUNT_HEDGE_ALLOWED = 1
AccountInfoDouble(ENUM_ACCOUNT_INFO_DOUBLE):
ACCOUNT_BALANCE = 199.96
ACCOUNT_CREDIT = 0.0
ACCOUNT_PROFIT = -0.38
ACCOUNT_EQUITY = 199.58
ACCOUNT_MARGIN = 1.05
ACCOUNT_MARGIN_FREE = 198.53
ACCOUNT_MARGIN_LEVEL = 19007.619047619046
ACCOUNT_MARGIN_SO_CALL = 100.0
ACCOUNT_MARGIN_SO_SO = 0.0
ACCOUNT_MARGIN_INITIAL = 0.0
ACCOUNT_MARGIN_MAINTENANCE = 0.0
ACCOUNT_ASSETS = 0.0
ACCOUNT_LIABILITIES = 0.0
ACCOUNT_COMMISSION_BLOCKED = 0.0
AccountInfoString(ENUM_ACCOUNT_INFO_STRING):
ACCOUNT_NAME = Amr
ACCOUNT_COMPANY = Raw Trading Ltd
ACCOUNT_SERVER = ICMarketsSC-Demo
ACCOUNT_CURRENCY = USD
SymbolsTotal(true) = 2 [int]
SymbolsTotal(false) = 2061 [int]
PositionsTotal() = 1 [int]
OrdersTotal() = 0 [int]
HistoryDealsTotal() = 2 [int]
HistoryOrdersTotal() = 1 [int]
TERMINAL INFORMATION <<==============================
TerminalInfoInteger(ENUM_TERMINAL_INFO_INTEGER):
TERMINAL_BUILD = 4755
TERMINAL_CONNECTED = 1
TERMINAL_DLLS_ALLOWED = 0
TERMINAL_TRADE_ALLOWED = 0
TERMINAL_EMAIL_ENABLED = 0
TERMINAL_FTP_ENABLED = 0
TERMINAL_MAXBARS = 500000
TERMINAL_CODEPAGE = 0
TERMINAL_MEMORY_PHYSICAL = 32609
TERMINAL_MEMORY_TOTAL = 65218
TERMINAL_MEMORY_AVAILABLE = 64457
TERMINAL_MEMORY_USED = 761
TERMINAL_X64 = 1
TERMINAL_OPENCL_SUPPORT = 65538
TERMINAL_DISK_SPACE = 109612
TERMINAL_CPU_CORES = 24
TERMINAL_MQID = 0
TERMINAL_COMMUNITY_ACCOUNT = 0
TERMINAL_COMMUNITY_CONNECTION = 0
TERMINAL_NOTIFICATIONS_ENABLED = 0
TERMINAL_SCREEN_DPI = 96
TERMINAL_PING_LAST = 181490
TERMINAL_SCREEN_LEFT = 0
TERMINAL_SCREEN_TOP = 0
TERMINAL_SCREEN_WIDTH = 1920
TERMINAL_SCREEN_HEIGHT = 1080
TERMINAL_LEFT = 476
TERMINAL_TOP = 74
TERMINAL_RIGHT = 1793
TERMINAL_BOTTOM = 876
TERMINAL_VPS = 0
TERMINAL_KEYSTATE_TAB = 0
TERMINAL_KEYSTATE_ENTER = 0
TERMINAL_KEYSTATE_SHIFT = 0
TERMINAL_KEYSTATE_CONTROL = 0
TERMINAL_KEYSTATE_MENU = 0
TERMINAL_KEYSTATE_CAPSLOCK = 0
TERMINAL_KEYSTATE_ESCAPE = 0
TERMINAL_KEYSTATE_PAGEUP = 0
TERMINAL_KEYSTATE_PAGEDOWN = 0
TERMINAL_KEYSTATE_END = 0
TERMINAL_KEYSTATE_HOME = 0
TERMINAL_KEYSTATE_LEFT = 0
TERMINAL_KEYSTATE_UP = 0
TERMINAL_KEYSTATE_RIGHT = 0
TERMINAL_KEYSTATE_DOWN = 0
TERMINAL_KEYSTATE_INSERT = 0
TERMINAL_KEYSTATE_DELETE = 0
TERMINAL_KEYSTATE_NUMLOCK = 1
TERMINAL_KEYSTATE_SCRLOCK = 0
TerminalInfoDouble(ENUM_TERMINAL_INFO_DOUBLE):
TERMINAL_COMMUNITY_BALANCE = 0.0
TERMINAL_RETRANSMISSION = 26.699029126213592
TerminalInfoString(ENUM_TERMINAL_INFO_STRING):
TERMINAL_COMPANY = Raw Trading Ltd
TERMINAL_NAME = MetaTrader 5 IC Markets (SC)
TERMINAL_PATH = C:\Program Files\MetaTrader 5 IC Markets (SC)
TERMINAL_DATA_PATH = C:\Users\Amr\AppData\Roaming\MetaQuotes\Terminal\1640F6577B1C4EC659BF41EA9F6C38ED
TERMINAL_COMMONDATA_PATH = C:\Users\Amr\AppData\Roaming\MetaQuotes\Terminal\Common
TERMINAL_LANGUAGE = English
TERMINAL_CPU_NAME = 13th Gen Intel Core i7-13700KF
TERMINAL_OS_VERSION = Windows 11 build 22631
TERMINAL_CPU_ARCHITECTURE = AVX2 + FMA3
ИНФОРМАЦИЯ О ВРЕМЕННЫХ ЗОНАХ <<==============================
TimeTradeServer() = 2025.02.22 22:04:33 [datetime]
TimeCurrent() = 2025.02.21 23:56:59 [datetime]
TimeGMT() = 2025.02.22 20:04:33 [datetime]
TimeLocal() = 2025.02.22 23:04:33 [datetime]
TimeGMTOffset() = -10800 [int]
TimeDaylightSavings() = 0 [int]
ИНФОРМАЦИЯ OpenCL <<==============================
CLGetInfoInteger(cl_ctx,ENUM_OPENCL_PROPERTY_INTEGER):
CL_LAST_ERROR = 0
CL_DEVICE_COUNT = 1
CL_DEVICE_TYPE = CL_DEVICE_GPU(4)
CL_DEVICE_VENDOR_ID = 4098
CL_DEVICE_MAX_COMPUTE_UNITS = 16
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS = 3
CL_DEVICE_MAX_WORK_GROUP_SIZE = 256
CL_DEVICE_MAX_WORK_ITEM_SIZES = -1
CL_DEVICE_MAX_CLOCK_FREQUENCY = 1050
CL_DEVICE_GLOBAL_MEM_SIZE = 3221225472
CL_DEVICE_LOCAL_MEM_SIZE = 32768
CL_DEVICE_DOUBLE_FP_CONFIG = 63
CL_BUFFER_SIZE = 0
CL_KERNEL_WORK_GROUP_SIZE = -1
CL_KERNEL_LOCAL_MEM_SIZE = -1
CL_KERNEL_PRIVATE_MEM_SIZE = -1
CLGetInfoString(cl_ctx,ENUM_OPENCL_PROPERTY_STRING):
CL_PLATFORM_PROFILE = FULL_PROFILE
CL_PLATFORM_VERSION = OpenCL 2.1 AMD-APP (3075.13)
CL_PLATFORM_NAME = AMD Accelerated Parallel Processing
CL_PLATFORM_VENDOR = Advanced Micro Devices, Inc.
CL_PLATFORM_EXTENSIONS = cl_khr_icd cl_khr_d3d10_sharing cl_khr_d3d11_sharing cl_khr_dx9_media_sharing cl_amd_event_callback cl_amd_offline_devices
CL_ERROR_DESCRIPTION = неизвестная ошибка OpenCL 65536
CL_DEVICE_NAME = Pitcairn
CL_DEVICE_VENDOR = Advanced Micro Devices, Inc.
CL_DRIVER_VERSION = 3075.13
CL_DEVICE_PROFILE = FULL_PROFILE
CL_DEVICE_VERSION = OpenCL 1.2 AMD-APP (3075.13)
CL_DEVICE_EXTENSIONS = cl_khr_fp64 cl_amd_fp64 cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics .....
CL_DEVICE_OPENCL_C_VERSION = OpenCL C 1.2
CL_DEVICE_BUILT_IN_KERNELS =
PROGRAM INFORMATION <<==============================
Версия компилятора: 4755 (__MQLBUILD__), X64 Regular (__CPU_ARCHITECTURE__)
MQLInfoInteger(ENUM_MQL_INFO_INTEGER):
MQL_PROGRAM_TYPE = PROGRAM_SCRIPT(1)
MQL_DLLS_ALLOWED = 0
MQL_TRADE_ALLOWED = 0
MQL_DEBUG = 0
MQL_TESTER = 0
MQL_OPTIMIZATION = 0
MQL_VISUAL_MODE = 0
MQL_LICENSE_TYPE = LICENSE_FREE(0)
MQL_PROFILER = 0
MQL_MEMORY_USED = 1
MQL_FRAME_MODE = 0
MQL_MEMORY_LIMIT = 8388608
MQL_SIGNALS_ALLOWED = 0
MQL_CODEPAGE = 0
MQL_FORWARD = 0
MQL_HANDLES_USED = 0
MQL_STARTED_FROM_CONFIG = 0
MQL_GLOBAL_COUNTER = 15
MQLInfoString(ENUM_MQL_INFO_STRING):
MQL_PROGRAM_NAME = PrintXYZ_demo
MQL_PROGRAM_PATH = C:\Users\Amr\AppData\Roaming\MetaQuotes\Terminal\1640F6577B1C4EC659BF41EA9F6C38ED\MQL5\Scripts\PrintXYZ\PrintXYZ_demo.ex5
ИНФОРМАЦИЯ О ЧАРТЕ <<==============================
Chart(EURUSD,H1)
ChartGetInteger(chart_id,ENUM_CHART_PROPERTY_INTEGER):
CHART_MODE = CHART_CANDLES(1)
CHART_FOREGROUND = 0
CHART_SHIFT = 1
CHART_AUTOSCROLL = 1
CHART_SCALE = 4
CHART_SCALEFIX = 0
CHART_SCALEFIX_11 = 0
CHART_SCALE_PT_PER_BAR = 0
CHART_SHOW_OHLC = 0
CHART_SHOW_BID_LINE = 1
CHART_SHOW_ASK_LINE = 0
CHART_SHOW_LAST_LINE = 0
CHART_SHOW_PERIOD_SEP = 0
CHART_SHOW_GRID = 0
CHART_SHOW_VOLUMES = CHART_VOLUME_TICK(1)
CHART_SHOW_OBJECT_DESCR = 0
CHART_COLOR_BACKGROUND = clrBlack
CHART_COLOR_FOREGROUND = clrWhite
CHART_COLOR_GRID = clrLightSlateGray
CHART_COLOR_VOLUME = clrLimeGreen
CHART_COLOR_CHART_UP = clrLime
CHART_COLOR_CHART_DOWN = clrLime
CHART_COLOR_CHART_LINE = clrLime
CHART_COLOR_CANDLE_BULL = clrBlack
CHART_COLOR_CANDLE_BEAR = clrWhite
CHART_COLOR_BID = clrLightSlateGray
CHART_COLOR_ASK = clrRed
CHART_COLOR_LAST = 0,192,0
CHART_COLOR_STOP_LEVELVEL = clrRed
CHART_SHOW_TRADE_LEVELS = 1
CHART_BRING_TO_TOP = 1
CHART_SHOW_DATE_SCALE = 1
CHART_SHOW_PRICE_SCALE = 1
CHART_EVENT_OBJECT_CREATE = 0
CHART_EVENT_OBJECT_DELETE = 0
CHART_EVENT_MOUSE_MOVE = 1
CHART_MOUSE_SCROLL = 1
CHART_DRAG_TRADE_LEVELS = 1
CHART_SHOW_ONE_CLICK = 1
CHART_QUICK_NAVIGATION = 1
CHART_SHOW = 1
CHART_KEYBOARD_CONTROL = 1
CHART_EVENT_MOUSE_WHEEL = 0
CHART_CROSSHAIR_TOOL = 1
CHART_CONTEXT_MENU = 1
CHART_IS_DOCKED = 1
CHART_FLOAT_LEFT = 0
CHART_FLOAT_TOP = 0
CHART_FLOAT_RIGHT = 0
CHART_FLOAT_BOTTOM = 0
CHART_SHOW_TRADE_HISTORY = 1
CHART_VISIBLE_BARS = 76
CHART_WINDOWS_TOTAL = 1
CHART_WINDOW_IS_VISIBLE = 1
CHART_WINDOW_HANDLE = 8981358
CHART_FIRST_VISIBLE_BAR = 75
CHART_WIDTH_IN_BARS = 95
CHART_WIDTH_IN_PIXELS = 1506
CHART_HEIGHT_IN_PIXELS = 431
CHART_WINDOW_YDISTANCE = 0
CHART_IS_OBJECT = 0
CHART_IS_OFFLINE = 0
CHART_IS_MAXIMIZED = 1
CHART_IS_MINIMIZED = 0
CHART_SHOW_TICKER = 1
ChartGetDouble(chart_id,ENUM_CHART_PROPERTY_DOUBLE):
CHART_SHIFT_SIZE = 20.371599203715988
CHART_FIXED_MAX = 1.051
CHART_FIXED_MIN = 1.0387
CHART_POINTS_PER_BAR = 1.0
CHART_FIXED_POSITION = 0.0
CHART_PRICE_MIN = 1.0387
CHART_PRICE_MAX = 1.051
ChartGetString(chart_id,ENUM_CHART_PROPERTY_STRING):
CHART_COMMENT =
CHART_EXPERT_NAME =
CHART_SCRIPT_NAME = PrintXYZ_demo
ChartIndicatorName(0,0) = "iForexSessions"
ChartIndicatorName(0,1) = "MA(10)"
OBJECT INFORMATION <<==============================
ObjectGetInteger(chart_id,objname,ENUM_OBJECT_PROPERTY_INTEGER):
OBJPROP_COLOR = clrRed
OBJPROP_STYLE = STYLE_SOLID(0)
OBJPROP_WIDTH = 1
OBJPROP_BACK = 0
OBJPROP_SELECTED = 0
OBJPROP_TYPE = OBJ_HLINE(1)
OBJPROP_TIME = 1970.01.01 00:00:00
OBJPROP_SELECTABLE = 1
OBJPROP_CREATETIME = 1970.01.01 00:00:00
OBJPROP_TIMEFRAMES = OBJ_ALL_PERIODS(2097151)
OBJPROP_LEVELS = 0
OBJPROP_LEVELCOLOR = clrBlack
OBJPROP_LEVELSTYLE = STYLE_SOLID(0)
OBJPROP_LEVELWIDTH = 0
OBJPROP_ZORDER = 0
OBJPROP_HIDDEN = 0
OBJPROP_FONTSIZE = 0
OBJPROP_RAY_LEFT = 0
OBJPROP_RAY_RIGHT = 0
OBJPROP_ELLIPSE = 0
OBJPROP_ARROWCODE = 0
OBJPROP_ANCHOR = 0
OBJPROP_XDISTANCE = 0
OBJPROP_YDISTANCE = 0
OBJPROP_DIRECTION = GANN_UP_TREND(0)
OBJPROP_DEGREE = ELLIOTT_GRAND_SUPERCYCLE(0)
OBJPROP_DRAWLINES = 0
OBJPROP_STATE = 0
OBJPROP_XSIZE = 0
OBJPROP_YSIZE = 0
OBJPROP_PERIOD = PERIOD_CURRENT(0)
OBJPROP_DATE_SCALE = 0
OBJPROP_PRICE_SCALE = 0
OBJPROP_BGCOLOR = clrBlack
OBJPROP_CORNER = CORNER_LEFT_UPPER(0)
OBJPROP_CHART_SCALE = 0
OBJPROP_READONLY = 0
OBJPROP_BORDER_TYPE = BORDER_FLAT(0)
OBJPROP_CHART_ID = 0
OBJPROP_FILL = 0
OBJPROP_RAY = 0
OBJPROP_XOFFSET = 0
OBJPROP_YOFFSET = 0
OBJPROP_BORDER_COLOR = clrBlack
OBJPROP_ALIGN = ALIGN_RIGHT(0)
ObjectGetDouble(chart_id,objname,ENUM_OBJECT_PROPERTY_DOUBLE):
OBJPROP_PRICE = 1.04291
OBJPROP_LEVELVALUE = 0.0
OBJPROP_SCALE = 0.0
OBJPROP_ANGLE = 0.0
OBJPROP_DEVIATION = 0.0
ObjectGetString(chart_id,objname,ENUM_OBJECT_PROPERTY_STRING):
OBJPROP_NAME = Горизонтальная линия 54478
OBJPROP_TEXT =
OBJPROP_LEVELTEXT =
OBJPROP_TOOLTIP =
OBJPROP_FONT =
OBJPROP_BMPFILE =
OBJPROP_SYMBOL =
SYMBOL INFORMATION <<==============================
EURUSD, Евро против Доллара США
SymbolInfoInteger(symbol,ENUM_SYMBOL_INFO_INTEGER):
SYMBOL_SELECT = 1
SYMBOL_VOLUME = 0
SYMBOL_VOLUMEHIGH = 0
SYMBOL_VOLUMELOW = 0
SYMBOL_TIME = 2025.02.21 23:56:59
SYMBOL_DIGITS = 5
SYMBOL_SPREAD = 60
SYMBOL_TICKS_BOOKDEPTH = 10
SYMBOL_TRADE_CALC_MODE = SYMBOL_CALC_MODE_FOREX(0)
SYMBOL_TRADE_MODE = SYMBOL_TRADE_MODE_FULL(4)
SYMBOL_TRADE_STOPS_LEVEL = 0
SYMBOL_TRADE_FREEZE_LEVEL = 0
SYMBOL_TRADE_EXEMODE = SYMBOL_TRADE_EXECUTION_MARKET(2)
SYMBOL_SWAP_MODE = SYMBOL_SWAP_MODE_POINTS(1)
SYMBOL_SWAP_ROLLOVER3DAYS = WEDNESDAY(3)
SYMBOL_SPREAD_FLOAT = 1
SYMBOL_EXPIRATION_MODE = SYMBOL_EXPIRATION_ALL(15)
SYMBOL_FILLING_MODE = SYMBOL_FILLING_IOC(2)
SYMBOL_START_TIME = 1970.01.01 00:00:00
SYMBOL_EXPIRATION_TIME = 1970.01.01 00:00:00
SYMBOL_SESSION_DEALS = 0
SYMBOL_SESSION_BUY_ORDERS = 0
SYMBOL_SESSION_SELL_ORDERS = 0
SYMBOL_ORDER_MODE = SYMBOL_ALL_ORDERS(127)
SYMBOL_OPTION_RIGHT = SYMBOL_OPTION_RIGHT_CALL(0)
SYMBOL_OPTION_MODE = SYMBOL_OPTION_MODE_EUROPEAN(0)
SYMBOL_VISIBLE = 1
SYMBOL_CUSTOM = 0
SYMBOL_BACKGROUND_COLOR = 255,255,81
SYMBOL_CHART_MODE = SYMBOL_CHART_MODE_BID(0)
SYMBOL_ORDER_GTC_MODE = SYMBOL_ORDERS_GTC(0)
SYMBOL_MARGIN_HEDGED_USE_LEG = 0
SYMBOL_EXIST = 1
SYMBOL_TIME_MSC = 2025.02.21 23:56:59.637
SYMBOL_SECTOR = SECTOR_CURRENCY(12)
SYMBOL_INDUSTRY = INDUSTRY_UNDEFINED(0)
SYMBOL_SUBSCRIPTION_DELAY = 0
SymbolInfoDouble(symbol,ENUM_SYMBOL_INFO_DOUBLE):
SYMBOL_BID = 1.04572
SYMBOL_BIDHIGH = 1.05057
SYMBOL_BIDLOW = 1.04494
SYMBOL_ASK = 1.04632
SYMBOL_ASKHIGH = 1.05058
SYMBOL_ASKLOW = 1.04495
SYMBOL_LAST = 0.0
SYMBOL_LASTHIGH = 0.0
SYMBOL_LASTLOW = 0.0
SYMBOL_VOLUME_REAL = 0.0
SYMBOL_VOLUMEHIGH_REAL = 0.0
SYMBOL_VOLUMELOW_REAL = 0.0
SYMBOL_POINT = 0.00001
SYMBOL_TRADE_TICK_VALUE = 1.0
SYMBOL_TRADE_TICK_SIZE = 0.00001
SYMBOL_TRADE_CONTRACT_SIZE = 100000.0
SYMBOL_VOLUME_MIN = 0.01
SYMBOL_VOLUME_MAX = 200.0
SYMBOL_VOLUME_STEP = 0.01
SYMBOL_SWAP_LONG = -6.25
SYMBOL_SWAP_SHORT = 2.56
SYMBOL_MARGIN_INITIAL = 100000.0
SYMBOL_MARGIN_MAINTENANCE = 0.0
SYMBOL_MARGIN_LONG = 0.0
SYMBOL_MARGIN_SHORT = 0.0
SYMBOL_MARGIN_LIMIT = 0.0
SYMBOL_MARGIN_STOP = 0.0
SYMBOL_MARGIN_STOPLIMIT = 0.0
SYMBOL_TRADE_TICK_VALUE_PROFIT = 1.0
SYMBOL_TRADE_TICK_VALUE_LOSS = 1.0
SYMBOL_VOLUME_LIMIT = 0.0
SYMBOL_SESSION_VOLUME = 0.0
SYMBOL_SESSION_TURNOVER = 0.0
SYMBOL_SESSION_INTEREST = 0.0
SYMBOL_SESSION_BUY_ORDERS_VOLUME = 0.0
SYMBOL_SESSION_SELL_ORDERS_VOLUME = 0.0
SYMBOL_SESSION_OPEN = 1.05008
SYMBOL_SESSION_CLOSE = 1.05012
SYMBOL_SESSION_AW = 0.0
SYMBOL_SESSION_PRICE_SETTLEMENT = 0.0
SYMBOL_SESSION_PRICE_LIMIT_MIN = 0.0
SYMBOL_SESSION_PRICE_LIMIT_MAX = 0.0
SYMBOL_OPTION_STRIKE = 0.0
SYMBOL_MARGIN_HEDGED = 0.0
SYMBOL_TRADE_LIQUIDITY_RATE = 0.0
SYMBOL_TRADE_FACE_VALUE = 0.0
SYMBOL_TRADE_ACCRUED_INTEREST = 0.0
SYMBOL_PRICE_CHANGE = -0.419
SYMBOL_PRICE_VOLATILITY = 0.0
SYMBOL_PRICE_THEORETICAL = 0.0
SYMBOL_PRICE_DELTA = 0.0
SYMBOL_PRICE_THETA = 0.0
SYMBOL_PRICE_GAMMA = 0.0
SYMBOL_PRICE_VEGA = 0.0
SYMBOL_PRICE_RHO = 0.0
SYMBOL_PRICE_OMEGA = 0.0
SYMBOL_PRICE_SENSITIVITY = 0.0
SYMBOL_SWAP_SUNDAY = 0.0
SYMBOL_SWAP_MONDAY = 1.0
SYMBOL_SWAP_TUESDAY = 1.0
SYMBOL_SWAP_WEDNESDAY = 3.0
SYMBOL_SWAP_THURSDAY = 1.0
SYMBOL_SWAP_FRIDAY = 1.0
SYMBOL_SWAP_SATURDAY = 0.0
SymbolInfoString(symbol,ENUM_SYMBOL_INFO_STRING):
SYMBOL_BANK =
SYMBOL_DESCRIPTION = Евро против доллара США
SYMBOL_PATH = Forex\Majors\EURUSD
SYMBOL_CURRENCY_BASE = EUR
SYMBOL_CURRENCY_PROFIT = USD
SYMBOL_CURRENCY_MARGIN = EUR
SYMBOL_ISIN =
SYMBOL_BASIS =
SYMBOL_PAGE =
SYMBOL_FORMULA =
SYMBOL_CATEGORY =
SYMBOL_EXCHANGE =
SYMBOL_COUNTRY =
SYMBOL_SECTOR_NAME = Currency
SYMBOL_INDUSTRY_NAME = Undefined
SymbolInfoSessionTrade(): торговые сессии символа
SUNDAY:
MONDAY: 00:01-23:59
TUESDAY: 00:01-23:59
СРЕДА: 00:01-23:59
ЧЕТВЕРГ: 00:01-23:59
ПЯТНИЦА: 00:01-23:57
СУББОТА:
OrderCalcMargin(Buy, 1.0 Lot) = 104.63 USD
SymbolIsSynchronized(symbol) = true [bool]
ИНФОРМАЦИЯ О СЕРИЯХ <<==============================
SeriesInfoInteger(symbol,timeframe,ENUM_SERIES_INFO_INTEGER):
SERIES_BARS_COUNT = 169468
SERIES_FIRSTDATE = 1971.01.04 00:00:00
SERIES_SERVER_FIRSTDATE = 1971.01.04 00:00:00
SERIES_TERMINAL_FIRSTDATE = 1971.01.04 00:00:00
SERIES_SYNCHRONIZED = 1
SERIES_LASTBAR_DATE = 2025.02.21 23:00:00
POSITION INFORMATION <<==============================
PositionGetInteger(ENUM_POSITION_PROPERTY_INTEGER):
POSITION_TIME = 2025.02.14 06:54:15
POSITION_TYPE = POSITION_TYPE_SELL(1)
POSITION_MAGIC = 0
POSITION_IDENTIFIER = 925571424
POSITION_TIME_MSC = 2025.02.14 06:54:15.641
POSITION_TIME_UPDATE = 2025.02.14 06:54:15
POSITION_TIME_UPDATE_MSC = 2025.02.14 06:54:15.641
POSITION_TICKET = 925571424
POSITION_REASON = POSITION_REASON_CLIENT(0)
PositionGetDouble(ENUM_POSITION_PROPERTY_DOUBLE):
POSITION_VOLUME = 0.01
POSITION_PRICE_OPEN = 1.04571
POSITION_PRICE_CURRENT = 1.04632
POSITION_SL = 0.0
POSITION_TP = 0.0
POSITION_SWAP = 0.23
POSITION_PROFIT = -0.61
PositionGetString(ENUM_POSITION_PROPERTY_STRING):
POSITION_SYMBOL = EURUSD
POSITION_COMMENT =
POSITION_EXTERNAL_ID =
DEAL INFORMATION <<==============================
HistoryDealGetInteger(deal_ticket,ENUM_DEAL_PROPERTY_INTEGER):
DEAL_ORDER = 0
DEAL_TIME = 2024.10.06 23:42:08
DEAL_TYPE = DEAL_TYPE_BALANCE(2)
DEAL_ENTRY = DEAL_ENTRY_IN(0)
DEAL_MAGIC = 0
DEAL_POSITION_ID = 0
DEAL_TIME_MSC = 2024.10.06 23:42:08.966
DEAL_TICKET = 609261076
DEAL_REASON = DEAL_REASON_CLIENT(0)
HistoryDealGetDouble(deal_ticket,ENUM_DEAL_PROPERTY_DOUBLE):
DEAL_VOLUME = 0.0
DEAL_PRICE = 0.0
DEAL_COMMISSION = 0.0
DEAL_SWAP = 0.0
DEAL_PROFIT = 200.0
DEAL_FEE = 0.0
DEAL_SL = 0.0
DEAL_TP = 0.0
HistoryDealGetString(deal_ticket,ENUM_DEAL_PROPERTY_STRING):
DEAL_SYMBOL =
DEAL_COMMENT = Demo deposit
DEAL_EXTERNAL_ID =
HISTORY ORDER INFORMATION <<==============================
HistoryOrderGetInteger(order_ticket,ENUM_ORDER_PROPERTY_INTEGER):
ORDER_TIME_SETUP = 2025.02.14 06:54:15
ORDER_TIME_EXPIRATION = 1970.01.01 00:00:00
ORDER_TIME_DONE = 2025.02.14 06:54:15
ORDER_TYPE = ORDER_TYPE_SELL(1)
ORDER_TYPE_FILLING = ORDER_FILLING_IOC(1)
ORDER_TYPE_TIME = ORDER_TIME_GTC(0)
ORDER_STATE = ORDER_STATE_FILLED(4)
ORDER_MAGIC = 0
ORDER_POSITION_ID = 925571424
ORDER_TIME_SETUP_MSC = 2025.02.14 06:54:15.389
ORDER_TIME_DONE_MSC = 2025.02.14 06:54:15.641
ORDER_POSITION_BY_ID = 0
ORDER_TICKET = 925571424
ORDER_REASON = ORDER_REASON_CLIENT(0)
HistoryOrderGetDouble(order_ticket,ENUM_ORDER_PROPERTY_DOUBLE):
ORDER_VOLUME_INITIAL = 0.01
ORDER_VOLUME_CURRENT = 0.0
ORDER_PRICE_OPEN = 0.0
ORDER_PRICE_CURRENT = 1.04571
ORDER_PRICE_STOPLIMIT = 0.0
ORDER_SL = 0.0
ORDER_TP = 0.0
HistoryOrderGetString(order_ticket,ENUM_ORDER_PROPERTY_STRING):
ORDER_SYMBOL = EURUSD
ORDER_COMMENT =
ORDER_EXTERNAL_ID =
enum ENUM_TIMEFRAMES
{
PERIOD_CURRENT = 0,
PERIOD_M1 = 1,
PERIOD_M2 = 2,
PERIOD_M3 = 3,
PERIOD_M4 = 4,
PERIOD_M5 = 5,
ПЕРИОД_М6 = 6,
ПЕРИОД_М10 = 10,
ПЕРИОД_М12 = 12,
ПЕРИОД_М15 = 15,
ПЕРИОД_М20 = 20,
ПЕРИОД_М30 = 30,
ПЕРИОД_Ч1 = 16385,
ПЕРИОД_Ч2 = 16386,
ПЕРИОД_Ч3 = 16387,
ПЕРИОД_H4 = 16388,
ПЕРИОД_H6 = 16390,
ПЕРИОД_H8 = 16392,
ПЕРИОД_H12 = 16396,
ПЕРИОД_D1 = 16408,
PERIOD_W1 = 32769,
PERIOD_MN1 = 49153,
};
[year] [mon] [day] [hour] [min] [sec] [day_of_week] [day_of_year]
[0]2025 2 21 23 56 595 51
AccountInfoInteger(ACCOUNT_LOGIN) = 51986913 [long]
_Point = 0.00001 [double]
((int)1 << 16) | 0xFF = 69631 [uint]
*/
Обновления:
2025.02.15 - v.1.20 : Первоначальный выпуск.
2025.02.17 - v.1.30 : Добавлена функция PrintTesterStatistics(). Вывод дополнительной информации из существующих функций.
2025.02.20 - v.1.40 : Добавлена функция PrintOpenCL() - выводит свойства устройства OpenCL на вкладку Experts.
2025.02.21 - v.1.50 : Добавлен функционально-подобный макрос PrintExpr() - Выводит строковое выражение вместе с его значением и типом.
2025.02.22 - v.1.52 : Печать параметра перечисления в выводе информации о функции.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная публикация: https://www.mql5.com/en/code/56055

Простой стартовый скрипт для сбора данных и отправки их в CSV в порядке "старое-новое". В этом примере собираются данные только о цене закрытия.

Индикатор "Candle_size.mq5" был разработан для отображения размера свечей на графике, обеспечивая четкий и детальный визуальный анализ ценовых движений. Он вычисляет разницу между высокой и низкой ценой каждой свечи и отображает отформатированное значение в виде текста рядом с соответствующей свечой. Эта функция особенно полезна для трейдеров, которые хотят оценить волатильность или выявить определенные модели поведения цен.

Этот индикатор считывает историю торговли и строит график Cumulative P & L с течением времени, помогая визуальным трейдерам увидеть, сколько денег они зарабатывают или теряют с течением времени. Текущая версия имеет маргинальную погрешность в 0,02%, что связано с округлением плавающих значений и методами расчета. С учетом этой предельной погрешности ее можно считать чрезвычайно точной.

Скрипт, который при перетаскивании на график выводит в окне экспертов количество баров, находящихся на этом графике - как по волшебству.