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

ProfitInfo

profitinfo@lifeindreamsworld_6255515370069694576.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

ProfitInfo — индикатор для MetaTrader 4, отображающий на графике статистику прибыли закрытых ордеров. Он показывает лоты, пипсы, прибыль в деньгах и процент доходности за сегодня, вчера, несколько прошедших дней, неделю, месяц и год. Информация обновляется каждые 10 секунд и размещается в выбранном углу графика.

Индикатор фильтрует ордера по магическому номеру, комментарию, символу и дате закрытия, что позволяет анализировать результаты конкретных стратегий. Положительные значения отображаются одним цветом, отрицательные — другим.

Все элементы отрисовки создаются как графические объекты OBJ_LABEL и удаляются при деинициализации индикатора. Поддерживается настройка размера, цвета шрифта и фона информационной панели.

Настройки программы

НастройкаОписание
MagicNumber MagicNumber — Магический номер ордера для фильтрации. Учитываются только ордера с указанным magic number. Значение по умолчанию: -1 (без фильтра).
CommentFilter CommentFilter — Текстовый фильтр по комментарию ордера. Отображаются только ордера, содержащие указанную подстроку в комментарии. Пустая строка — без фильтрации.
OnlyAttachedSymbol OnlyAttachedSymbol — Переключатель: при включении учитываются только ордера по текущему символу графика.
StartDateFilter StartDateFilter — Дата начала фильтрации в виде строки. Ордера, закрытые до этой даты, не учитываются.
Corner Corner — Угол графика для размещения информационной панели (левый верхний, правый верхний, левый нижний, правый нижний).
XOffset XOffset — Горизонтальный сдвиг информационной панели в пикселях от выбранного угла.
YOffset YOffset — Вертикальный сдвиг информационной панели в пикселях от выбранного угла.
BGColor BGColor — Цвет фона информационной панели.
FontSize FontSize — Размер шрифта текста в панели.
FontColor FontColor — Основной цвет шрифта текста в панели.
FontColorPlus FontColorPlus — Цвет шрифта для положительных значений.
FontColorMinus FontColorMinus — Цвет шрифта для отрицательных значений.
Получить полный код

Поиск по коду файла

#property version   "1.52"
#property strict

#property indicator_chart_window
#property indicator_buffers 0

extern int     MagicNumber          = -1;
extern string  CommentFilter        = "";
extern bool    OnlyAttachedSymbol   = TRUE;
extern string  StartDateFilter      = "";

extern ENUM_BASE_CORNER Corner      = CORNER_RIGHT_LOWER;
extern int     XOffset              = 0;
extern int     YOffset              = 0;

extern color   BGColor              = Black;
extern int     FontSize             = 8;
extern color   FontColor            = Gray;
extern color   FontColorPlus        = Green;
extern color   FontColorMinus       = FireBrick;

int      windowIndex                = 0;
double   pip_multiplier             = 1.0;
int      daySeconds                 = 86400;
string   Symb                       = "";
datetime startDateFilter            = 0;
datetime LastDrawProfitInfo         = 0;

string   IndiName                   = "ProfitInfo v1.5.2";

/*******************  Version history  ********************************

   v1.5.2 - 2016.03.13
   --------------------
      - fixed 2-digits XAU

   v1.5.1 - 2016.03.07
   --------------------
      - support 2-digits CFDs

   v1.5.0 - 2015.12.30
   --------------------
      - add lot column

   v1.4.3 - 2014.01.28
   --------------------
      - Background draw problem with offset

   v1.4.2 - 2013.11.13
   --------------------
      - Some percentage bug fixed

   v1.4.1 - 2013.11.04
   --------------------
      - Some bug fixed

   v1.4.0 - 2013.10.17
   --------------------
      - StartDateFilter: be?ll?that? a profitsz?m?t?s kezd? id?pontja
      - Show daily and monthly average gain
      - Refresh only every 10 seconds
      - Helyes sorrend? megjelen?t?s bal sarkok eset?n

   v1.3.2 - 2013.07.09
   --------------------
      - Fixed some bug in pip calculation logic
      - Comment filter
      - Background

   v1.3.1 - 2013.07.03
   --------------------
      - MagicNumber filter

***********************************************************************/

int init()
{
      // код доступен только после оплаты
   }

int start()
{
      // код доступен только после оплаты
   }

int deinit()
{
   DeleteAllObject();

   return(0);
}

void DrawProfitHistory() {

   if (LastDrawProfitInfo > TimeCurrent() - 10) return;
   LastDrawProfitInfo = TimeCurrent();

   datetime day, today, now, prevDay;

   int row = 0;
   int step = 1;
   if (Corner > 1)
   {
      row = 13;
      step = -1;
   }

   DrawBackground("ProfitInfo_00_BG1", Corner, 1 , 30, BGColor, 133, "gg");
   DrawBackground("ProfitInfo_00_BG2", Corner, 1 ,  5, BGColor, 133, "gg");

   if (Corner % 2 == 0)
   {
      DrawText(Corner, row, 0,   "LOT", FontColor, FontSize); 
      DrawText(Corner, row, 60,  "DATE", FontColor, FontSize); 
      DrawText(Corner, row, 130, "PIPS", FontColor, FontSize); 
      DrawText(Corner, row, 210, "PROFIT", FontColor, FontSize); 
      DrawText(Corner, row, 280, "GAIN %", FontColor, FontSize); 
   } else {
      DrawText(Corner, row, 280, "DATE", FontColor, FontSize); 
      DrawText(Corner, row, 210, "PIPS", FontColor, FontSize); 
      DrawText(Corner, row, 130, "PROFIT", FontColor, FontSize); 
      DrawText(Corner, row, 60,  "GAIN %", FontColor, FontSize); 
      DrawText(Corner, row, 0,   "LOT", FontColor, FontSize); 
   }
   row += step;
   DrawText(Corner, row, 0, "====================================", FontColor, FontSize); 
   row += step;

   now = TimeCurrent();
   today = StrToTime(TimeToStr(now, TIME_DATE));

   DrawDayHistoryLine(today, now, row, "Today");
   row += step;

   day = today; prevDay = GetPreviousDay(day - daySeconds);
   DrawDayHistoryLine(prevDay, day, row, "Yesterday");
   row += step;

   day = prevDay; prevDay = GetPreviousDay(day - daySeconds);
   DrawDayHistoryLine(prevDay, day, row);
   row += step;

   day = prevDay; prevDay = GetPreviousDay(day - daySeconds);
   DrawDayHistoryLine(prevDay, day, row);
   row += step;

   day = prevDay; prevDay = GetPreviousDay(day - daySeconds);
   DrawDayHistoryLine(prevDay, day, row);
   row += step;

   day = DateOfMonday();
   DrawDayHistoryLine(day, now, row, "Week");
   row += step;

   day = StrToTime(Year()+"."+Month()+".01");
   DrawDayHistoryLine(day, now, row, "Month");
   row += step;

   day = StrToTime(Year()+".01.01");
   DrawDayHistoryLine(day, now, row, "Year");
   row += step;

   DrawText(1, row, 0, "------------------------------------------------------------", Gray, FontSize); 
   row += step;

   if (AccountBalance() != 0.0)
   {
      double pips, profit, lots = 0;
      datetime firstOrderTime = GetHistoryInfoFromDate(day, now, pips, profit, lots);
      int oneDay = 86400; //int oneMonth = oneDay * 30.4;

      double daily   = MathDiv(MathDiv(profit, MathDiv(now - firstOrderTime, oneDay)), (AccountBalance() - profit)) * 100.0;
      double monthly = daily * 30.4;

      DrawText(Corner, row, 0, StringConcatenate("Monthly: ", DTS(monthly, 2), "%"), ColorOnSign(monthly), FontSize); 
      DrawText(Corner, row, 150, StringConcatenate("Daily: ", DTS(daily, 2), "%"), ColorOnSign(daily), FontSize); 
   }   
   row += step;

   DrawText(Corner, row, 0, "====================================", FontColor, FontSize); 
   row += step;
   if (Corner < 2) // if it's above, then it needs to be placed one lower for some reason
      row += step;

   string text = StringConcatenate(IndiName, " - Created by Ice FX - www.icefx.eu"); 
   DrawText(Corner, row, 0, text, DimGray, 7);
}

void DrawDayHistoryLine(datetime prevDay, datetime day, int row, string header = "") {

   if (header == "") header = TimeToStr(prevDay, TIME_DATE); 

   double pips, profit, percent, lots = 0.0;
   string text;

   GetHistoryInfoFromDate(prevDay, day, pips, profit, lots);
   double profitp = 0;
   if (AccountBalance() > 0) profitp = profit / (AccountBalance() - profit) * 100.0;

   if (Corner % 2 == 0)

Показано первые 50% кода (символов: 9024)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
902,40₽ ≈ $11.03