← К каталогу
Исходный код · ID 2416

PlusBotRecon

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 и перейдите к оплате.

Стоимость полного кода
383,90₽ ≈ $4.69