Kashtan
Игорь

 
Уровень 19

  Торгую в компаниях:


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

Рейтинг 2146



РЕКОМЕНДУЮ



Прошу создать информер

На график в ручную накладываются две параллельно идущие МА с разными параметрами. Далее запускается информер, который может быть выполнен в виде скрипта или индикатора (как удобнее). Информер показывает значения МА в виде пунктиров, а так же выводит на график расстояние между ними. Приблизительно так:


То есть когда открывается новая свечка, информер постоянно измеряет текущие значения МА которые конечно меняются в процессе формирования свечи и показывает разницу. Как вариант, если не сложно, то можно при запуске информера сделать окно с настройками, в котором будут задаваться параметры МА и вариант отображения линий с их значениями (толщина, цвет и т.д.) Спасибо заранее.
  • +3
  • Просмотров: 1592
  • 7 октября 2017, 10:49
  • Kashtan
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
+1
В канале торгуешь? *think* :D 
avatar

  7  Vitalik5675 Сообщений: 282

  • 7 октября 2017, 11:46
+
0
*???* :) 
avatar

  19  Kashtan Автор Сообщений: 739 - Игорь

  • 7 октября 2017, 12:02
+
0
А то что на фото это уже готовое что то?
avatar

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

  • 7 октября 2017, 12:58
+
0
Нет конечно. При наведении курсора на ту или иную машку под последней свечкой всплывает её текущая цена. Я просто в настройках пунктиров задал те же цены, чтоб совпадало а не на глазок. Потом разницу посчитал, и при создании скрина в Яндекс Диске добавил на график<img src='http://opentraders.ru/templates/skin/g6h/images/smilies/002.gif' alt=' :) '>&nbsp; 
Редактирован: 7 октября 2017, 14:02
avatar

  19  Kashtan Автор Сообщений: 739 - Игорь

  • 7 октября 2017, 13:56
+
0
именно МА надо? а не лучше инвелопес вызвать? там сразу 2 ма параллельные.
avatar

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

  • 7 октября 2017, 14:11
+
+1
Все есть:




//+------------------------------------------------------------------+
//|                                                         Info.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1  Red
#property indicator_color2  Red
#property indicator_width1  2
#property indicator_width2  2

input int ma1p=12;
input int ma2p=12;
input int ma1s=0;
input int ma2s=12;
input int ma1m=0;
input int ma2m=0;
input int ma1pr=0;
input int ma2pr=0;

//--- buffers
double up[];
double dn[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(0,up);
   SetIndexBuffer(1,dn);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text)
  {
   ObjectDelete(0,"L");
//--- создадим текстовую метку
   ObjectCreate(0,"L",OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"L",OBJPROP_XDISTANCE,48);
   ObjectSetInteger(0,"L",OBJPROP_YDISTANCE,24);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"L",OBJPROP_CORNER,1);
//--- установим текст
   ObjectSetString(0,"L",OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,"L",OBJPROP_FONT,"Arial Bold");
//--- установим размер шрифта
   ObjectSetInteger(0,"L",OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,"L",OBJPROP_COLOR,Red);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel()
  {
   ObjectDelete(0,"R");
   ObjectCreate(0,"R",OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"R",OBJPROP_XDISTANCE,55);
   ObjectSetInteger(0,"R",OBJPROP_YDISTANCE,22);
//--- установим размеры метки
   ObjectSetInteger(0,"R",OBJPROP_XSIZE,44);
   ObjectSetInteger(0,"R",OBJPROP_YSIZE,22);
//--- установим цвет фона
   ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,Gray);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"R",OBJPROP_CORNER,1);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int i=0; i<rates_total; i++)
     {
      up[i]=iMA(NULL,0,ma1p,ma1s,ma1m,ma1pr,i);
      dn[i]=iMA(NULL,0,ma2p,ma2s,ma2m,ma2pr,i);
     }
   PutHLine("upl",up[0]);
   PutHLine("dnl",dn[0]);
   double d=(up[0]-dn[0])/Point;
   PutRectLabel();   
   PutLabel((string)(int)d);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 7 октября 2017, 14:46
+
0
Спасибо, но это не совсем то:)  На моём скрине машки так параллельно идут, потому что у них отличаются значения параметров (метод МА и применить к)
В вашем варианте так задать нельзя. Хотя в остальном супер*bravo*  Даже есть какие то дополнительные параметры, с которыми пока не разобрался)
Без возможности задавать эти два параметра индикатор бесполезен*???* 
avatar

  19  Kashtan Автор Сообщений: 739 - Игорь

  • 7 октября 2017, 17:21
+
0
Попробовал найти в коде, где это можно поменять но не нашёл
avatar

  19  Kashtan Автор Сообщений: 739 - Игорь

  • 7 октября 2017, 17:25
+
0
Похоже надо было в ТЗ уточнить, что предполагается менять не только период МА но и остальное
avatar

  19  Kashtan Автор Сообщений: 739 - Игорь

  • 7 октября 2017, 17:31
+
+1
Все есть:



input int ma1p=12;//период ма1
input int ma2p=12;//период ма2
input int ma1s=0;//сдвиг ма1
input int ma2s=12;//сдвиг ма2
input int ma1m=0;//метод ма1
input int ma2m=0;//метод ма2
input int ma1pr=0;//цены ма1
input int ma2pr=0;//цены ма2



//+------------------------------------------------------------------+
//|                                                         Info.mq4 |
//|                                              Copyright 2017, AM2 |
//|                                      http://www.forexsystems.biz |
//+------------------------------------------------------------------+
#property copyright "Copyright 2017, AM2"
#property link      "http://www.forexsystems.biz"
#property version   "1.00"
#property strict

#property indicator_chart_window
#property indicator_buffers 2
#property indicator_color1  Red
#property indicator_color2  Red
#property indicator_width1  2
#property indicator_width2  2

input int ma1p=12;//период ма1
input int ma2p=12;//период ма2
input int ma1s=0;//сдвиг ма1
input int ma2s=12;//сдвиг ма2
input int ma1m=0;//метод ма1
input int ma2m=0;//метод ма2
input int ma1pr=0;//цены ма1
input int ma2pr=0;//цены ма2

//--- buffers
double up[];
double dn[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   SetIndexStyle(0,DRAW_LINE);
   SetIndexStyle(1,DRAW_LINE);
   SetIndexBuffer(0,up);
   SetIndexBuffer(1,dn);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Горизонтальная линия                                             |
//+------------------------------------------------------------------+
void PutHLine(string name,double p)
  {
   ObjectDelete(0,name);
   ObjectCreate(0,name,OBJ_HLINE,0,0,p);
//--- установим цвет линии
   ObjectSetInteger(0,name,OBJPROP_COLOR,Red);
//--- установим толщину линии
   ObjectSetInteger(0,name,OBJPROP_WIDTH,1);
   ObjectSetInteger(0,name,OBJPROP_STYLE,STYLE_DOT);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutLabel(string text)
  {
   ObjectDelete(0,"L");
//--- создадим текстовую метку
   ObjectCreate(0,"L",OBJ_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"L",OBJPROP_XDISTANCE,48);
   ObjectSetInteger(0,"L",OBJPROP_YDISTANCE,24);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"L",OBJPROP_CORNER,1);
//--- установим текст
   ObjectSetString(0,"L",OBJPROP_TEXT,text);
//--- установим шрифт текста
   ObjectSetString(0,"L",OBJPROP_FONT,"Arial Bold");
//--- установим размер шрифта
   ObjectSetInteger(0,"L",OBJPROP_FONTSIZE,12);
//--- установим цвет
   ObjectSetInteger(0,"L",OBJPROP_COLOR,Red);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void PutRectLabel()
  {
   ObjectDelete(0,"R");
   ObjectCreate(0,"R",OBJ_RECTANGLE_LABEL,0,0,0);
//--- установим координаты метки
   ObjectSetInteger(0,"R",OBJPROP_XDISTANCE,55);
   ObjectSetInteger(0,"R",OBJPROP_YDISTANCE,22);
//--- установим размеры метки
   ObjectSetInteger(0,"R",OBJPROP_XSIZE,44);
   ObjectSetInteger(0,"R",OBJPROP_YSIZE,22);
//--- установим цвет фона
   ObjectSetInteger(0,"R",OBJPROP_BGCOLOR,Gray);
//--- установим угол графика, относительно которого будут определяться координаты точки
   ObjectSetInteger(0,"R",OBJPROP_CORNER,1);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
//---
   for(int i=0; i<rates_total; i++)
     {
      up[i]=iMA(NULL,0,ma1p,ma1s,ma1m,ma1pr,i);
      dn[i]=iMA(NULL,0,ma2p,ma2s,ma2m,ma2pr,i);
     }
   PutHLine("upl",up[0]);
   PutHLine("dnl",dn[0]);
   double d=(up[0]-dn[0])/Point;
   PutRectLabel();   
   PutLabel((string)(int)d);

//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+------------------------------------------------------------------+

avatar

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

  • 7 октября 2017, 21:23

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