string BotOrdersTotal(bool noPending)
Возвращает строку с количеством ордеров: при включённом фильтре учитываются только рыночные позиции, иначе — все ордера.
Сообщите нам, если считаете, что материал размещён без разрешения.
Обращение по товару «plusbotrecon.mqh» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
PlusBotRecon — включаемый файл (include) для MetaTrader 4 на языке MQL4, входящий в проект MT5-MT4-Telegram-API-Bot. Он содержит набор отдельных функций, которые вызываются пользовательским классом CPlusBotRecon и предназначены для подготовки текстовых отчётов о состоянии торгового счёта и ордеров. Собственных классов, конструкторов и деструкторов файл не объявляет.
Файл предоставляет функции для подсчёта и перечисления текущих ордеров, получения сведений по конкретному ордеру из истории, подсчёта общего числа записей истории и формирования сводки по счёту. Часть функций возвращает агрегированные значения, часть — многострочный текст с параметрами ордеров, включая тикет, символ, тип, объём, цены, стоп-лосс, тейк-профит и время.
Дополнительно включены служебные функции форматирования, которые собирают пары ключ=значение для целых, вещественных, строковых, логических значений и даты-времени. Эти функции используются внутри файла для единообразного построения текстовых сообщений.
Файл не является торговым советником, индикатором или скриптом: он не содержит обработчиков событий и торговых операций, а служит вспомогательной библиотекой для формирования отчётности.
Классов: 0 · методов: 0 · конструкторов: 0 · деструкторов: 0 · отдельных функций: 11
string BotOrdersTotal(bool noPending)
Возвращает строку с количеством ордеров: при включённом фильтре учитываются только рыночные позиции, иначе — все ордера.
string BotOrdersTrade(bool noPending)
Формирует текстовый отчёт по текущим ордерам с перечислением их параметров; при включённом фильтре отбираются только рыночные позиции.
string BotOrdersTicket(int ticket, bool noPending)
Заготовка функции для получения сведений об ордере по тикету; в текущей реализации возвращает пустую строку.
string BotHistoryTicket(int ticket, bool noPending)
Формирует текстовый отчёт по одному закрытому ордеру из истории по его тикету; при включённом фильтре пропускает отложенные ордера.
string BotOrdersHistoryTotal(bool noPending)
Возвращает строку с общим количеством записей в истории ордеров.
string BotAccount(void)
Формирует текстовый отчёт по состоянию торгового счёта: номер, валюта, баланс, средства, маржа, свободная маржа и прибыль.
string strBotInt(string key, int val)
Вспомогательная функция форматирования: добавляет в текст пару ключ=значение для целочисленного значения.
string strBotDbl(string key, double val, int dgt)
Вспомогательная функция форматирования: добавляет в текст пару ключ=значение для вещественного числа с заданной точностью.
string strBotTme(string key, datetime val)
Вспомогательная функция форматирования: добавляет в текст пару ключ=значение для значения даты и времени.
string strBotStr(string key, string val)
Вспомогательная функция форматирования: добавляет в текст пару ключ=значение для строкового значения.
string strBotBln(string key, bool val)
Вспомогательная функция форматирования: добавляет в текст пару ключ=значение для логического значения в виде true или false.
#property strict
#define NL "\n"
string BotOrdersTotal(bool noPending=true)
{
int count=0;
int total=OrdersTotal();
if( total<=0 ) return( strBotInt("Total", count) );
if( noPending==false ) return( strBotInt("Total", total) );
for(int i=0;i<total;i++) {
OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
if( OrderType() <= 1 ) count++;
}
return( strBotInt( "Total", count ) );
}
string BotOrdersTrade(bool noPending=true)
{
int count=0;
string msg="";
const string strPartial="from #";
int total=OrdersTotal();
if( total<=0 ) return( msg );
for(int i=0;i<total;i++) {
OrderSelect( i, SELECT_BY_POS, MODE_TRADES );
if( noPending==true && OrderType() > 1 ) continue ;
else count++;
msg = StringConcatenate(msg, strBotInt( "Ticket",OrderTicket() ));
msg = StringConcatenate(msg, strBotStr( "Symbol",OrderSymbol() ));
msg = StringConcatenate(msg, strBotInt( "Type",OrderType() ));
msg = StringConcatenate(msg, strBotDbl( "Lots",OrderLots(),2 ));
msg = StringConcatenate(msg, strBotDbl( "OpenPrice",OrderOpenPrice(),5 ));
msg = StringConcatenate(msg, strBotDbl( "CurPrice",OrderClosePrice(),5 ));
msg = StringConcatenate(msg, strBotDbl( "StopLoss",OrderStopLoss(),5 ));
msg = StringConcatenate(msg, strBotDbl( "TakeProfit",OrderTakeProfit(),5 ));
msg = StringConcatenate(msg, strBotTme( "OpenTime",OrderOpenTime() ));
msg = StringConcatenate(msg, strBotTme( "CloseTime",OrderCloseTime() ));
if( StringFind( OrderComment(), strPartial )>=0 )
msg = StringConcatenate(msg, strBotStr( "PrevTicket", StringSubstr(OrderComment(),StringLen(strPartial)) ));
else
msg = StringConcatenate(msg, strBotStr( "PrevTicket", "0" ));
}
if( msg=="" ) return( msg );
msg = StringConcatenate(strBotInt( "Count",count ), msg);
return( msg );
}
string BotOrdersTicket(int ticket, bool noPending=true)
{
return( "" );
}
string BotHistoryTicket(int ticket, bool noPending=true)
{
string msg=NL;
const string strPartial="from #";
int total=OrdersHistoryTotal();
if( total<=0 ) return( msg );
if( OrderSelect( ticket, SELECT_BY_TICKET, MODE_HISTORY )==false ) return( msg );
if( noPending==true && OrderType() > 1 ) return( Показано первые 50% кода (символов: 3839)
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.