Скачать MetaTrader 5

Как программно изменить описание Fibo уровня?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Andrey Kornishkin
8250
Andrey Kornishkin  

Подскажите пожалуйста как можно программно изменить описание Fibo уровня?

Нужно чтобы было вместо 50% строка с ценой "50% (1.0862)" 

Вручную это делается через свойство объекта.

Объект фибо создаю так:

//+------------------------------------------------------------------+
//| Cоздает "Уровни Фибоначчи" по заданным координатам               |
//+------------------------------------------------------------------+
bool FiboLevelsCreate(const long            chart_ID=0,        // ID графика
                      const string          name="FiboLevels", // имя объекта
                      const int             sub_window=0,      // номер подокна 
                      datetime              time1=0,           // время первой точки
                      double                price1=0,          // цена первой точки
                      datetime              time2=0,           // время второй точки
                      double                price2=0,          // цена второй точки
                      const color           clr=clrRed,        // цвет объекта
                      const ENUM_LINE_STYLE style=STYLE_SOLID, // стиль линии объекта
                      const int             width=1,           // толщина линии объекта
                      const bool            back=false,        // на заднем плане
                      const bool            selection=true,    // выделить для перемещений
                      const bool            ray_right=false,   // продолжение объекта вправо
                      const bool            hidden=true,       // скрыт в списке объектов
                      const long            z_order=0)         // приоритет на нажатие мышью
  {
//--- установим координаты точек привязки, если они не заданы
   ChangeFiboLevelsEmptyPoints(time1,price1,time2,price2);
//--- сбросим значение ошибки
   ResetLastError();
//--- создадим "Уровни Фибоначчи" по заданным координатам
   if(!ObjectCreate(chart_ID,name,OBJ_FIBO,sub_window,time1,price1,time2,price2))
     {
      Print(__FUNCTION__,
            ": не удалось создать \"Уровни Фибоначчи\"! Код ошибки = ",GetLastError());
      return(false);
     }
//--- установим цвет
   ObjectSetInteger(chart_ID,name,OBJPROP_COLOR,clr);
//--- установим стиль линии
   ObjectSetInteger(chart_ID,name,OBJPROP_STYLE,style);
//--- установим толщину линии
   ObjectSetInteger(chart_ID,name,OBJPROP_WIDTH,width);
//--- отобразим на переднем (false) или заднем (true) плане
   ObjectSetInteger(chart_ID,name,OBJPROP_BACK,back);
//--- включим (true) или отключим (false) режим выделения объекта для перемещений
//--- при создании графического объекта функцией ObjectCreate, по умолчанию объект
//--- нельзя выделить и перемещать. Внутри же этого метода параметр selection
//--- по умолчанию равен true, что позволяет выделять и перемещать этот объект
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTABLE,selection);
   ObjectSetInteger(chart_ID,name,OBJPROP_SELECTED,selection);
//--- включим (true) или отключим (false) режим продолжения отображения объекта вправо
   ObjectSetInteger(chart_ID,name,OBJPROP_RAY_RIGHT,ray_right);
//--- скроем (true) или отобразим (false) имя графического объекта в списке объектов
   ObjectSetInteger(chart_ID,name,OBJPROP_HIDDEN,hidden);
//--- установи приоритет на получение события нажатия мыши на графике
   ObjectSetInteger(chart_ID,name,OBJPROP_ZORDER,z_order);
//--- успешное выполнение
   return(true);
  }

 Затем после создания пытаюсь изменить текст уровня:

   if(upValue[1]<1000 && downValue[2]<1000)
     {
      ObjectDelete(0,"Fibo");
      FiboLevelsCreate(0,"Fibo",0,Time[0],downValue[2],Time[1],upValue[1],Red,STYLE_SOLID,1,false,true,false,true,0);
      ObjectSetFiboDescription("Fibo",4,"50.0%"+" (%$)");
     }

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

Andrey Kornishkin
8250
Andrey Kornishkin  

Cделал.

   if(upValue[1]<1000 && downValue[2]<1000)
     {
      ObjectDelete(0,"Fibo");
      FiboLevelsCreate(0,"Fibo",0,Time[0],downValue[2],Time[1],upValue[1],Red,STYLE_SOLID,1,false,true,false,false,0);
      ObjectSet("Fibo",OBJPROP_FIBOLEVELS,9);
      
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+0,0.0);
      ObjectSetFiboDescription("Fibo",0,"0.0  %$");
      
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+1,0.236);
      ObjectSetFiboDescription("Fibo",1,"23.6  %$");
      
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+2,0.382);
      ObjectSetFiboDescription("Fibo",2,"38.2  %$"); 
                       
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+3,0.5);
      ObjectSetFiboDescription("Fibo",3,"50.0  %$");
           
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+4,0.618);
      ObjectSetFiboDescription("Fibo",4,"61.8  %$");
      
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+5,1.0);
      ObjectSetFiboDescription("Fibo",5,"100.0  %$");
      
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+6,1.618);
      ObjectSetFiboDescription("Fibo",6,"161.8  %$"); 
                       
      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+7,2.618);
      ObjectSetFiboDescription("Fibo",7,"261.8  %$"); 

      ObjectSet("Fibo",OBJPROP_FIRSTLEVEL+8,4.236);
      ObjectSetFiboDescription("Fibo",8,"423.6  %$");                        
     }
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий