Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Есть вопросы к автору программы - задай их в разделе Обсуждение
Andrew Kornishkin
6683
Andrew Kornishkin 2015.11.06 02:21 

Подскажите пожалуйста как можно программно изменить описание 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%"+" (%$)");
     }

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

Andrew Kornishkin
6683
Andrew Kornishkin 2015.11.06 04:14  

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  %$");                        
     }
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий