Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Вся история MQL5.community в одном месте!
thestereo
78
thestereo 2016.07.28 12:15 

Нужно чтобы отображались открытые позиции разными цветами как на смартфоне. Убыточные красным, прибыльные синим.

В самом МТ4 их не покрасить, но думаю есть индикатор который может разместить это все поверх графика.

Alexey Busygin
6433
Alexey Busygin 2016.07.29 10:02  
thestereo:

Нужно чтобы отображались открытые позиции разными цветами как на смартфоне. Убыточные красным, прибыльные синим.

В самом МТ4 их не покрасить, но думаю есть индикатор который может разместить это все поверх графика.

Это вам во фриланс надо обратится, или в маркете поискать
Yurij Izyumov
16313
Yurij Izyumov 2016.07.29 14:30  
thestereo:

Нужно чтобы отображались открытые позиции разными цветами как на смартфоне. Убыточные красным, прибыльные синим.

В самом МТ4 их не покрасить, но думаю есть индикатор который может разместить это все поверх графика.

открытые или уже закрытые ?
Alexey Busygin
6433
Alexey Busygin 2016.07.29 17:03  
Yurij Izyumov:
открытые или уже закрытые ?
отображались открытые позиции
Andrey Khatimlianskii
55847
Andrey Khatimlianskii 2016.07.29 21:08  
В маркете мой бесплатный индикатор есть, отображает стрелочками места открытия и тянет линии до цен закрытия (для открытых позиций — до текущей цены).
Alexey Viktorov
6038
Alexey Viktorov 2016.08.03 10:20  
thestereo:

Нужно чтобы отображались открытые позиции разными цветами как на смартфоне. Убыточные красным, прибыльные синим.

В самом МТ4 их не покрасить, но думаю есть индикатор который может разместить это все поверх графика.

Если такой устроит, держи.

/********************************************************************\
                                                                .mq4 |
                                            Copyright 2016, Viktorov |
                                                   v4forex@yandex.ru |
\********************************************************************/
#property copyright "Copyright 2016, Viktorov"
#property link      "v4forex@yandex.ru"
#property version   "1.00"
#property strict
#property indicator_chart_window
#property indicator_buffers 10

input color _color1  =  clrGreen;   // Цвет прибыльных ордеров
input color _color2  =  clrRed;     // Цвет убыточных ордеров
int buffers, bars_total; 
int shift, firstVisibleBar;
double Buf_0[];
double Buf_1[];
double Buf_2[];
double Buf_3[];
double Buf_4[];
double Buf_5[];
double Buf_6[];
double Buf_7[];
double Buf_8[];
double Buf_9[];

/**************Custom indicator initialization function**************/
int OnInit()
{
   shift = WindowBarsPerChart()-WindowFirstVisibleBar()+1;
    for(int i = 0; i < 10; i++)
     {
      SetIndexStyle (i, DRAW_SECTION);
       SetIndexShift(i, shift);
      SetIndexLabel(i, NULL);
     }
    IndicatorDigits(Digits());
   return(INIT_SUCCEEDED);
}/*******************************************************************/

/****************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[])
{
  bars_total = rates_total-1;
   mine();
  return(rates_total);
}/*******************************************************************/

void mine()
{
 int i, tickets[];
  shift = WindowBarsPerChart()-WindowFirstVisibleBar()+1;
   firstVisibleBar = fmin(bars_total, WindowFirstVisibleBar()+shift);
    TotalOrders(tickets);
     buffers = ArraySize(tickets);
    MyOnInit();
  for(i = 0; i < buffers; i++)
   {
    if(OrderSelect(tickets[i], SELECT_BY_TICKET))
      colorLevel(i, OrderOpenPrice() , OrderProfit()+OrderCommission()+OrderSwap());
   }
}/*******************************************************************/

void TotalOrders(int &t[])
{
 int i, ret = -1, total = OrdersTotal();
  ArrayFree(t);
   for(i = 0; i < total; i++)
    {
     if(OrderSelect(i, SELECT_BY_POS)&& OrderSymbol() == _Symbol && OrderType() < OP_SELLLIMIT)
      {
       ret++;
        ArrayResize(t, ret+1);
       t[ret] = OrderTicket();
      }
    }
}/*******************************************************************/

void colorLevel(int i, double openPrice, double profit)
{
 switch(i)
  {
 case 0:
   Buf_0[0] = openPrice;
   Buf_0[firstVisibleBar] = openPrice;
   break;
 case 1:
   Buf_1[0] = openPrice;
   Buf_1[firstVisibleBar] = openPrice;
   break;
 case 2:
   Buf_2[0] = openPrice;
   Buf_2[firstVisibleBar] = openPrice;
   break;
 case 3:
   Buf_3[0] = openPrice;
   Buf_3[firstVisibleBar] = openPrice;
   break;
 case 4:
   Buf_4[0] = openPrice;
   Buf_4[firstVisibleBar] = openPrice;
   break;
 case 5:
   Buf_5[0] = openPrice;
   Buf_5[firstVisibleBar] = openPrice;
   break;
 case 6:
   Buf_6[0] = openPrice;
   Buf_6[firstVisibleBar] = openPrice;
   break;
 case 7:
   Buf_7[0] = openPrice;
   Buf_7[firstVisibleBar] = openPrice;
   break;
 case 8:
   Buf_8[0] = openPrice;
   Buf_8[firstVisibleBar] = openPrice;
   break;
 case 9:
   Buf_9[0] = openPrice;
   Buf_9[firstVisibleBar] = openPrice;
   break;
    default: return;
  }
       if(profit > 0)
        SetIndexStyle(i, DRAW_SECTION, STYLE_DASHDOT, 1, _color1);
      else
        SetIndexStyle(i, DRAW_SECTION, STYLE_DASHDOT, 1, _color2);

}/*******************************************************************/

void MyOnInit()
{
   IndicatorBuffers(buffers);
    switch(buffers)
     {
    case 10:
     ArrayInitialize(Buf_9, EMPTY_VALUE);
     SetIndexBuffer(9, Buf_9, INDICATOR_DATA);
    case 9:
     ArrayInitialize(Buf_8, EMPTY_VALUE);
     SetIndexBuffer(8, Buf_8, INDICATOR_DATA);
    case 8:
     ArrayInitialize(Buf_7, EMPTY_VALUE);
     SetIndexBuffer(7, Buf_7, INDICATOR_DATA);
    case 7:
     ArrayInitialize(Buf_6, EMPTY_VALUE);
     SetIndexBuffer(6, Buf_6, INDICATOR_DATA);
    case 6:
     ArrayInitialize(Buf_5, EMPTY_VALUE);
     SetIndexBuffer(5, Buf_5, INDICATOR_DATA);
    case 5:
     ArrayInitialize(Buf_4, EMPTY_VALUE);
     SetIndexBuffer(4, Buf_4, INDICATOR_DATA);
    case 4:
     ArrayInitialize(Buf_3, EMPTY_VALUE);
     SetIndexBuffer(3, Buf_3, INDICATOR_DATA);
    case 3:
     ArrayInitialize(Buf_2, EMPTY_VALUE);
     SetIndexBuffer(2, Buf_2, INDICATOR_DATA);
    case 2:
     ArrayInitialize(Buf_1, EMPTY_VALUE);
     SetIndexBuffer(1, Buf_1, INDICATOR_DATA);
    case 1:
     ArrayInitialize(Buf_0, EMPTY_VALUE);
     SetIndexBuffer(0, Buf_0, INDICATOR_DATA);
   break;
      default: return;
     }
      for(int i = 0; i < buffers; i++)
       {
        SetIndexStyle (i, DRAW_SECTION);
         SetIndexShift(i, shift);
        SetIndexLabel(i, NULL);
       }
}/*******************************************************************/

void OnChartEvent(const int id,         // идентификатор события   
                  const long& lparam,   // параметр события типа long 
                  const double& dparam, // параметр события типа double 
                  const string& sparam) // параметр события типа string 

{
 mine();
}/*******************************************************************/


Можно было сделать горизонтальными линиями, но ...

Обзовите индикатор как вам нравится.

Файлы:
00.mq4 6 kb
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий