Группа "Стол заказов MQL"

Рейтинг 2088



РЕКОМЕНДУЮ



Напешите простелький индикатор прибыли - убытка.

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


  • 0
  • Просмотров: 4767
  • 21 мая 2016, 01:27
  • sidoyy
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Нужен Эксперт – РСИ + КЕЛТНЕР.
Следующая запись в группе  
Советник - помошник
20 мая 2016
21 мая 2016

Комментарии (26)

+
0
avatar

  10  cardon Сообщений: 376

  • 21 мая 2016, 09:29
+
0
много не нужной информации… не подходит… когда в терменаеле открыто много графиков он будет только мешать… по скольку розмеры графиков будут маленькие
avatar

  4  sidoyy Автор Сообщений: 80

  • 21 мая 2016, 11:27
+
0
Тут www.opentraders.ru/downloads/?type=0&category=2 полно разных индикаторов если хорошо поискать найдешь то что нужно)*wizard* 
avatar

  7  Vitalik5675 Сообщений: 282

  • 21 мая 2016, 12:51
+
0
ха:) 
avatar

  10  cardon Сообщений: 376

  • 21 мая 2016, 11:40
+
0
Сделаю когда будет 3-й уровень.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 21 мая 2016, 13:13
+
0
Пока сделано в виде советника, чтобы можно было погонять в тестере, если все нормально перепишу на индикатор. По ТЗ все есть.




//+------------------------------------------------------------------+
//|                                                       Profit.mq4 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

input int XRectSize = 130;
input int YRectSize = 30;
input int XRectDist = 20;
input int YRectDist = 20;
input int RectCorner = 0;
input color RectColor = Blue;

input int XLabelDist = 25;
input int YLabelDist = 25;
input int LabelCorner = 0;
input color ProfitColor = White;
input color LossColor = Yellow;
input int LabelFSize = 12;
input string LabelFont = "Arial";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel()
  {
   ObjectCreate(0,"R",OBJ_RECTANGLE_LABEL,0,0,0);

//--- установим координаты метки
   ObjectSetInteger(0,"R",OBJPROP_XDISTANCE,XRectDist);
   ObjectSetInteger(0,"R",OBJPROP_YDISTANCE,YRectDist);
//--- установим размеры метки
   ObjectSetInteger(0,"R",OBJPROP_XSIZE,XRectSize);
   ObjectSetInteger(0,"R",OBJPROP_YSIZE,YRectSize);
//--- установим цвет фона
   ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,RectColor);
//--- установим тип границы
   ObjectSetInteger(0,"R",OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"R",OBJPROP_CORNER,RectCorner);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text)
  {
   ObjectDelete(0,"L");
//--- создадим текстовую метку
   ObjectCreate(0,"L",OBJ_LABEL,0,0,0);

//--- установим координаты метки
   ObjectSetInteger(0,"L",OBJPROP_XDISTANCE,XLabelDist);
   ObjectSetInteger(0,"L",OBJPROP_YDISTANCE,YLabelDist);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"L",OBJPROP_CORNER,LabelCorner);
//--- установим текст
   ObjectSetString(0,"L",OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,"L",OBJPROP_FONT,LabelFont);
//--- установим размер шрифта
   ObjectSetInteger(0,"L",OBJPROP_FONTSIZE,LabelFSize);
//--- установим цвет
   if(AllProfit()>0) ObjectSetInteger(0,"L",OBJPROP_COLOR,ProfitColor);
   else ObjectSetInteger(0,"L",OBJPROP_COLOR,LossColor);
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   PutRectLabel();
   PutLabel("Profit: "+(string)NormalizeDouble(AllProfit(),2)+"$");
   if(IsTesting() && OrdersTotal()<1) int r=OrderSend(NULL,0,0.1,Ask,33,Ask-555*Point,Ask+555*Point,"",0,0,Green);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 21 мая 2016, 16:58
+
0
Cделал в виде индикатора: www.opentraders.ru/downloads/1183/

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 22 мая 2016, 07:36
+
0
все нормально спасибо за работу… только маленький нюанс… свечи получаются по верх индикатора
можно это поправить?
avatar

  4  sidoyy Автор Сообщений: 80

  • 26 мая 2016, 22:11
+
0
а у меня что то ни чего не произошло после замены индикатора
avatar

  4  sidoyy Автор Сообщений: 80

  • 26 мая 2016, 23:37
+
0
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 26 мая 2016, 23:04
+
0
а у меня что то ни чего не произошло после замены индикатора
avatar

  4  sidoyy Автор Сообщений: 80

  • 26 мая 2016, 23:38
+
0
может файл не обновился:


//+------------------------------------------------------------------+
//|                                                       Profit.mq4 |
//|                                              Copyright 2016, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, AM2."
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict
#property indicator_chart_window

// Настройки фона
input int XRectSize = 130;// ширина по Х
input int YRectSize = 30; // ширина по Y
input int XRectDist = 20; // отступ от угла по Х
input int YRectDist = 20; // отступ от угла по Y
input int RectCorner = 0; // какой угол
input color RectColor=Blue;// цвет фона

                           // Настройки теста
input int XLabelDist = 25;// отступ от угла по Х
input int YLabelDist = 25;// отступ от угла по Y
input int LabelCorner = 0;// какой угол
input color ProfitColor = White;  // цвет профита
input color LossColor = Yellow;   // цвет убытка
input int LabelFSize = 12;        // размер шрифта
input string LabelFont = "Arial"; // тип шрифта
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
   ObjectDelete(0,"R");
   ObjectDelete(0,"L");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel()
  {
   ObjectCreate(0,"R",OBJ_RECTANGLE_LABEL,0,0,0);

//--- установим координаты метки
   ObjectSetInteger(0,"R",OBJPROP_XDISTANCE,XRectDist);
   ObjectSetInteger(0,"R",OBJPROP_YDISTANCE,YRectDist);
//--- установим размеры метки
   ObjectSetInteger(0,"R",OBJPROP_XSIZE,XRectSize);
   ObjectSetInteger(0,"R",OBJPROP_YSIZE,YRectSize);
//--- установим цвет фона
   ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,RectColor);
//--- установим тип границы
   ObjectSetInteger(0,"R",OBJPROP_BORDER_TYPE,BORDER_RAISED);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"R",OBJPROP_CORNER,RectCorner);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(0,"R",OBJPROP_BACK,false);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text)
  {
   ObjectDelete(0,"L");
//--- создадим текстовую метку
   ObjectCreate(0,"L",OBJ_LABEL,0,0,0);

//--- установим координаты метки
   ObjectSetInteger(0,"L",OBJPROP_XDISTANCE,XLabelDist);
   ObjectSetInteger(0,"L",OBJPROP_YDISTANCE,YLabelDist);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"L",OBJPROP_CORNER,LabelCorner);
//--- установим текст
   ObjectSetString(0,"L",OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,"L",OBJPROP_FONT,LabelFont);
//--- установим размер шрифта
   ObjectSetInteger(0,"L",OBJPROP_FONTSIZE,LabelFSize);
//--- установим цвет
   if(AllProfit()>0) ObjectSetInteger(0,"L",OBJPROP_COLOR,ProfitColor);
   else ObjectSetInteger(0,"L",OBJPROP_COLOR,LossColor);
  }
//+------------------------------------------------------------------+
//| Профит всех ордеров по типу ордера                               |
//+------------------------------------------------------------------+
double AllProfit(int ot=-1)
  {
   double pr=0;
   for(int i=OrdersTotal()-1;i>=0;i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol())
           {
            if(OrderType()==0 && (ot==0 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }

            if(OrderType()==1 && (ot==1 || ot==-1))
              {
               pr+=OrderProfit()+OrderCommission()+OrderSwap();
              }
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   PutRectLabel();
   PutLabel("Profit: "+(string)NormalizeDouble(AllProfit(),2)+"$");
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 26 мая 2016, 23:40
+
0
загрузил уже его в другой терминал и одно и то же
avatar

  4  sidoyy Автор Сообщений: 80

  • 27 мая 2016, 00:12
+
0
загрузил уже его в другой терминал и одно и то же


Вы пробовали вариант из последнего сообщения? у меня все работает, пробовал на двух терминалах.


Редактирован: 27 мая 2016, 06:41
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 27 мая 2016, 06:24
+
0
пробывал последнеее сообщение… не знаю в чем проблема но свечи по верх индикатора…
avatar

  4  sidoyy Автор Сообщений: 80

  • 27 мая 2016, 10:32
+
0
Мне нужно видеть что и как у вас в терминале а это только по скайпу: andrew.am2
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 27 мая 2016, 10:52
+
0
в скайпе часто бываете? заявку отправил
avatar

  4  sidoyy Автор Сообщений: 80

  • 6 июня 2016, 17:43
+
0
не очень. когда буду добавлю
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 6 июня 2016, 19:59
+
0
прошло больше недели с момента вашего обновления индикатора… но ни чего не изменилось… не скачаный не код скопированый не работает коректно график по вех индикатора получается
avatar

  4  sidoyy Автор Сообщений: 80

  • 7 июня 2016, 10:04
+
0
то что мог сделал.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 7 июня 2016, 10:48
+
0
так что бы по верх графика он был не получится сделать?
avatar

  4  sidoyy Автор Сообщений: 80

  • 7 июня 2016, 10:58
+
0
я не знаю в чем у вас причина. у меня все нормально. обратитесь к платному.
avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 7 июня 2016, 11:18
+
0
Может галочка стоит в свойствах графика ее надо убрать:) 
avatar

  7  Vitalik5675 Сообщений: 282

  • 7 июня 2016, 11:52
+
+2
оооооо действительно… теперь все нормально… Извеняюсь перед автором за мучения… все теперь работает*relax* *hi* 
avatar

  4  sidoyy Автор Сообщений: 80

  • 7 июня 2016, 12:58
+
0
подскажите как изменить (реализовать) код, чтобы расчет прибыли/убытка был в пунктах, а не в валюте депозита. Все тоже, только в пунктах В любом случае Спасибо
avatar

  2  chick-chick Сообщений: 1

  • 9 февраля 2017, 17:15
+
+1
Как то так:

...
int PointsProfit = (OrderOpenPrice()-Bid)/Point;

avatar

  34  AM2 Сообщений: 15882 - Андрей

  • 9 февраля 2017, 19:57

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари