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

Рейтинг 2092



РЕКОМЕНДУЮ




Лучшее от 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

Доработка индикатора

Здравствуйте Андрей. Прошу Вас еще раз доработать уже доработанный Вами индикатор( www.opentraders.ru/downloads/1026/) для более удобного его визуального восприятия и расположения на графике. Пожалуйста, сделайте два варианта. Первый вариант: добавить возможность изменения размера шрифта значения индикатора которое отображается на графике (наиболее важно в меньшую сторону). Возможность изменения цвета этих значений. Например: значение индикатора на предыдущей свече всегда белого цвета а на текущей изменяется от белого до синего и красного, в зависимости от движения цены, то есть например, свеча открывается и значение индикатора 1.4310 (цвет белый) цена растет и значение индикатора становится 1.4311 (цвет становится синий) цена начинает падать и значение индикатора снова 1.4310 (цвет снова белый) цена еще падает и значение индикатора становится 1.4309 (цвет становится красный) то есть значение индикатора больше, чем во время открытия свечи, цвет значения синий, если меньше то красный. Второй вариант: все тоже самое только отображение этих значений не на графике а в отдельном окне, ниже графика, с возможностью выбора расположения значений в столбик или в одну строку. Надеюсь Вы меня поняли. Спасибо.
  • 0
  • Просмотров: 2432
  • 21 февраля 2016, 17:50
  • Sergey1
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

+
0
У вас в этом месяце уже есть один заказ, но один из вариантов могу сделать. Выбирайте какой.
avatar

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

  • 21 февраля 2016, 19:10
+
+1
Это первый вариант:




//+------------------------------------------------------------------+
//|                                                  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;

//---- 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",250,50);
     PutLabel("На предыдущей: "+DoubleToString(MABuffer[1],Digits),"2",250,70);
     if(MABuffer[1]>MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Red);
     if(MABuffer[1]<MABuffer[0]) ObjectSetInteger(0,"1",OBJPROP_COLOR,Blue);
     
   return(0);
  }
//+------------------------------------------------------------------+

avatar

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

  • 21 февраля 2016, 20:45
+
0
Тогда лучше второй, в отдельном окне. Спасибо.
avatar

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

  • 22 февраля 2016, 06:17
+
0
Я пробовал сделать и второй вариант, но метки не ставятся в подвал.

avatar

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

  • 22 февраля 2016, 09:03
+
0
Я конечно же не понимаю о каких метках и подвале идет речь и нет возможности сделать второй вариат, то я конечно же согласен на первый. Спасибо.
avatar

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

  • 23 февраля 2016, 06:37
+
0
Андрей, как на счет первого варианта?
avatar

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

  • 25 февраля 2016, 05:16
+
0
Первый вариант код выше смотрите и в базе: www.opentraders.ru/downloads/1026/
avatar

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

  • 25 февраля 2016, 09:37
+
0
Спасибо.
avatar

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

  • 26 февраля 2016, 05:23
+
0
Андрей, я прошу прошения. Может я что то не понимаю, но получилось не то что я хотел. Линию индикатора в окне под графиком отображать не нужно, а нужно только числовое значение индикатора с возможностью изменения цвета этих значений как описано в тех.задании. А сама линия так и должна оставаться на графике без каких либо изменений. Спасибо.
avatar

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

  • 27 февраля 2016, 18:08
+
0
Покажите на скрине, что у вас получилось? Я не скидывал в базу наброски второго варианта.
avatar

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

  • 27 февраля 2016, 18:11
+
0
Показывает просто линию индикатора в окне под графиком, как в Вашем втором варианте, только без цифровых значений индикатора на графике.
avatar

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

  • 28 февраля 2016, 14:54
+
0
Здравствуйте Андрей. Прошу прощения за напоминание, но в силу Вашей занятости боюсь что Вы забыли про меня.
avatar

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

  • 1 марта 2016, 15:00
+
0
Я жду скрины где глюки видно?
avatar

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

  • 1 марта 2016, 17:33
+
0
Андрей да нет ни каких глюков просто тот индикатор который я скачал не отображает на графике числовое его значение а просто показывае линию индикатора не на графике а в окне под ним. Зачем скрин? Если у Вас Все показывает как я просил тогда укажите еще раз откуда скачать. Может я чегото не понял? Вы писали что второй вариант из тех.задания реализовать не возможно тогда я согласился на первый и Вы указали где его скачать что я и сделал. В итоге получилось ни первый вариант ни второй.
avatar

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

  • 1 марта 2016, 20:57
+
0
Обновил в базе, прогнал в тестере. Первый вариант есть также в виде кода выше.
www.opentraders.ru/downloads/1026/

avatar

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

  • 1 марта 2016, 21:40
+
0
Спасибо. Буду пробовать.
avatar

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

  • 2 марта 2016, 05:20

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