//+------------------------------------------------------------------+//| Prints the account specification to the Experts tab. |//+------------------------------------------------------------------+void PrintAccount()
{
if(AccountInfoInteger(ACCOUNT_LOGIN))
{
PROPERTIES(AccountInfoInteger,"",ENUM_ACCOUNT_INFO_INTEGER);
PROPERTIES(AccountInfoDouble,"",ENUM_ACCOUNT_INFO_DOUBLE);
PROPERTIES(AccountInfoString,"",ENUM_ACCOUNT_INFO_STRING);
}
}
//+------------------------------------------------------------------+//| Prints the terminal properties to the Experts tab. |//+------------------------------------------------------------------+void PrintTerminal()
{
if(TerminalInfoString(TERMINAL_COMPANY)!="")
{
PROPERTIES(TerminalInfoInteger,"",ENUM_TERMINAL_INFO_INTEGER);
PROPERTIES(TerminalInfoDouble,"",ENUM_TERMINAL_INFO_DOUBLE);
PROPERTIES(TerminalInfoString,"",ENUM_TERMINAL_INFO_STRING);
}
}
Диаграммы и графические объекты:
//+------------------------------------------------------------------+//| Prints the chart properties to the Experts tab. |//+------------------------------------------------------------------+void PrintChart(constlong chart_id) // 0 means the current chart
{
if(ChartSymbol(chart_id)!="")
{
PROPERTIES(ChartGetInteger,Param(chart_id),ENUM_CHART_PROPERTY_INTEGER);
PROPERTIES(ChartGetDouble,Param(chart_id),ENUM_CHART_PROPERTY_DOUBLE);
PROPERTIES(ChartGetString,Param(chart_id),ENUM_CHART_PROPERTY_STRING);
}
}
//+------------------------------------------------------------------+//| Prints the graphic object properties to the Experts tab. |//+------------------------------------------------------------------+void PrintObject(constlong chart_id, conststring name) // 0 means the current chart
{
if(ObjectFind(chart_id,name)>=0)
{
PROPERTIES(ObjectGetInteger,Params(chart_id,name),ENUM_OBJECT_PROPERTY_INTEGER);
PROPERTIES(ObjectGetDouble,Params(chart_id,name),ENUM_OBJECT_PROPERTY_DOUBLE);
PROPERTIES(ObjectGetString,Params(chart_id,name),ENUM_OBJECT_PROPERTY_STRING);
}
}
Информация о символах:
//+------------------------------------------------------------------+//| Prints the symbol specification to the Experts tab. |//+------------------------------------------------------------------+void PrintSymbol(conststring symbol)
{
Print(Symbol(),", ",SymbolInfoString(Symbol(),SYMBOL_DESCRIPTION));
if(SymbolSelect(symbol,true))
{
PROPERTIES(SymbolInfoInteger,Param(symbol),ENUM_SYMBOL_INFO_INTEGER);
PROPERTIES(SymbolInfoDouble,Param(symbol),ENUM_SYMBOL_INFO_DOUBLE);
PROPERTIES(SymbolInfoString,Param(symbol),ENUM_SYMBOL_INFO_STRING);
}
}
Открытые позиции и ордера:
//+------------------------------------------------------------------+//| Prints the position properties to the Experts tab. |//+------------------------------------------------------------------+void PrintPosition(constulong pos_ticket)
{
if((PositionGetInteger(POSITION_TICKET) == pos_ticket && pos_ticket != 0)
|| PositionSelectByTicket(pos_ticket))
{
PROPERTIES(PositionGetInteger,"",ENUM_POSITION_PROPERTY_INTEGER);
PROPERTIES(PositionGetDouble,"",ENUM_POSITION_PROPERTY_DOUBLE);
PROPERTIES(PositionGetString,"",ENUM_POSITION_PROPERTY_STRING);
}
}
//+------------------------------------------------------------------+//| Prints the order properties to the Experts tab. |//+------------------------------------------------------------------+void PrintOrder(constulong order_ticket)
{
if((OrderGetInteger(ORDER_TICKET) == order_ticket && order_ticket != 0)
|| OrderSelect(order_ticket))
{
PROPERTIES(OrderGetInteger,"",ENUM_ORDER_PROPERTY_INTEGER);
PROPERTIES(OrderGetDouble,"",ENUM_ORDER_PROPERTY_DOUBLE);
PROPERTIES(OrderGetString,"",ENUM_ORDER_PROPERTY_STRING);
}
}
Исторические сделки и ордера:
//+------------------------------------------------------------------+//| Prints the history deal properties to the Experts tab. |//+------------------------------------------------------------------+void PrintDeal(constulong deal_ticket)
{
if((HistoryDealGetInteger(deal_ticket,DEAL_TICKET) == deal_ticket && deal_ticket != 0)
|| HistoryDealSelect(deal_ticket))
{
PROPERTIES(HistoryDealGetInteger,Param(deal_ticket),ENUM_DEAL_PROPERTY_INTEGER);
PROPERTIES(HistoryDealGetDouble,Param(deal_ticket),ENUM_DEAL_PROPERTY_DOUBLE);
PROPERTIES(HistoryDealGetString,Param(deal_ticket),ENUM_DEAL_PROPERTY_STRING);
}
}
//+------------------------------------------------------------------+//| Prints the history order properties to the Experts tab. |//+------------------------------------------------------------------+void PrintHistoryOrder(constulong order_ticket)
{
if((HistoryOrderGetInteger(order_ticket,ORDER_TICKET) == order_ticket && order_ticket != 0)
|| HistoryOrderSelect(order_ticket))
{
PROPERTIES(HistoryOrderGetInteger,Param(order_ticket),ENUM_ORDER_PROPERTY_INTEGER);
PROPERTIES(HistoryOrderGetDouble,Param(order_ticket),ENUM_ORDER_PROPERTY_DOUBLE);
PROPERTIES(HistoryOrderGetString,Param(order_ticket),ENUM_ORDER_PROPERTY_STRING);
}
}
voidOnStart()
{
if(HistorySelect(0, TimeCurrent()))
{
int max = fmin(HistoryDealsTotal(), 3); // limit to 3 dealsfor(int i = 0; i < max; ++i)
{
// print the history deal properties to the Experts tab
PrintDeal(HistoryDealGetTicket(i));
Print("--------");
}
}
}
//+------------------------------------------------------------------+//| Prints the symbol specification to the Experts tab. |//+------------------------------------------------------------------+void PrintSymbol(conststring symbol)
{
Print(symbol,", ",SymbolInfoString(symbol,SYMBOL_DESCRIPTION));if(SymbolSelect(symbol,true))
{
PROPERTIES(SymbolInfoInteger,Param(symbol),ENUM_SYMBOL_INFO_INTEGER);
PROPERTIES(SymbolInfoDouble,Param(symbol),ENUM_SYMBOL_INFO_DOUBLE);
PROPERTIES(SymbolInfoString,Param(symbol),ENUM_SYMBOL_INFO_STRING);
}
}
Печать массивной информации (PrintXYZ) из терминала - библиотека для MetaTrader 5
Вывод этого скрипта может быть отправлен удаленному сотруднику службы поддержки или внештатному разработчику для помощи в обнаружении и устранении проблем в вашем терминале.
Печать массивной информации (PrintXYZ) из терминала - библиотека для MetaTrader 5
Вывод этого скрипта может быть отправлен удаленному сотруднику службы поддержки или внештатному разработчику для помощи в обнаружении и устранении проблем в вашем терминале.
При включении библиотеки 'PrintXYZ' в ваши проекты, эти функции станут доступны в окне автозаполнения MetaEditor везде, где вы наберете 'Print'. Вы можете быстро скомпилировать файл проекта для печати результатов MQL5-функций на вкладке "Эксперты", а затем решить, какая комбинация MQL-функции/значения перечисления будет лучше всего соответствовать вашим требованиям.
Для авторизации и пользования сайтом MQL5.com необходимо разрешить использование файлов Сookie.
Пожалуйста, включите в вашем браузере данную настройку, иначе вы не сможете авторизоваться.
Вы вошли в аккаунт. Двухфакторная аутентификация отключена. Настройте её заново и отсканируйте новый QR-код или продолжите с отключённой двухфакторной аутентификацией.
Просьба к читателям оставлять комментарии.
Рассмотрев ваши предложения о сценариях использования, я изменил функцию следующим образом
Тогда в вышеупомянутом цикле вы можете использовать PrintDeal(Ticket, true)
Редактировать:
Я предлагаю добавить новую функцию в вышеупомянутую коллекцию: PrintObject(string obj_name)Пример порочности.
Взболтать, но не смешивать.
Вы смешали.
Пример получился не корректным..
Но хорошо подходит для того, чтоб усвоить, что так делать нельзя)))
Тогда в вышеупомянутом цикле вы можете использовать PrintDeal(Ticket, true)
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2025.02.13 14:35
так делать нельзя)))
Даже не думал, что это предложение является спорным.
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2025.02.13 10:23
Помещение сделки в доступную таблицу истории и распечатывание свойств сделки - функционалы, которые не пересекаются.
В строку - это просто в строку, без каких-либо проверок и подготовок.
Кстати, не понимаю, зачем создавать функцию для распечатывания, когда гораздо полезнее функция в строку...
Например, в MT4 не понимаю OrderPrint, когда логичен OrderToString. Т.е. вместо одного шага навязывают два.Обновленные функции (полезны для отладки кода):
Макросы-помощники:
Информация об учетной записи и терминале:
Диаграммы и графические объекты:
Информация о символах:
Открытые позиции и ордера:
Исторические сделки и ордера:
Печать перечислений:
Печать переменной struct:
Тестовый скрипт:
Тестовый скрипт 2:
Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
Особенности языка mql5, тонкости и приёмы работы
fxsaber, 2025.02.12 22:40
Если, вдруг, MQ решат в торговой платформе (в этом году 18 лет с начала разработки) все же дать доступ к комиссиям, то скрипт это сразу покажет...
Решил посмотреть, есть комиссия или нет.
исправленная опечатка:
исправленная опечатка:
Печать массивной информации (PrintXYZ) из терминала - библиотека для MetaTrader 5
Вывод этого скрипта может быть отправлен удаленному сотруднику службы поддержки или внештатному разработчику для помощи в обнаружении и устранении проблем в вашем терминале.
https://www.mql5.com/en/code/56055
Печать массивной информации (PrintXYZ) из терминала - библиотека для MetaTrader 5
Вывод этого скрипта может быть отправлен удаленному сотруднику службы поддержки или внештатному разработчику для помощи в обнаружении и устранении проблем в вашем терминале.
https://www.mql5.com/en/code/56055
Автозаполнение в MetaEditor:
При включении библиотеки 'PrintXYZ' в ваши проекты, эти функции станут доступны в окне автозаполнения MetaEditor везде, где вы наберете 'Print'. Вы можете быстро скомпилировать файл проекта для печати результатов MQL5-функций на вкладке "Эксперты", а затем решить, какая комбинация MQL-функции/значения перечисления будет лучше всего соответствовать вашим требованиям.