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

!xps v8 profit-5.mq4

Вы автор или правообладатель?

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

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

О программе

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

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

Панель использует стандартные средства рисования объектов MQL4 (OBJ_LABEL) для размещения текста в углу графика. При удалении индикатора с графика все созданные объекты корректно удаляются через функцию deinit().

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

НастройкаОписание
SellOrderclr Цвет текста ордеров на продажу и отрицательной прибыли на панели.
BuyOrderclr Цвет текста ордеров на покупку и положительной прибыли на панели.
FontName Шрифт, используемый для текста на информационной панели.
fontsize Размер шрифта текста на информационной панели.
spacing Горизонтальное расстояние между столбцами информации на панели.
CurrentSymbolOnly Переключатель: при включении отображаются только ордера по текущему символу графика, при выключении — все ордера по всем символам.
Получить полный код

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

#property indicator_chart_window

int Corner=1;
int Window=0;
color TextClr       = Snow;
extern color SellOrderclr = Orange;
extern color BuyOrderclr  = DeepSkyBlue;
color Warna_Rugi       = SellOrderclr;
color Warna_Laba       = BuyOrderclr;
extern string FontName = "Arial Black";
extern int    fontsize = 9;
extern int spacing     = 50;
double posX            = 38;
double posY            = 0;
extern bool CurrentSymbolOnly=false;

int Font=fontsize;
int x= NULL;

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

int deinit()
  {

      for(int idx = 0; idx<OrdersTotal(); idx++) {
         ObjectDelete("Panel242"+idx);
         ObjectDelete("Panel243"+idx);
         ObjectDelete("PL"+idx);
      }

      ObjectDelete("Panel241"); 
      ObjectDelete("Panel243");     
      ObjectDelete("h");      
      ObjectDelete("Total1");
      ObjectDelete("Total2");

   return(0);
  }

void DisplayText(string objname, string text,int fontsize2, color clr, double C, double X, double Y, string font)
{

   ObjectDelete(objname);
   ObjectCreate(objname, OBJ_LABEL, Window, 0, 0);
   ObjectSetText(objname, text, fontsize, font, clr);
   ObjectSet(objname, OBJPROP_CORNER, Corner);
   ObjectSet(objname, OBJPROP_XDISTANCE, X+posX);
   ObjectSet(objname, OBJPROP_YDISTANCE, Y+posY);
}

int start()
  {
      // код доступен только после оплаты
   }
   int    counted_bars=IndicatorCounted();
   int    j;
   int    idx;
   string text;
   double PL;
   double total;

         if(x != NULL) {
            for(idx = 0; idx<x; idx++) {
               ObjectDelete("Panel242"+idx);
               ObjectDelete("Panel243"+idx);
            }

            ObjectDelete("Total1");
            ObjectDelete("Total2");
         }

         text = "";
         j=0;
         total = 0;

         DisplayText("Panel241", "Trades", fontsize , TextClr, 0, -6, 20 , FontName); 

         for (int i = OrdersTotal()-1 ; i >= 0; i--) 
         { 
            if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES) == true)
            { 
               if(CurrentSymbolOnly==true){
                 if(OrderType() == OP_BUY && ChartSymbol()==OrderSymbol()){

                  DisplayText("Panel242"+j, OrderSymbol(), fontsize, BuyOrderclr, 0, spacing, Font+28 + j * 18, FontName); 
                  PL = (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT)/10;
                  total = total + PL;
                  if(PL<0) DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName); 
                  else if(PL>0) DisplayText("Panel243"+j, "+"+DoubleToStr(PL, 0), fontsize, Warna_Laba, 0, -30, Font+28 + j * 18, FontName); 
                  else DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, TextClr, 0, -30, Font+28 + j * 18,FontName); 
               j=j+1;
               }
               if(OrderType() == OP_SELL && ChartSymbol()==OrderSymbol())  {

                  DisplayText("Panel242"+j, OrderSymbol(), fontsize, SellOrderclr, 0, spacing, Font+28 + j * 18, FontName); 
                  PL = (OrderOpenPrice()-OrderClosePrice())/MarketInfo(OrderSymbol(),MODE_POINT)/10;
                  total = total + PL;
                  if(PL<0) DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName); 
                  else if(PL>0) DisplayText("Panel243"+j,"+"+DoubleToStr(PL, 0), fontsize, Warna_Laba, 0, -30, Font+28 + j * 18, FontName); 
                  else DisplayText("Panel243"+j,DoubleToStr(PL, 0), fontsize, TextClr, 0, -30, Font+28 + j * 18, FontName); 
               j=j+1;
               }
               DisplayText("Total1","Total", fontsize, TextClr, 0, spacing, Font+28 + j * 18, FontName);

               if(total<0) DisplayText("Total2", DoubleToStr(total, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName);
               else if (total>0) DisplayText("Total2","+" + DoubleToStr(total, 0),fontsize , Warna_Laba, 0, -30, Font+28 + j * 18, FontName);
               else DisplayText("Total2", DoubleToStr(total, 0), fontsize, White, 0, -30, Font+28 + j * 18, FontName);

                x=j;

              }else{

               if(OrderType() == OP_BUY)  {

                  DisplayText("Panel242"+j, OrderSymbol(), fontsize, BuyOrderclr, 0, spacing, Font+28 + j * 18, FontName); 
                  PL = (OrderClosePrice()-OrderOpenPrice())/MarketInfo(OrderSymbol(),MODE_POINT)/10;
                  total = total + PL;
                  if(PL<0) DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, Warna_Rugi, 0, -30, Font+28 + j * 18, FontName); 
                  else if(PL>0) DisplayText("Panel243"+j, "+"+DoubleToStr(PL, 0), fontsize, Warna_Laba, 0, -30, Font+28 + j * 18, FontName); 
                  else DisplayText("Panel243"+j, DoubleToStr(PL, 0), fontsize, TextClr, 0, -30, Font+28 + j * 18,FontName); 
     

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

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

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

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

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

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

Стоимость полного кода
528,30₽ ≈ $6.46