Нужна небольшая помощь по коду индикатора

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
bar Vladimir
478
bar Vladimir  

Добрый день Всем!

Нужна небольшая помощь: скачал индикатор активности рынка, в котором процентное содержание находится внизу и когда ещё в нижнюю часть экрана добавляешь индикатор, то этих процентов не видно. Как его перенести в правый верхний угол? И ещё как убрать жёлтые линии вообще? Код прикладываю:

//+------------------------------------------------------------------+
//|                                               Rj_ActivMarket.mq4 |
//|                           Copyright © 2011, RJ Rjabkov Aleksandr |
//|                                                     rj-a@mail.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, RJ Rjabkov Aleksandr"
#property link      "rj-a@mail.ru"

#property indicator_chart_window

extern int smooth=12;

double VSlice[];
double Buff[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int init() 
  {
   IndicatorBuffers(2);
   SetIndexBuffer(0,VSlice);
   SetIndexBuffer(1,Buff);
   return(0);
  }
//***************   
int deinit() {for(int i=0; i<=200; i++) {ObjectDelete("m "+i);} ObjectDelete("marks"); return(0);}
//***************
int start() 
  {
   int i,cb;
   int counted_bars = IndicatorCounted();
   if(counted_bars < 0)  return(-1);
   if(counted_bars > 0)   counted_bars--;
   int limit = Bars - counted_bars;
   if(counted_bars==0) limit-=1+smooth;
   
   cb=limit;

   for(i=cb; i>=0; i--) Buff[i]=Volume[i]/(Period()*60);

   for(i=cb; i>=0; i--) VSlice[i]=smooth(Buff,smooth,i);

   int PercentActive=MathRound(VSlice[0]*100);
   double Marks=NormalizeDouble(VSlice[0]*100,2);
   color r=255,g=255,b=0;
   int CoordTime1=Time[0]+(WindowBarsPerChart()-WindowFirstVisibleBar()-3)*Period()*60;
   int CoordTime2=Time[0]+(WindowBarsPerChart()-WindowFirstVisibleBar()-6)*Period()*60;
   double CoordPrice=WindowPriceMin()+5*Point;
   color ColLine;

   for(i=0; i<=200; i++) {ObjectDelete("m "+i);}
   ObjectDelete("marks");

   for(i=0; i<=PercentActive; i++) 
     {
      if(g<0) g=0;
      ColLine=r+g*256+b*65536;
      ObjectCreate("m "+i,OBJ_TREND,0,0,0,0,0);
      ObjectSet("m "+i,OBJPROP_TIME1,CoordTime1);
      ObjectSet("m "+i,OBJPROP_TIME2,CoordTime2);
      ObjectSet("m "+i,OBJPROP_PRICE1,CoordPrice);
      ObjectSet("m "+i,OBJPROP_PRICE2,CoordPrice);
      ObjectSet("m "+i,OBJPROP_STYLE,DRAW_LINE);
      ObjectSet("m "+i,OBJPROP_WIDTH,0);
      ObjectSet("m "+i,OBJPROP_COLOR,ColLine);
      ObjectSet("m "+i,OBJPROP_BACK,false);
      ObjectSet("m "+i,OBJPROP_RAY,false);
      g-=2;
      CoordPrice+=0.00005;
     }
   ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);
   ObjectSetText("marks",DoubleToStr(Marks,2)+"%",36,"Arial",ColLine);
   return(0);
  }
//+------------------------------------------------------------------+
double smooth(double smooth_name[],int smooth,int count) 
  {
   double result;
   int smoothed=smooth+count;
   while(smoothed>count) 
     {
      result+=smooth_name[smoothed-1];
      smoothed--;
     }
   result=result/smooth;
   return(result);
  }
//+------------------------------------------------------------------+
bar Vladimir
478
bar Vladimir  
Полосы сам убрал, теперь только узнать, как переместить проценты в правый верхний угол графика.
Renat Akhtyamov
16178
Renat Akhtyamov  

OBJPROP_CORNER,1

при этом координата Х отсчитывается справа на лево

bar Vladimir
478
bar Vladimir  
Renat Akhtyamov:

OBJPROP_CORNER,1

при этом координата Х отсчитывается справа на лево

Не могли бы Вы показать, куда вставить OBJPROP_CORNER,1

Renat Akhtyamov
16178
Renat Akhtyamov  
bar Vladimir:

Не могли бы Вы показать, куда вставить OBJPROP_CORNER,1

функция выводит текст

void Prn_txt(string Name, int X, int Y, int Corner1, string Font, int Font_Size, color CLR, string TXT,int Window)
{
   ObjectDelete(0,Name);
   ObjectCreate(0,Name,OBJ_LABEL,Window,0,0);
   ObjectSetInteger(0,Name,OBJPROP_XDISTANCE,X);
   ObjectSetInteger(0,Name,OBJPROP_YDISTANCE,Y);
   ObjectSetInteger(0,Name,OBJPROP_CORNER,Corner1);
   ObjectSetString(0,Name,OBJPROP_TEXT,TXT);
   ObjectSetString(0,Name,OBJPROP_FONT,Font);
   ObjectSetInteger(0,Name,OBJPROP_FONTSIZE,Font_Size);
   ObjectSetInteger(0,Name,OBJPROP_COLOR,CLR);
   ObjectSetInteger(0,Name,OBJPROP_BACK,false);
   return;
}

bar Vladimir
478
bar Vladimir  
Renat Akhtyamov:

функция выводит текст

void Prn_txt(string Name, int X, int Y, int Corner1, string Font, int Font_Size, color CLR, string TXT,int Window)
{
   ObjectDelete(0,Name);
   ObjectCreate(0,Name,OBJ_LABEL,Window,0,0);
   ObjectSetInteger(0,Name,OBJPROP_XDISTANCE,X);
   ObjectSetInteger(0,Name,OBJPROP_YDISTANCE,Y);
   ObjectSetInteger(0,Name,OBJPROP_CORNER,Corner1);
   ObjectSetString(0,Name,OBJPROP_TEXT,TXT);
   ObjectSetString(0,Name,OBJPROP_FONT,Font);
   ObjectSetInteger(0,Name,OBJPROP_FONTSIZE,Font_Size);
   ObjectSetInteger(0,Name,OBJPROP_COLOR,CLR);
   ObjectSetInteger(0,Name,OBJPROP_BACK,false);
   return;
}

Это надо добавить вместо этого?

   if(g<0) g=0;

      ColLine=r+g*256+b*65536;

      ObjectCreate("m "+i,OBJ_TREND,0,1,0,0,0);

      ObjectSet("m "+i,OBJPROP_TIME1,CoordTime1);

      ObjectSet("m "+i,OBJPROP_TIME2,CoordTime2);

      ObjectSet("m "+i,OBJPROP_PRICE1,CoordPrice);

      ObjectSet("m "+i,OBJPROP_PRICE2,CoordPrice);

      ObjectSet("m "+i,OBJPROP_STYLE,DRAW_LINE);

      ObjectSet("m "+i,OBJPROP_WIDTH,0);

      ObjectSet("m "+i,OBJPROP_COLOR,ColLine);

      ObjectSet("m "+i,OBJPROP_BACK,false);

      ObjectSet("m "+i,OBJPROP_RAY,false);

      g-=2;

      CoordPrice+=0.00005;

     }

   ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);

   ObjectSetText("marks",DoubleToStr(Marks,0)+"%",14,"Arial",ColLine);

   return(0);

Renat Akhtyamov
16178
Renat Akhtyamov  
bar Vladimir:

Это надо добавить вместо этого?

   if(g<0) g=0;

      ColLine=r+g*256+b*65536;

      ObjectCreate("m "+i,OBJ_TREND,0,1,0,0,0);

      ObjectSet("m "+i,OBJPROP_TIME1,CoordTime1);

      ObjectSet("m "+i,OBJPROP_TIME2,CoordTime2);

      ObjectSet("m "+i,OBJPROP_PRICE1,CoordPrice);

      ObjectSet("m "+i,OBJPROP_PRICE2,CoordPrice);

      ObjectSet("m "+i,OBJPROP_STYLE,DRAW_LINE);

      ObjectSet("m "+i,OBJPROP_WIDTH,0);

      ObjectSet("m "+i,OBJPROP_COLOR,ColLine);

      ObjectSet("m "+i,OBJPROP_BACK,false);

      ObjectSet("m "+i,OBJPROP_RAY,false);

      g-=2;

      CoordPrice+=0.00005;

     }

   ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);

   ObjectSetText("marks",DoubleToStr(Marks,0)+"%",14,"Arial",ColLine);

   return(0);

смотрите сами

главно чтобы устроило

bar Vladimir
478
bar Vladimir  
Renat Akhtyamov:

смотрите сами

главно чтобы устроило

Не получается чего то. Может Вы бы вставили это в нужную строку, код ведь там выше есть?

Renat Akhtyamov
16178
Renat Akhtyamov  
bar Vladimir:

Не получается чего то. Может Вы бы вставили это в нужную строку, код ведь там выше есть?

сюда вставьте

   ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);

ObjectSet("marks",OBJPROP_CORNER,1);

   ObjectSetText("marks",DoubleToStr(Marks,0)+"%",14,"Arial",ColLine);

Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
Документация по MQL5: Константы, перечисления и структуры / Константы объектов / Типы объектов
  • www.mql5.com
При создании графического объекта функцией ObjectCreate() необходимо указать тип создаваемого объекта, который может принимать одно из значений перечисления ENUM_OBJECT. Дальнейшие уточнения свойств созданного объекта возможно с помощью функций по работе с графическими объектами.
bar Vladimir
478
bar Vladimir  
Renat Akhtyamov:

сюда вставьте

   ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);

ObjectSet("marks",OBJPROP_CORNER,1);

   ObjectSetText("marks",DoubleToStr(Marks,0)+"%",14,"Arial",ColLine);

Добрый день Ренат!

Сделал, как Вы написали, ничего не изменилось:

ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);

   ObjectSet("marks",OBJPROP_CORNER,1); 

   ObjectSetText("marks",DoubleToStr(Marks,0)+"%",14,"Arial",ColLine);

   return(0);

Renat Akhtyamov
16178
Renat Akhtyamov  
bar Vladimir:

Добрый день Ренат!

Сделал, как Вы написали, ничего не изменилось:

ObjectCreate("marks",OBJ_TEXT,0,((CoordTime2-CoordTime1)/2)+CoordTime1,CoordPrice+4*Point);

   ObjectSet("marks",OBJPROP_CORNER,1); 

   ObjectSetText("marks",DoubleToStr(Marks,0)+"%",14,"Arial",ColLine);

   return(0);

если в 5-рке (МТ5) то

ObjectSet("marks",OBJPROP_CORNER,3); 

если не повлияет, то хз

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