Текстовые метки в индикаторах

 


Господа.
Есть желание вывести на экран некоторую информацию:
...
int labelCorner[] = {ANCHOR_LEFT_UPPER, ANCHOR_LEFT, ANCHOR_LEFT_LOWER,
                             ANCHOR_LOWER,
                             ANCHOR_RIGHT_LOWER, ANCHOR_RIGHT, ANCHOR_RIGHT_UPPER, 
                             ANCHOR_UPPER, 
                             ANCHOR_CENTER};
string labelName[] = {"ANCHOR_LEFT_UPPER", "ANCHOR_LEFT", "ANCHOR_LEFT_LOWER",
                                "ANCHOR_LOWER",
                                "ANCHOR_RIGHT_LOWER", "ANCHOR_RIGHT", "ANCHOR_RIGHT_UPPER", 
                                "ANCHOR_UPPER", 
                                "ANCHOR_CENTER"};

int OnInit()
{
//--- indicator buffers mapping
//---
return(0);
}

void OnDeinit(const int reason)
{
       for (int i = 0; i < 9; i++)
            ObjectDelete(0, labelName[i]);
}
//+------------------------------------------------------------------+
//| 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[])
{
      for (int i = 0; i < 9; i++)
            if (prev_calculated < rates_total)
            {
                  createLabels(labelName[i], labelCorner[i]);
                  Alert(labelName[i], " ", labelCorner[i]);
            }
//---
//--- return value of prev_calculated for next call
      return(rates_total);
}

void createLabels(string label_name, int label_corner)
{
      ObjectCreate(0, label_name, OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger(0, label_name, OBJPROP_ANCHOR, label_corner);
      (или/и) ObjectSetInteger(0, label_name, OBJPROP_CORNER, label_corner);
      //ObjectSetInteger(0, label_name, OBJPROP_XDISTANCE, dx);
      //ObjectSetInteger(0, label_name, OBJPROP_YDISTANCE, dy);
      //ObjectSetInteger(0, label_name, OBJPROP_COLOR, clr);
      //ObjectSetInteger(0, label_name, OBJPROP_FONTSIZE, 9);
      //ObjectSetString(0, label_name, OBJPROP_FONT, "Arial");
      ObjectSetString(0, label_name, OBJPROP_TEXT, label_name);
      ObjectSetInteger(0, label_name, OBJPROP_SELECTABLE, false);
}
...
но нет возможности.

На прилагаемом снимке экрана видно, что почти все Label попали в верхний левый угол.
Возможно ошибка в ENUM_ANCHOR_POINT
Не можно ли сделать как в MT4? что бы прилипало в указанном углу?

Спасибо.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Типы объектов - Документация по MQL5
Файлы:
 

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


 

Rosh, извините, но я не понял, что от меня требуется.
С уважением и пр.

 
FlyAgaric:

Rosh, извините, но я не понял, что от меня требуется.
С уважением и пр.

код постить по нормальному...

int labelCorner[] = {ANCHOR_LEFT_UPPER, ANCHOR_LEFT, ANCHOR_LEFT_LOWER,
                             ANCHOR_LOWER,
                             ANCHOR_RIGHT_LOWER, ANCHOR_RIGHT, ANCHOR_RIGHT_UPPER, 
                             ANCHOR_UPPER, 
                             ANCHOR_CENTER};
string labelName[] = {"ANCHOR_LEFT_UPPER", "ANCHOR_LEFT", "ANCHOR_LEFT_LOWER",
                                "ANCHOR_LOWER",
                                "ANCHOR_RIGHT_LOWER", "ANCHOR_RIGHT", "ANCHOR_RIGHT_UPPER", 
                                "ANCHOR_UPPER", 
                                "ANCHOR_CENTER"};

int OnInit()
{
//--- indicator buffers mapping
//---
return(0);
}

void OnDeinit(const int reason)
{
       for (int i = 0; i < 9; i++)
            ObjectDelete(0, labelName[i]);
}
//+------------------------------------------------------------------+
//| 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[])
{
      for (int i = 0; i < 9; i++)
            if (prev_calculated < rates_total)
            {
                  createLabels(labelName[i], labelCorner[i]);
                  Alert(labelName[i], " ", labelCorner[i]);
            }
//---
//--- return value of prev_calculated for next call
      return(rates_total);
}

void createLabels(string label_name, int label_corner)
{
      ObjectCreate(0, label_name, OBJ_LABEL, 0, 0, 0);
      ObjectSetInteger(0, label_name, OBJPROP_ANCHOR, label_corner);
      (или/и) ObjectSetInteger(0, label_name, OBJPROP_CORNER, label_corner);
      //ObjectSetInteger(0, label_name, OBJPROP_XDISTANCE, dx);
      //ObjectSetInteger(0, label_name, OBJPROP_YDISTANCE, dy);
      //ObjectSetInteger(0, label_name, OBJPROP_COLOR, clr);
      //ObjectSetInteger(0, label_name, OBJPROP_FONTSIZE, 9);
      //ObjectSetString(0, label_name, OBJPROP_FONT, "Arial");
      ObjectSetString(0, label_name, OBJPROP_TEXT, label_name);
      ObjectSetInteger(0, label_name, OBJPROP_SELECTABLE, false);
}
 
kombat писал(а)  :

код постить по нормальному...

Спасибо.
Я пока не очень освоил этот форум.
 
FlyAgaric писал(а)  :

Rosh, извините, но я не понял, что от меня требуется.
С уважением и пр.

Rosh, я разобрался. Извините за беспокойство.
Причина обращения: