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

Рейтинг 2147



РЕКОМЕНДУЮ




Лучшее от 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_v4 добавить функцию отображения значения индикатора на графике на текущей и предыдущей свече с возможностью изменения цвета, размера и места расположения на графике данных значений. Терминал МТ4. Котировки четырехзначные. Спасибо.
Heiken_ashi_nonlagma_v4.mq4 (4 Kb)
  • 0
  • Просмотров: 2957
  • 1 февраля 2016, 06:29
  • Sergey1
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

Брокер для ваших роботов, 15 лет на рынке

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

+
0
У вас файл не прикрепился. Подождите пока поправят и буду смотреть.
avatar

  35  AM2 Сообщений: 16296 - Андрей

  • 1 февраля 2016, 09:39
+
0
Я сделал с какой свечи рассчитывать.

extern int Sdvig = 1; // с какой свечи считаем




с возможностью изменения цвета, размера и места расположения на графике данных значений.


А вот с этого момента поподробнее пожалуйста.

www.opentraders.ru/downloads/1026/
avatar

  35  AM2 Сообщений: 16296 - Андрей

  • 1 февраля 2016, 10:09
+
0
Вы наверно не поняли. В индикаторе ничего менять не нужно. Надо просто, если это возможно, добавить возможность отображения значения индикатора на график в каком нибудь углу графика, для того чтобы не наводить курсор на графике, чтобы узнать какое значение индикатора. То есть, например, свеча закрылась и значение индикатора например 1.0847. Это значение должно зафиксироваться в виде этих цифр в углу графика. Аналогичным образом значение текущей свечи. Только оно будет меняться пока свеча не закроется, например в приделах от 1.0848 до 1.0851. Таким образом на графике должно отображаться в виде цифр два значения индикатора, предыдущей свечи и текущей. Далее закрывается текущая свеча, её значение 1.0851 фиксируется и перемещается на графике на место той предыдущей, а на освободившемся месте появляется значение индикатора на новой открывшейся свече. Под возможностью изменения цвета, размера и места расположения на графике данных значений подразумевается возможность изменения в настройках места расположения этих значений на графике, например в левом нижнем углу или в правом верхнем, изменения цвета этих значений, например белый или красный и изменения размера шрифта этих значений. Надеюсь Вы меня поняли. Спасибо.
avatar

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

  • 1 февраля 2016, 20:17
+
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     ColorBarBack   = 0;
extern double  Deviation      = 0;
extern color   CLR            = Red;

double Cycle=4;

//---- 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,14);
//--- установим цвет
   ObjectSetInteger(0,name,OBJPROP_COLOR,CLR);
  }
//+------------------------------------------------------------------+
//| 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",220,50);
     PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"2",220,70);
     
   return(0);
  }
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16296 - Андрей

  • 1 февраля 2016, 21:14
+
0
Да. Все верно. Только котировки у меня четыре знака. Спасибо.
avatar

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

  • 2 февраля 2016, 05:45
+
0
На 4-х знаке нормально будет работать: www.opentraders.ru/downloads/1026/

avatar

  35  AM2 Сообщений: 16296 - Андрей

  • 2 февраля 2016, 10:32
+
0
Здравствуйте Андрей. Прошу Вас еще раз доработать уже доработанный Вами индикатор для более удобного его визуального восприятия и расположения на графике. Пожалуйста, сделайте два варианта. Первый вариант: добавить возможность изменения размера шрифта значения индикатора которое отображается на графике (наиболее важно в меньшую сторону). Возможность изменения цвета этих значений. Например: значение индикатора на предыдущей свече всегда белого цвета а на текущей изменяется от белого до синего и красного, в зависимости от движения цены, то есть например, свеча открывается и значение индикатора 1.4310 (цвет белый) цена растет и значение индикатора становится 1.4311 (цвет становится синий) цена начинает падать и значение индикатора снова 1.4310 (цвет снова белый) цена еще падает и значение индикатора становится 1.4309 (цвет становится красный) то есть значение индикатора больше, чем во время открытия свечи, цвет значения синий, если меньше то красный. Второй вариант: все тоже самое только отображение этих значений не на графике а в отдельном окне, ниже графика, с возможностью выбора расположения значений в столбик или в одну строку. Надеюсь Вы меня поняли. Спасибо.
avatar

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

  • 20 февраля 2016, 11:53
+
0
Прошу Вас еще раз доработать уже доработанный Вами индикатор


Это будет уже другой заказ.
avatar

  35  AM2 Сообщений: 16296 - Андрей

  • 20 февраля 2016, 13:00
+
0
Андрей, спасибо.
avatar

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

  • 2 февраля 2016, 10:49

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