Группа "Стол заказов MQL"

Рейтинг 2089



РЕКОМЕНДУЮ




Лучшее от Sergey1



Нужна помощь. Комментариев 25
2016-04-25 16:21:30Рейтинг 0

Вопрос программистам Комментариев 9
2016-08-15 10:52:44Рейтинг 0

Переделать индикатор Комментариев 12
2016-08-15 13:53:37Рейтинг 0

Индикатор
2016-08-15 18:02:39Рейтинг 0

Внесение дополнений в индикатор.

Здравствуйте Андрей. Прошу Вас еще раз доработать уже доработанный Вами индикатор для более удобного его визуального восприятия. В значениях индикатора отображаемых на графике в виде двух строк с описанием и цифрами нужно добавить третью строку. Первую «На предыдущей» оставляем без изменения. Далее добавляем строку с названием «Открытие текущей» где значение индикатора будет фиксированное а цвет в зависимости от того больше, меньше или равно это значение по отношению к значению указанному в строке «На предыдущей», то есть, если значение равно предыдущему значению то цвет белый, если больше то синий, если меньше то красный. Третья строка «На текущей» меняет свой цвет в процессе движения цены от белого до синего и красного в зависимости от значения индикатора по отношению к значению указанному во второй строке «Открытие текущей», то есть значения равны цвет белый, значение больше цвет синий, значение меньше цвет красный. Надеюсь Вы меня поняли. Спасибо. Heiken_ashi_nonlagma_v4noviy2.mq4 (6 Kb)
  • 0
  • Просмотров: 2546
  • 9 июня 2016, 07:10
  • Sergey1
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Прошу написать советник
Следующая запись в группе  
Советник на RSI
08 июня 2016
09 июня 2016

Комментарии (48)

+
0
Далее добавляем строку с названием «Открытие текущей» где значение индикатора будет фиксированное а цвет в зависимости от того больше, меньше или равно это значение по отношению к значению указанному в строке «На предыдущей»,


Значения на открытии текущей и предыдущей будут равны, если только сравнивать с предпредыдушей :) 
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 9 июня 2016, 07:28
+
0
Нет с пред предыдущей сравнивать не нужно. Значение на открытии новой свечи может быть как равно так и больше или меньше чем значение на закрытии свечи. Это нормально. Свеча закрылась значение индикатора зафиксировалось, отобразилось в первой строке под названием «На предыдущей» и не меняется до закрытия следующей свечи. Открылась новая сеча и именно значение индикатора в момент открытия зафиксировалось, отобразилось во второй строке под название «Открытие текущей» и не меняется до открытия новой свечи. Строка под названием «На текущей» меняет свое значение в зависимости от движения цены в ту или другую сторону. То есть две первых строки имеют фиксированное значение индикатора о третья переменное. Цвета строк описаны выше. Спасибо.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 9 июня 2016, 12:06
+
0
Я еще посмотрю вечером отличаются или нет значения закрытия и открытия.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 9 июня 2016, 12:10
+
0
Конечно посмотрите. Все зависит от ситуации. Если смотреть в тренде, то значение на открытии всегда больше или меньше, в зависимости от направления тренда, чем на закрытии. При развороте тренда разница в этих значения начинает сокращаться и конечно же рано или поздно наступает момент когда они равны. Также могут быть равны во флете. Спасибо. Буду ждать.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 9 июня 2016, 12:41
+
0
Посмотрите, вроде похоже на правду:




//+------------------------------------------------------------------+
//|                                                  NonLagMA_v4.mq4 |
//|                                Copyright © 2006, TrendLaboratory |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                   E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory"
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomato
#property indicator_width3 2


//---- input parameters
extern int     Price          = 0;
extern int     Length         = 21;
extern int     Displace       = 0;
extern int     Sdvig=0; // с какой свечи считаем
extern int     Filter         = 0;
extern int     Color          = 1;
extern int     Corner         = 1;
extern int     FontSize       = 14;
extern int     ColorBarBack   = 0;
extern double  Deviation      = 0;
extern color   LableColor     = White;

double Cycle=4;
double OpenVal=0;
//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text,string name,int x,int y)
  {
   if(Corner==0 || Corner==2) x-=200;
//--- создадим текстовую метку
   if(ObjectFind(name)<0)
     {
      if(!ObjectCreate(0,name,OBJ_LABEL,0,0,0))
        {
         Print(__FUNCTION__,": не удалось создать текстовую метку! Код ошибки = ",GetLastError());
        }
     }
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,Corner);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FontSize);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,LableColor);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int ft=0;
   string short_name;
//---- indicator line
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MABuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,DnBuffer);
   SetIndexBuffer(3,price);
   SetIndexBuffer(4,trend);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   short_name="NonLagMA("+Length+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"NLMA");
   SetIndexLabel(1,"Up");
   SetIndexLabel(2,"Dn");
//----
   SetIndexShift(0,Displace);
   SetIndexShift(1,Displace);
   SetIndexShift(2,Displace);

   SetIndexDrawBegin(0,Length*Cycle+Length);
   SetIndexDrawBegin(1,Length*Cycle+Length);
   SetIndexDrawBegin(2,Length*Cycle+Length);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| NonLagMA_v4                                                     |
//+------------------------------------------------------------------+
int start()
  {
   int    i,shift,counted_bars=IndicatorCounted(),limit;
   double alfa,beta,t,Sum,Weight,g;
   double pi=3.1415926535;

   double Coeff=3*pi;
   int Phase=Length-1;
   double Len=Length*Cycle+Phase;

   if(counted_bars>0) limit=Bars-counted_bars;
   if( counted_bars < 0 )  return(0);
   if(counted_bars==0) limit=Bars-Len-1;
   if(counted_bars<1)

      for(i=1;i<Length*Cycle+Length;i++)
        {
         MABuffer[Bars-i]=0;
         UpBuffer[Bars-i]=0;
         DnBuffer[Bars-i]=0;
        }

   for(shift=limit;shift>=Sdvig;shift--)
     {
      Weight=0; Sum=0; t=0;

      for(i=0;i<=Len-1;i++)
        {
         g=1.0/(Coeff*t+1);
         if(t<= 0.5) g = 1;
         beta = MathCos(pi*t);
         alfa = g * beta;
         //if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i); 
         //else 
         price[i]=iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
         Sum+=alfa*price[i];
         Weight+=alfa;
         if(t<1) t+=1.0/(Phase-1);
         else if(t<Len-1) t+=(2*Cycle-1)/(Cycle*Length-1);
        }

      if(Weight>0) MABuffer[shift]=(1.0+Deviation/100)*Sum/Weight;

      if(Filter>0)
        {
         if(MathAbs(MABuffer[shift]-MABuffer[shift+1])<Filter*Point) MABuffer[shift]=MABuffer[shift+1];
        }

      if(Color>0)
        {
         trend[shift]=trend[shift+1];
         if(MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
         if(MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;

         if(trend[shift]>0)
           {
            UpBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            DnBuffer[shift]=EMPTY_VALUE;
           }

         if(trend[shift]<0)
           {
            DnBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            UpBuffer[shift]=EMPTY_VALUE;
           }
        }
     }

   PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"1",280,50);
   PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"2",280,80);
   if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
   if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
   if(Bid==Open[0])
     {
      PutLabel("На открытии:     "+DoubleToString(MABuffer[0],Digits),"3",280,110);
      OpenVal=MABuffer[0];
     }
   if(MABuffer[0]>OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Blue);
   if(MABuffer[0]<OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Red);
   if(MABuffer[0]==OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,White);

   return(0);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 07:15
+
0
Здравствуйте Андрей. Да именно так. Только, пожалуйста, строку «На текущей» перенесите под строку «На открытии».

«На предыдущей»
«На открытии»
«На текущей»

Спасибо.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 07:26
+
0
Перенес.


//+------------------------------------------------------------------+
//|                                                  NonLagMA_v4.mq4 |
//|                                Copyright © 2006, TrendLaboratory |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                   E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory"
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomato
#property indicator_width3 2


//---- input parameters
extern int     Price          = 0;
extern int     Length         = 21;
extern int     Displace       = 0;
extern int     Sdvig=0; // с какой свечи считаем
extern int     Filter         = 0;
extern int     Color          = 1;
extern int     Corner         = 1;
extern int     FontSize       = 14;
extern int     ColorBarBack   = 0;
extern double  Deviation      = 0;
extern color   LableColor     = White;

double Cycle=4;
double OpenVal=0;
//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text,string name,int x,int y)
  {
   if(Corner==0 || Corner==2) x-=200;
   ObjectDelete(0,name);
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,Corner);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FontSize);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,LableColor);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int ft=0;
   string short_name;
//---- indicator line
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MABuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,DnBuffer);
   SetIndexBuffer(3,price);
   SetIndexBuffer(4,trend);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   short_name="NonLagMA("+Length+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"NLMA");
   SetIndexLabel(1,"Up");
   SetIndexLabel(2,"Dn");
//----
   SetIndexShift(0,Displace);
   SetIndexShift(1,Displace);
   SetIndexShift(2,Displace);

   SetIndexDrawBegin(0,Length*Cycle+Length);
   SetIndexDrawBegin(1,Length*Cycle+Length);
   SetIndexDrawBegin(2,Length*Cycle+Length);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| NonLagMA_v4                                                     |
//+------------------------------------------------------------------+
int start()
  {
   int    i,shift,counted_bars=IndicatorCounted(),limit;
   double alfa,beta,t,Sum,Weight,g;
   double pi=3.1415926535;

   double Coeff=3*pi;
   int Phase=Length-1;
   double Len=Length*Cycle+Phase;

   if(counted_bars>0) limit=Bars-counted_bars;
   if( counted_bars < 0 )  return(0);
   if(counted_bars==0) limit=Bars-Len-1;
   if(counted_bars<1)

      for(i=1;i<Length*Cycle+Length;i++)
        {
         MABuffer[Bars-i]=0;
         UpBuffer[Bars-i]=0;
         DnBuffer[Bars-i]=0;
        }

   for(shift=limit;shift>=Sdvig;shift--)
     {
      Weight=0; Sum=0; t=0;

      for(i=0;i<=Len-1;i++)
        {
         g=1.0/(Coeff*t+1);
         if(t<= 0.5) g = 1;
         beta = MathCos(pi*t);
         alfa = g * beta;
         //if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i); 
         //else 
         price[i]=iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
         Sum+=alfa*price[i];
         Weight+=alfa;
         if(t<1) t+=1.0/(Phase-1);
         else if(t<Len-1) t+=(2*Cycle-1)/(Cycle*Length-1);
        }

      if(Weight>0) MABuffer[shift]=(1.0+Deviation/100)*Sum/Weight;

      if(Filter>0)
        {
         if(MathAbs(MABuffer[shift]-MABuffer[shift+1])<Filter*Point) MABuffer[shift]=MABuffer[shift+1];
        }

      if(Color>0)
        {
         trend[shift]=trend[shift+1];
         if(MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
         if(MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;

         if(trend[shift]>0)
           {
            UpBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            DnBuffer[shift]=EMPTY_VALUE;
           }

         if(trend[shift]<0)
           {
            DnBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            UpBuffer[shift]=EMPTY_VALUE;
           }
        }
     }

   PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"2",280,50);
   if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
   if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
   if(Bid==Open[0])
     {
      PutLabel("На открытии:       "+DoubleToString(MABuffer[0],Digits),"3",280,80);
      OpenVal=MABuffer[0];
     }
   if(MABuffer[0]>OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Blue);
   if(MABuffer[0]<OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Red);
   if(MABuffer[0]==OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,White);

   PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"1",280,110);

   return(0);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 07:32
+
0
Андрей, прошу прощения, а как скачать полученный результат?
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 07:56
+
0
Дайте ссылку в базе на предыдущий, я обновлю.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 07:59
+
0
Андрей, если честно, я ничего не понял. Какую ссылку и в какой базе. Я в этом ничего не понимаю
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 08:06
+
0
Я прошу ссылку на предыдущую версию индикатора в базе: www.opentraders.ru/downloads/
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 08:14
+
0
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 08:30
+
0
zakaz.opentraders.ru/30790.html Наверно вот эта.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 08:31
+
0
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 09:18
+
0
Спасибо.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 09:25
+
0
Андрей, немного не так получилось. 1) При переносе строк из одного угла графика в другой порядок их расположения меняется. Желательно чтобы всегда было вот так:
«На предыдущей»
«На открытии»
«На текущей»
2) Цвет строки «На открытии» не должен меняться, а должен быть фиксированным, то есть на протяжении всей свечи одного цвета и зависит от предыдущего значения. Если на открытии значение равно значению «На предыдущей» то цвет белый, если меньше то красный, если больше то синий. 3) Цвет значения «На текущей» наоборот должен меняться. Если значение равно значению «На открытии» то цвет белый, если меньше то красный, если больше то синий. Спасибо.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 10:41
+
0
Я пока не соображу как сделать универсальную формулу для всех углов *think* 
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 11:23
+
0
Это не сомое главное. Если не получится то пусть остается так. А вот все остальное важно.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 11:34
+
0
Пока так. на работу нужно собираться.


//+------------------------------------------------------------------+
//|                                                  NonLagMA_v4.mq4 |
//|                                Copyright © 2006, TrendLaboratory |
//|            http://finance.groups.yahoo.com/group/TrendLaboratory |
//|                                   E-mail: igorad2003@yahoo.co.uk |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, TrendLaboratory"
#property link      "http://finance.groups.yahoo.com/group/TrendLaboratory"


#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Yellow
#property indicator_width1 2
#property indicator_color2 SkyBlue
#property indicator_width2 2
#property indicator_color3 Tomato
#property indicator_width3 2


//---- input parameters
extern int     Price          = 0;
extern int     Length         = 21;
extern int     Displace       = 0;
extern int     Sdvig=0; // с какой свечи считаем
extern int     Filter         = 0;
extern int     Color          = 1;
extern int     Corner         = 1;
extern int     FontSize       = 14;
extern int     ColorBarBack   = 0;
extern double  Deviation      = 0;
extern color   LableColor     = White;

double Cycle=4;
double OpenVal=0;
//---- indicator buffers
double MABuffer[];
double UpBuffer[];
double DnBuffer[];
double price[];
double trend[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text,string name,int x,int y)
  {
   ObjectDelete(0,name);
//--- создадим текстовую метку
   ObjectCreate(0,name,OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,name,OBJPROP_XDISTANCE,x);
   ObjectSetInteger(0,name,OBJPROP_YDISTANCE,y);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,name,OBJPROP_CORNER,Corner);
//--- установим текст
   ObjectSetString(0,name,OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,name,OBJPROP_FONT,"Arial");
//--- установим размер шрифта
   ObjectSetInteger(0,name,OBJPROP_FONTSIZE,FontSize);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,LableColor);
  }
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   int ft=0;
   string short_name;
//---- indicator line
   IndicatorBuffers(5);
   SetIndexStyle(0,DRAW_LINE);
   SetIndexBuffer(0,MABuffer);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(1,UpBuffer);
   SetIndexStyle(2,DRAW_LINE);
   SetIndexBuffer(2,DnBuffer);
   SetIndexBuffer(3,price);
   SetIndexBuffer(4,trend);
   IndicatorDigits(MarketInfo(Symbol(),MODE_DIGITS));
//---- name for DataWindow and indicator subwindow label
   short_name="NonLagMA("+Length+")";
   IndicatorShortName(short_name);
   SetIndexLabel(0,"NLMA");
   SetIndexLabel(1,"Up");
   SetIndexLabel(2,"Dn");
//----
   SetIndexShift(0,Displace);
   SetIndexShift(1,Displace);
   SetIndexShift(2,Displace);

   SetIndexDrawBegin(0,Length*Cycle+Length);
   SetIndexDrawBegin(1,Length*Cycle+Length);
   SetIndexDrawBegin(2,Length*Cycle+Length);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| NonLagMA_v4                                                      |
//+------------------------------------------------------------------+
int start()
  {
   int    i,shift,counted_bars=IndicatorCounted(),limit;
   double alfa,beta,t,Sum,Weight,g;
   double pi=3.1415926535;

   double Coeff=3*pi;
   int Phase=Length-1;
   double Len=Length*Cycle+Phase;

   if(counted_bars>0) limit=Bars-counted_bars;
   if( counted_bars < 0 )  return(0);
   if(counted_bars==0) limit=Bars-Len-1;
   if(counted_bars<1)

      for(i=1;i<Length*Cycle+Length;i++)
        {
         MABuffer[Bars-i]=0;
         UpBuffer[Bars-i]=0;
         DnBuffer[Bars-i]=0;
        }

   for(shift=limit;shift>=Sdvig;shift--)
     {
      Weight=0; Sum=0; t=0;

      for(i=0;i<=Len-1;i++)
        {
         g=1.0/(Coeff*t+1);
         if(t<= 0.5) g = 1;
         beta = MathCos(pi*t);
         alfa = g * beta;
         //if (shift>=1) price[i] = iMA(NULL,0,Per,Displace,Mode,Price,shift+i); 
         //else 
         price[i]=iMA(NULL,0,1,0,MODE_SMA,Price,shift+i);
         Sum+=alfa*price[i];
         Weight+=alfa;
         if(t<1) t+=1.0/(Phase-1);
         else if(t<Len-1) t+=(2*Cycle-1)/(Cycle*Length-1);
        }

      if(Weight>0) MABuffer[shift]=(1.0+Deviation/100)*Sum/Weight;

      if(Filter>0)
        {
         if(MathAbs(MABuffer[shift]-MABuffer[shift+1])<Filter*Point) MABuffer[shift]=MABuffer[shift+1];
        }

      if(Color>0)
        {
         trend[shift]=trend[shift+1];
         if(MABuffer[shift]-MABuffer[shift+1] > Filter*Point) trend[shift]= 1;
         if(MABuffer[shift+1]-MABuffer[shift] > Filter*Point) trend[shift]=-1;

         if(trend[shift]>0)
           {
            UpBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]<0) UpBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            DnBuffer[shift]=EMPTY_VALUE;
           }

         if(trend[shift]<0)
           {
            DnBuffer[shift]=MABuffer[shift];
            if(trend[shift+ColorBarBack]>0) DnBuffer[shift+ColorBarBack]=MABuffer[shift+ColorBarBack];
            UpBuffer[shift]=EMPTY_VALUE;
           }
        }
     }
     
   if(Corner==0)
     {
      PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"1",20,20);
      if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
      if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
      if(Bid==Open[0])
        {
         PutLabel("На открытии:       "+DoubleToString(MABuffer[0],Digits),"2",20,50);
         OpenVal=MABuffer[0];
        }
      if(MABuffer[1]>OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Blue);
      if(MABuffer[1]<OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Red);
      if(MABuffer[1]==OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,White);

      PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"3",20,80);
     }
     
   if(Corner==1)
     {
      PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"1",280,20);
      if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
      if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
      if(Bid==Open[0])
        {
         PutLabel("На открытии:       "+DoubleToString(MABuffer[0],Digits),"2",280,50);
         OpenVal=MABuffer[0];
        }
      if(MABuffer[1]>OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Blue);
      if(MABuffer[1]<OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Red);
      if(MABuffer[1]==OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,White);

      PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"3",280,80);
     }

   if(Corner==2)
     {
      PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"1",20,90);
      if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
      if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
      if(Bid==Open[0])
        {
         PutLabel("На открытии:       "+DoubleToString(MABuffer[0],Digits),"2",20,60);
         OpenVal=MABuffer[0];
        }
      if(MABuffer[1]>OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Blue);
      if(MABuffer[1]<OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Red);
      if(MABuffer[1]==OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,White);

      PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"3",20,30);
     }
     
   if(Corner==3)
     {
      PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"1",280,90);
      if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
      if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
      if(Bid==Open[0])
        {
         PutLabel("На открытии:       "+DoubleToString(MABuffer[0],Digits),"2",280,60);
         OpenVal=MABuffer[0];
        }
      if(MABuffer[1]>OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Blue);
      if(MABuffer[1]<OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,Red);
      if(MABuffer[1]==OpenVal) ObjectSetInteger(0,"3",OBJPROP_COLOR,White);

      PutLabel("На текущей:         "+DoubleToString(MABuffer[0],Digits),"3",280,30);
     }    
                
   return(0);
  }
//+------------------------------------------------------------------+

avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 11:44
+
0
Спасибо. Буду ждать.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 12:12
+
0
Опишите все ТЗ целиком, а то я уже запутался где должен быть какой цвет и как он должен меняться и желательно в читаемом виде не сплошняком как наверху.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 16:46
+
0
1) Расположение строк со значениями индикатора в любом углу графика:
«На предыдущей»
«На открытии»
«На текущей»
2) Строка «На предыдущей»
цвет белый всегда, значение индикатора фиксированное и равно значению индикатора в момент закрытия свечи.
3) Строка «На открытии»
цвет всегда фиксированный и зависит от значения индикатора в строке «На предыдущей». Если во время открытия свечи значение индикатора равно значению индикатора в строке «На предыдущей» то цвет строки «На открытии» должен быть белым, если значение больше то цвет синий, если меньше то красный. Значение индикатора в этой строке также фиксированное на протяжении всей свечи и равно значению индикатора именно в момент открытия свечи.
4) Строка «На текущей»
цвет строки меняется. Если значение индикатора равно значению индикатора в строке «На открытии» то цвет белый, если меньше то красный, если больше то синий. Значение индикатора следовательно тоже меняется вместе с движением цены и линии индикатора на текущей свече.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 10 июня 2016, 18:52
+
0
После выходных теперь уже.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 10 июня 2016, 20:14
+
+1
Прямо как Российский флаг :)  www.opentraders.ru/downloads/1026/



avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 11 июня 2016, 23:01
+
0
Андрей, спасибо. Завтра буду проверять.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 12 июня 2016, 10:19
+
0
Здравствуйте, Андрей. Я понимаю, что уже надоел Вам, но прошу еще раз внести изменения. Изменения нужно внести только в цвета строк. Расположение строк и их значения все нормально.
1) Строка «На предыдущей»
цвет строки должен соответствовать цвету линии индикатора в момент закрытия свечи, то есть соответствовать цветам линии индикатора указанным в настройках цвета индикатора и соответственно меняться при смене цветов линии индикатора в настройках индикатора.
2) Строка «На открытии»
цвет строки всегда белый.
3) Строка «На текущей»
цвет строки меняется. Если значение индикатора равно значению индикатора в строке «На открытии» то цвет белый, если меньше то красный, если больше то синий.
Надеюсь Вы меня поняли. Спасибо.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 13 июня 2016, 08:52
+
+1
ТЗ поменялось нехорошо нехорошо, а мне так нравился Российский флаг :D 
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 13 июня 2016, 09:23
+
0
Российский флаг это конечно очень хорошо, но так складываются обстоятельства. А на счет ТЗ то оно слегка под корректировалось. Простите. Так получилось.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 13 июня 2016, 10:11
+
0
Андрей, прошу прощения, но Вы наверно забыли про меня?
avatar

  6  Sergey1 Автор Сообщений: 123

  • 14 июня 2016, 09:22
+
0
За новый вариант не берусь.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 14 июня 2016, 10:09
+
0
Но почему? Пожалуйста сделайте. Я Вас очень прошу.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 14 июня 2016, 10:34
+
0
Мне здесь оплачивается определенный объем работы и он очень небольшой.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 14 июня 2016, 10:49
+
0
И как теперь быть? Что делать?
avatar

  6  Sergey1 Автор Сообщений: 123

  • 14 июня 2016, 10:52
+
0
К платному. Я платно не делаю.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 14 июня 2016, 10:53
+
0
И как теперь быть? Что делать? Может всетаки доработаете?
avatar

  6  Sergey1 Автор Сообщений: 123

  • 14 июня 2016, 10:55
+
0
На фрилансе минимальная цена работы от 10$. Если обратитесь индивидуально возможно договориться дешевле.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 14 июня 2016, 11:08
+
0
Мне удобнее с Вами. Вы уже знаете что мне нужно. А так все снова объяснять. Очень прошу. Сделайте.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 14 июня 2016, 11:16
+
0
Может оформить как новый заказ?
avatar

  6  Sergey1 Автор Сообщений: 123

  • 14 июня 2016, 11:17
+
0
Здравствуйте Андрей. Может всетаки закончите начатое. Пожалуйста.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 15 июня 2016, 06:14
+
0
Андрей, я Вас очень прошу. Доделайте пожалуйста.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 16 июня 2016, 06:05
+
0
Я и так с ним сколько провозился а теперь все по новой, нет так не пойдет.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 16 июня 2016, 08:04
+
0
Ну почему же все по новой. Только немного подкорректировать с цветами. Пожалуйста. Очень прошу. Может оформить новый заказ?
avatar

  6  Sergey1 Автор Сообщений: 123

  • 16 июня 2016, 10:18
+
0
Я несколько раз пробовал не идет, обращайтесь к платному.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 16 июня 2016, 10:29
+
0
Почему не идет? Все работает как надо. Прошу только с цветами строк произвести корректировку. Пожалуйста.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 16 июня 2016, 10:45
+
0
Не получается, если бы быстро можно было сделать давно бы уже сделал.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 16 июня 2016, 10:55
+
0
А я Вас не тороплю. Главное результат. Буду ждать сколько скажете.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 16 июня 2016, 11:34
+
0
Я вам все объяснил, на мой взгляд вполне доходчиво. Больше моих комментариев в этом топике не будет.
avatar

  34  AM2 Сообщений: 15886 - Андрей

  • 16 июня 2016, 11:35
+
0
Очень жаль. Если вдруг всетаки надумаете доделать, буду очень благодарен. Спасибо.
avatar

  6  Sergey1 Автор Сообщений: 123

  • 16 июня 2016, 11:46

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий
Начать торговлю с Альпари