Andrey1979

 
Уровень 5

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


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

Рейтинг 2146



РЕКОМЕНДУЮ




Лучшее от Andrey1979



Советник. Комментариев 6
2019-11-20 18:47:42Рейтинг 0

советник-помощник Комментариев 5
2020-05-26 22:07:17Рейтинг 0

Exp-strogili помогите доработать Комментариев 16
2019-09-13 20:59:33Рейтинг 0

переместить индикатор из "подвала"

Здравствуйте Уважаемый Андрей.
Хочу по просить вас перенести значение индикатора из «подвала», в правую, нижнюю часть графика, как это показано на рисунке.
Сам индикатор повторять в «подвале» НЕ надо.
шрифт 18-20
Цвет:
между уровнями(например) 100 и -100 — золотистый(GOLD)
выше +100 — зелёный (GREEN)
ниже -100 — красный (RED)
Как указано на рисунке.
Индикатор прикладываю.
Весьма признателен и благодарен.
*hi* 

Filter CCI real alert.mq4 (8 Kb)
  • 0
  • Просмотров: 1173
  • 1 июня 2022, 20:52
  • Andrey1979
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

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

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

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

+
0
как вы себе это представляете? опишите алгоритм
avatar

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

  • 1 июня 2022, 21:02
+
0
Значения индикатора, просто перенести на график, а сам индикатор скрыть из виду.
Мне вполне достаточно значения индикатора, точнее какое оно: отрицательное или положительное.
Или я так понимаю что совсем убрать индикатор из поля (подвала) видимости — НЕ возможно?
Редактирован: 2 июня 2022, 08:30
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 08:29
+
0
Как понял и что бы немного освободить Андрея взял на себя смелость:

//+------------------------------------------------------------------+
//|                                                   Andrey1979.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict

extern string ind_name = "Filter CCI";
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift         = 1;        // бар индикатора
//extern string ind_name =  "Filter CCI real alert";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  ObjectsDeleteAll(); 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double filtr_CCI = iCustom(NULL,TF,ind_name,CCI,c1,c2,c3,0,Shift);
   DrawLABEL("filtr CCI",StringConcatenate("filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,Color(filtr_CCI<0,clrRed,clrGreen),ANCHOR_RIGHT);
  }
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
void DrawLABEL(string name, string Name, int X, int Y, color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT)
{
   if (ObjectFind(name)==-1)
   {
      ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name, OBJPROP_CORNER, 1);
      ObjectSet(name, OBJPROP_XDISTANCE, X);
      ObjectSet(name, OBJPROP_YDISTANCE, Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,align); 
   }
   ObjectSetText(name,Name,12,"Arial",clr);
}
//--------------------------------------------------------------------



По аналогии можете применить в любом советнике путем копирования соответствующих строк в соответствующие функции.
avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 09:59
+
+1
Немного добавил информативности:

//+------------------------------------------------------------------+
//|                                                   Andrey1979.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict

extern string ind_name = "Filter CCI";
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift         = 0;        // бар индикатора
extern double   Level=100;
//extern string ind_name =  "Filter CCI real alert";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  ObjectsDeleteAll(); 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double filtr_CCI = iCustom(NULL,TF,ind_name,CCI,c1,c2,c3,0,Shift);
   if(filtr_CCI>Level || filtr_CCI<-Level)
      {
       DrawLABEL("filtr CCI",StringConcatenate("filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,Color(filtr_CCI<0,clrRed,clrGreen),ANCHOR_RIGHT);
      }
   if(filtr_CCI<Level && filtr_CCI>-Level)
       {     
          DrawLABEL("Takeprofit",StringConcatenate("Индикатор находится в зоне. filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,clrYellow);
       }
  }
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
void DrawLABEL(string name, string Name, int X, int Y, color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT)
{
   if (ObjectFind(name)==-1)
   {
      ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name, OBJPROP_CORNER, 1);
      ObjectSet(name, OBJPROP_XDISTANCE, X);
      ObjectSet(name, OBJPROP_YDISTANCE, Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,align); 
   }
   ObjectSetText(name,Name,12,"Arial",clr);
}
//--------------------------------------------------------------------


avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 10:54
+
0
здорово, спасибо, а как скачать в расширении .mq4?
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 13:10
+
0
Откройте MetaEditor. Нажмите кнопку — Создать. Выберите -Советник(шаблон).
Откроется окно — заготовка (болванка)советника. Скопируйте туда приведенный мною код. Затем нажмите кнопку — Компилировать. В каталоге окна Навигатор появиться новый советник Andrey1979.mq4
avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 14:00
+
0
Что Андрей1979 сделал НЕ так???

Верхний код тоже молчит, только в зелёном цвете. *???* 
Редактирован: 2 июня 2022, 16:00
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 15:54
+
0
*???* Выложите сюда код советника как сделал я.Посмотрю.
avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 16:28
+
0
Почему советник?
Я же прошу индикатор…

//+------------------------------------------------------------------+
//| Andrey1979.mq4 |
//| Copyright 2013, MetaQuotes Software Corp. |
//| www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright «Copyright 2013, MetaQuotes Software Corp.»
#property link «www.mункцql5.com»
#property version «1.00»
#property strict

extern string ind_name = «Filter CCI»;
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift = 1; // бар индикатора
//extern string ind_name = «Filter CCI real alert»;
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---
//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---
ObjectsDeleteAll();
}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
double filtr_CCI = iCustom(NULL,TF,ind_name,CCI,c1,c2,c3,0,Shift);
DrawLABEL(«filtr CCI»,StringConcatenate(«filtr CCI = »,DoubleToString(filtr_CCI,2)),5,35,Color(filtr_CCI<0,clrRed,clrGreen),ANCHOR_RIGHT);
}
//+-------------------------------------------------------------------+
//| |
//+-------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
if (P) return(a);
else return(b);
}
//+-------------------------------------------------------------------+
//| |
//+-------------------------------------------------------------------+
void DrawLABEL(string name, string Name, int X, int Y, color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT)
{
if (ObjectFind(name)==-1)
{
ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
ObjectSet(name, OBJPROP_CORNER, 1);
ObjectSet(name, OBJPROP_XDISTANCE, X);
ObjectSet(name, OBJPROP_YDISTANCE, Y);
ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
ObjectSetInteger(0,name,OBJPROP_ANCHOR,align);
}
ObjectSetText(name,Name,12,«Arial»,clr);
}
//--------------------------------------------------------------------

avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 17:46
+
0
Вставьте код как я используя функцию :code
Редактирован: 2 июня 2022, 17:51
avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 17:50
+
0
И проверьте как называется индикатор который используете
-Filter CCI real alert.mq4 или Filter CCI.mq4
avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 17:55
+
0
индикатор использую Filter CCI real alert

//+------------------------------------------------------------------+
//|                                                   Filter CCI.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright ""
#property link ""

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Silver
#property indicator_width1 3
#property indicator_level1 100
#property indicator_level2 0
#property indicator_level3 -100
#property  indicator_levelcolor Gray

extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;

extern color    ClrUp          = Lime;       //Выше уровня
extern color    ClrDn          = Red;        // Ниже уровня  
extern color    ClrNeUp        = RoyalBlue; //Нейтральный выше нуля
extern color    ClrNeDn        = Gold;      //Нейтральный ниже нуля
extern int      HistWidth=2; // Толщина гистограммы
extern double   Level=100;
int    p=6;
double BufNe[];
double CCI1,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,max,min;
double BufUp[];
double BufDn[];
double BufNeUp[];
double BufNeDn[];
datetime bt=0;
//+------------------------------------------------------------------+
int init()
  {
   IndicatorBuffers(5);

   SetIndexBuffer(0,BufNe);
   SetIndexStyle(0,DRAW_HISTOGRAM);

   SetIndexBuffer(1,BufUp);
   SetIndexBuffer(2,BufDn);
   SetIndexBuffer(3,BufNeUp);
   SetIndexBuffer(4,BufNeDn);

   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrUp);
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrDn);
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrNeUp);
   SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrNeDn);

   string short_name="Filter CCI реал"+"("+CCI+") ";

   IndicatorShortName(short_name);
   return(0);
  }
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
int start()
  {
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;

   int pos=Bars-counted_bars;

   int limit=Bars;
   if(pos>limit) 
     {
      pos=limit;
     }

   double  dResult1;

   int i;
   double a[1];
   while(pos>=0)
     {
      ArrayInitialize(a,EMPTY_VALUE);
      ArrayResize(a,0);
      for(i=5; i<p+5; i++)
        {
         int size_a=ArraySize(a);
         ArrayResize(a,size_a+1);

         a[size_a]=iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+i)*c1
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-1))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+i)*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-2))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-1))*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-3))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-2))*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-4))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-3))*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-5))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-4))*c3;

        }
      double a_max = a[ArrayMaximum(a)];
      double a_min = a[ArrayMinimum(a)];
      max = a_max;
      min = a_min;
      dResult1=(max+min);
      BufNe[pos]=dResult1;
      if(BufNe[pos]<-Level)
        {
         BufDn[pos]=BufNe[pos];
         BufNeDn[pos]=-Level;
        }
      if(BufNe[pos]>=-Level && BufNe[pos]<0)
         BufNeDn[pos]=BufNe[pos];

      if(BufNe[pos]>Level)
        {
         BufUp[pos]=BufNe[pos];
         BufNeUp[pos]=Level;
        }
      if(BufNe[pos]<=Level && BufNe[pos]>0)
         BufNeUp[pos]=BufNe[pos];

      pos--;
     }
     if (bt==Time[0]) return(0);
     if (BufNe[1]>Level && BufNe[2]<=Level) {Alert(Symbol()," Выход из зоны ",Level);bt=Time[0];}
     if (BufNe[1]<-Level && BufNe[2]>=-Level) {Alert(Symbol()," Выход из зоны -",Level);bt=Time[0];}
   return(0);
  }
//+------------------------------------------------------------------+
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 18:20
+
0
//+------------------------------------------------------------------+
//|                                                   Andrey1979.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict

extern string ind_name = "Filter CCI";
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift         = 1;        // бар индикатора
//extern string ind_name =  "Filter CCI real alert";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
  ObjectsDeleteAll(); 
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   double filtr_CCI = iCustom(NULL,TF,ind_name,CCI,c1,c2,c3,0,Shift);
   DrawLABEL("filtr CCI",StringConcatenate("filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,Color(filtr_CCI<0,clrRed,clrGreen),ANCHOR_RIGHT);
  }
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
void DrawLABEL(string name, string Name, int X, int Y, color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT)
{
   if (ObjectFind(name)==-1)
   {
      ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name, OBJPROP_CORNER, 1);
      ObjectSet(name, OBJPROP_XDISTANCE, X);
      ObjectSet(name, OBJPROP_YDISTANCE, Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,align); 
   }
   ObjectSetText(name,Name,12,"Arial",clr);
}
//--------------------------------------------------------------------
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 18:13
+
0
Смотрите сами:
Используете индикатор Filter CCI real alert а изначально он имел название
//+------------------------------------------------------------------+
//|                                                   Filter CCI.mq4 |
//|                                                                  |
//|                                                                  |
//+------------------------------------------------------------------+

Дальше: именно поэтому я в настройках включил оба названия:


extern string ind_name = "Filter CCI";
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift         = 1;        // бар индикатора
//extern string ind_name =  "Filter CCI real alert";

Замените:


//extern string ind_name = "Filter CCI";
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift         = 1;        // бар индикатора
extern string ind_name =  "Filter CCI real alert";

avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 18:28
+
0
Заменял разными способами — компилируется, но НЕ работает.
И потом, почему советник, я же прошу ИНДИКАТОР, два советника на одном графике не может быть.
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 2 июня 2022, 19:12
+
0
Я не телепат и не знаю что вы и как делаете.У меня все работает.
Что мешает в советник добавить тот код который я написал? Об этом нельзя было подумать?
avatar

  16  ssg Сообщений: 817

  • 2 июня 2022, 19:26
+
0
День добрый.
я всё сделал как ВЫ и описали выше.
Открыл Мете Эдишн — создать — открылось окно, советник(шаблон) — дальше имя, дальше просто ОК — открылось окно: строки с первичным кодом, я их удалил, скопировал и вставил ВАШ последний код и после подправил последние изменение.
Кидаю на график… тишина.
Смысл мне ВАМ врать.
Ладно спасибо
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 3 июня 2022, 08:30
+
0
Дело не в том что Вы врете, а в том что что-то не правильно делаете.
Что пишется в журнале при нажатии кнопки — Компилировать?
Что пишется в логах при установке данного советника на график?
Одной фразы: Кидаю на график… тишина. «Маловато будет» для решения задачи.
avatar

  16  ssg Сообщений: 817

  • 3 июня 2022, 09:44
+
0
Попробуйте как индикатор:

//+------------------------------------------------------------------+
//|                                                   Andrey1979.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
#property strict
#property indicator_chart_window

//extern string ind_name = "Filter CCI";
extern string ind_name =  "Filter CCI real alert";
extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;
extern ENUM_TIMEFRAMES TF = PERIOD_CURRENT;
extern int Shift         = 0;        // бар индикатора
extern double   Level=100;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   string name=StringConcatenate("filtr CCI");
   double filtr_CCI = iCustom(NULL,TF,ind_name,CCI,c1,c2,c3,0,Shift);
   if(filtr_CCI>Level || filtr_CCI<-Level)
      {
       ObjectDelete(0,name);
       DrawLABEL("filtr CCI",StringConcatenate("filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,Color(filtr_CCI<0,clrRed,clrLime),ANCHOR_RIGHT);
      }
  else// if(filtr_CCI<Level && filtr_CCI>-Level)
       { 
          ObjectDelete(0,name);    
          DrawLABEL("filtr CCI",StringConcatenate("Индикатор находится в зоне. filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,clrYellow);
       } 
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
void DrawLABEL(string name, string Name, int X, int Y, color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT)
{
   if (ObjectFind(name)==-1)
   {
      ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name, OBJPROP_CORNER, 1);
      ObjectSet(name, OBJPROP_XDISTANCE, X);
      ObjectSet(name, OBJPROP_YDISTANCE, Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,align); 
   }
   ObjectSetText(name,Name,12,"Arial",clr);
}
//--------------------------------------------------------------------


avatar

  16  ssg Сообщений: 817

  • 3 июня 2022, 10:06
+
0
— Мета Эдишн
— создать
— пользовательский индикатор
— удалил начальный код
— скопировал ВАШ
— компилировать
— кидаю на график
— журнал
Ни чего лишнего


Оригиналы инд., на которые ссылается ВАШ — все на месте, НЕ переименованные.
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 3 июня 2022, 13:10
+
0
Не знаю… Единственное что заметил:
в моем индикаторе указан extern string ind_name = «Filter CCI real alert»;
а на скриншоте Filter CCI real.
Проверьте.
Если есть разногласия в написании, тогда и в советнике и индикаторе названия должны совпадать. Вплоть до пробелов.
Попробуйте еще менять таймфреймы окна.
avatar

  16  ssg Сообщений: 817

  • 3 июня 2022, 14:11
+
0
Изменил, сделал как в вашем индикаторе, но… ни чего не поменялось.
По скринам видно что всё сделано правильно.
И ТФ переключал и терминал перезагружал — НЕ работает.
надпись «Индикатор находится в зоне» — остаётся, даже после удаления инд. и перезагрузки терминала.
Ладно, спасибо за работу, значит не судьба.
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 3 июня 2022, 18:57
+
0
Да, в этом варианте нет функции удаления графики с экрана.
Задача стояла проверить: выводится информация на экран или нет.
Ведь очевидно и понятно, что если выводится надпись, а нет данных, значит название индикатора к которому идет обращение иное. Ну по другому называется у вас индикатор в папке с индикаторами.
avatar

  16  ssg Сообщений: 817

  • 3 июня 2022, 19:28
+
0
Сейчас просто добавил в ваш индикатор возможность выводить информацию на график. Сам индикатор не трогал.
Пробуйте. Если и это не получиться, тогда…

//+------------------------------------------------------------------+
//|                                                   Andrey1979.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+
//|                                                   Filter CCI.mq4 |
//|                        Copyright 2013, MetaQuotes Software Corp. |
//|                                          http://www.mункцql5.com |
//+------------------------------------------------------------------+
//http://zakaz.opentraders.ru/79759.html#comment163072
#property copyright "Copyright 2013, MetaQuotes Software Corp."
#property link      "http://www.mункцql5.com"
#property version   "1.00"
//#property strict

#property copyright ""
#property link ""

#property indicator_separate_window
#property indicator_buffers 5
#property indicator_color1 Silver
#property indicator_width1 3
#property indicator_level1 100
#property indicator_level2 0
#property indicator_level3 -100
#property  indicator_levelcolor Gray

extern double CCI=14;
extern double c1= 1;
extern double c2= 1;
extern double c3= 1;

extern color    ClrUp          = Lime;       //Выше уровня
extern color    ClrDn          = Red;        // Ниже уровня  
extern color    ClrNeUp        = RoyalBlue; //Нейтральный выше нуля
extern color    ClrNeDn        = Gold;      //Нейтральный ниже нуля
extern int      HistWidth=2; // Толщина гистограммы
extern double   Level=100;
int    p=6;
double BufNe[];
double CCI1,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16,a17,a18,a19,a20,a21,max,min;
double BufUp[];
double BufDn[];
double BufNeUp[];
double BufNeDn[];
datetime bt=0;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- indicator buffers mapping
   
   IndicatorBuffers(5);

   SetIndexBuffer(0,BufNe);
   SetIndexStyle(0,DRAW_HISTOGRAM);

   SetIndexBuffer(1,BufUp);
   SetIndexBuffer(2,BufDn);
   SetIndexBuffer(3,BufNeUp);
   SetIndexBuffer(4,BufNeDn);

   SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrUp);
   SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrDn);
   SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrNeUp);
   SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,HistWidth,ClrNeDn);

   string short_name="Filter CCI реал"+"("+CCI+") ";

   IndicatorShortName(short_name);
//---
   return(INIT_SUCCEEDED);
  }

//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   ObjectsDeleteAll();
  }
//+------------------------------------------------------------------+
//| 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[])
  {
//---
   
   int counted_bars=IndicatorCounted();
   if(counted_bars<0) return(-1);
   if(counted_bars>0) counted_bars--;

   int pos=Bars-counted_bars;

   int limit=Bars;
   if(pos>limit) 
     {
      pos=limit;
     }

   double  dResult1;
   double filtr_CCI;
   string name=StringConcatenate("filtr CCI");
   
   int i;
   double a[1];
   while(pos>=0)
     {
      ArrayInitialize(a,EMPTY_VALUE);
      ArrayResize(a,0);
      for(i=5; i<p+5; i++)
        {
         int size_a=ArraySize(a);
         ArrayResize(a,size_a+1);

         a[size_a]=iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+i)*c1
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-1))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+i)*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-2))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-1))*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-3))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-2))*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-4))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-3))*c3
                   +iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-5))*c2-iCCI(NULL,0,CCI,PRICE_TYPICAL,pos+(i-4))*c3;
        }
      double a_max = a[ArrayMaximum(a)];
      double a_min = a[ArrayMinimum(a)];
      max = a_max;
      min = a_min;
      dResult1=(max+min);
      BufNe[pos]=dResult1;
      filtr_CCI=BufNe[pos];
      if(BufNe[pos]<-Level)
        {
         BufDn[pos]=BufNe[pos];
         BufNeDn[pos]=-Level;
        }
      if(BufNe[pos]>=-Level && BufNe[pos]<0)
         BufNeDn[pos]=BufNe[pos];

      if(BufNe[pos]>Level)
        {
         BufUp[pos]=BufNe[pos];
         BufNeUp[pos]=Level;
        }
      if(BufNe[pos]<=Level && BufNe[pos]>0)
         BufNeUp[pos]=BufNe[pos];

      pos--;
     }
     if (bt==Time[0]) return(0);
     if (BufNe[1]>Level && BufNe[2]<=Level) {Alert(Symbol()," Выход из зоны ",Level);bt=Time[0];}
     if (BufNe[1]<-Level && BufNe[2]>=-Level) {Alert(Symbol()," Выход из зоны -",Level);bt=Time[0];}
//----------------------------------------------------------------------
  if(filtr_CCI>Level || filtr_CCI<-Level)
      {
       ObjectDelete(0,name);
       DrawLABEL("filtr CCI",StringConcatenate("filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,Color(filtr_CCI<0,clrRed,clrLime),ANCHOR_RIGHT);
      }
  else// if(filtr_CCI<Level && filtr_CCI>-Level)
       { 
          ObjectDelete(0,name);    
          DrawLABEL("filtr CCI",StringConcatenate("Индикатор находится в зоне. filtr CCI = ",DoubleToString(filtr_CCI,2)),5,35,clrYellow);
       } 
//----------------------------------------------------------------------
//--- return value of prev_calculated for next call
   return(rates_total);
  }
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
color Color(bool P,color a,color b)
{
   if (P) return(a);
   else return(b);
}
//+-------------------------------------------------------------------+
//|                                                                   |
//+-------------------------------------------------------------------+
void DrawLABEL(string name, string Name, int X, int Y, color clr,ENUM_ANCHOR_POINT align=ANCHOR_RIGHT)
{
   if (ObjectFind(name)==-1)
   {
      ObjectCreate(name, OBJ_LABEL, 0, 0, 0);
      ObjectSet(name, OBJPROP_CORNER, 1);
      ObjectSet(name, OBJPROP_XDISTANCE, X);
      ObjectSet(name, OBJPROP_YDISTANCE, Y);
      ObjectSetInteger(0,name,OBJPROP_SELECTABLE,false);
      ObjectSetInteger(0,name,OBJPROP_SELECTED,false);
      ObjectSetInteger(0,name,OBJPROP_HIDDEN,true);
      ObjectSetInteger(0,name,OBJPROP_ANCHOR,align); 
   }
   ObjectSetText(name,Name,12,"Arial",clr);
}
//--------------------------------------------------------------------

avatar

  16  ssg Сообщений: 817

  • 3 июня 2022, 19:19
+
0
ОТЛИЧНО.
Спасибо огромное, работает даже при переключении ТФ.
Маленький нюанс, переместить в самый низ. или подскажите как сделать.

*hi* 

Редактирован: 4 июня 2022, 17:01
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 4 июня 2022, 16:58
+
0
Здравствуйте Уважаемый Андрей.
Хочу по просить вас перенести значение индикатора из «подвала», в правую, нижнюю часть графика, как это показано на рисунке.
Сам индикатор повторять в «подвале» НЕ надо.
шрифт 18-20
Цвет:
между уровнями(например) 100 и -100 — золотистый(GOLD)
выше +100 — зелёный (GREEN)
ниже -100 — красный (RED)


Дальше сами.Добейтесь что бы самые верхние коды советников у Вас тоже заработали.
avatar

  16  ssg Сообщений: 817

  • 4 июня 2022, 17:35
+
0
Понял.
Спасибо
*hi* 
avatar

  5  Andrey1979 Автор Сообщений: 136

  • 4 июня 2022, 17:36
+
0
*hi* 
avatar

  16  ssg Сообщений: 817

  • 4 июня 2022, 17:49

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