Вопросы от начинающих MQL5 MT5 MetaTrader 5 - страница 205

 
torblin:
всем привет не похоже что пост для новичков вопросики о г о г о подскажите где спросить с дп 200 какой советник подайдет? 
любой практически
 

Уважаемые господа, прошу опытным глазом взглянуть на "попытку номер раз". Фабула дела: путем "скрещивания" индикатора фракталов, написанного на MQL5 и индикатора azzx_larry-2.0, суть которого - исключать т.н. "внутренние бары" при поиске экстремума, получен некий код (прилагается). При компиляции вылетают четыре ошибки, все находятся в той части кода, которая перекочевала из azzx, написанного на "четверке". Вопросы возникли при интерпретации "ошибок":

1. Почему оператор функции for (место в коде - подчеркнуто) предлагается разместить в Global. ('for' - expressions are not allowed on a global scope).


2. Почему High[bar] и Low[bar] (так же - в коде подчеркнуто) компилятор считает незадекларироваными, тогда как несколькими строчками выше в коде есть High[i] и Low[i], которые он ошибками не считает.

('High' - undeclared identifier, 'Low' - undeclared identifier).


3. Аналогично и про limit - почему компилятор считает ее незадекларированой. ('limit' - undeclared identifier).

 

PS: авторские права: часть кода (индикатор фракталов) получена из Документации по mql5,  а часть кода из индикатора azzx_larry2.0  получена из кодобазы на mql4, автор azzx 


 

//+------------------------------------------------------------------+
//|                                                     azzx 2.0.mq5 |
//|                        Copyright 2009, MetaQuotes Software Corp. |
//|                                              http://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "2009, MetaQuotes Software Corp."
#property link      "http://www.mql5.com"
//---- indicator settings
#property indicator_chart_window
#property indicator_buffers 2
#property indicator_plots   2
#property indicator_type1   DRAW_ARROW
#property indicator_type2   DRAW_ARROW
#property indicator_color1  White
#property indicator_color2  White
#property indicator_label1  "azzx Up"
#property indicator_label2  "azzx Down"
//---- indicator buffers
double max[];
double min[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
void OnInit()
  {
//---- indicator buffers mapping
   SetIndexBuffer(0,max,INDICATOR_DATA);
   SetIndexBuffer(1,min,INDICATOR_DATA);
   IndicatorSetInteger(INDICATOR_DIGITS,_Digits);
//---- sets first bar from what index will be drawn
   PlotIndexSetInteger(0,PLOT_ARROW,108);
   PlotIndexSetInteger(1,PLOT_ARROW,108);
//---- arrow shifts when drawing
   PlotIndexSetInteger(0,PLOT_ARROW_SHIFT,0);
   PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,0);
//---- sets drawing line empty value--
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
   PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---- initialization done
  }
//+------------------------------------------------------------------+
//|  Accelerator/Decelerator Oscillator                              |
//+------------------------------------------------------------------+
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 &TickVolume[],
                const long &Volume[],
                const int &Spread[])
  {
   int i,limit;
//---
   if(rates_total<3)
      return(0);
//---
   if(prev_calculated<3)
     {
      limit=1;
      //--- clean up arrays
      ArrayInitialize(max,EMPTY_VALUE);
      ArrayInitialize(min,EMPTY_VALUE);
     }
   else limit=rates_total-1;

   for(i=limit;i<rates_total-1 && !IsStopped();i++)
     {
      //---- Up azzx
      if(High[i]>High[i+1] && High[i]>=High[i-1])
         max[i]=High[i];
      else max[i]=EMPTY_VALUE;

      //---- Low azzx
      if(Low[i]<Low[i+1] && Low[i]<=Low[i-1])
         min[i]=Low[i];
      else min[i]=EMPTY_VALUE;
     }
//--- OnCalculate done. Return new prev_calculated.
   return(rates_total);
  }

//+------------------------------------------------------------------+

  // Поиск краткосрочных экстремумов.
  for(i=limit-2;i>1;i--) 
   {
    l = left_bar(i);
    r = right_bar(i);
    
    if((l>0) && (r>0)) 
      {
      if(((Low[l]>=Low[i]) && (Low[r]>Low[i])) ||
         ((Low[l]>Low[i]) && (Low[r]>Low[i]))) 
      {
        min[i] =1;
      }
    }
 
    if((l>0) && (r>0)) 
      {
      if(((High[l]<= High[i]) && (High[r]<High[i])) ||
         ((High[l]<High[i]) && (High[r]<High[i]))) 
      {
        max[i] =1;
      }
    }

  // Отметка экстремумов.
  ArrayInitialize(buf_st_min,0);
  ArrayInitialize(buf_st_max,0);

  
  for(i=limit-1;i>0;i--) 
  {
    switch(min[i]) 
    {
      case 1 : buf_st_min[i]=Low[i]; break;
    }
 
    switch(max[i]) 
    {
      case 1 : buf_st_max[i]=High[i]; break;
    }
  }
  
  return(0);
}
 
// Проверка, что заданный бар - внутренний.
bool is_internal(int bar) 
{
  return((High[bar] < High[bar + 1]) && 
         (Low [bar] > Low [bar + 1]));
}
 
// Возвращает бар слева от заданного бара или -1.
int left_bar(int bar) 
    {
  int i;
  
  for(i=bar+1;i<limit-2;i++) 
{
    if(is_internal(i)==false) 
{
      return(i);
    }
  }
  
  return(-1);
}
 
// Возвращает бар справа от заданного бара или -1.
int right_bar(int bar) {
  int i;
  
  for(i=bar-1;i>0;i--) 
{
    if(is_internal(i)==false) 
{
      return(i);
    }
  }
  
  return(-1);
}
//+------------------------------------------------------------------+
//| Indicator deinitialization function                              |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//--- почистим график при удалении индикатора
   Comment("");
  }
ными, когда несколькими строчками выше в коде есть High[i] и Low[i], которые он ошибками не считает. 3. Аналогично и про limit - почему компилятор считает ее незадекларированой   
 

Reshetov:
А робот случаем не из Маркета?
только один.  что там продается - ужас. хотя наверное все они такие
 
beginner_mql:

 в коде есть High[i] и Low[i], которые он ошибками не считает. 3. Аналогично и про limit - почему компилятор считает ее незадекларированой   

У вас рано закрывается фигурная скобка здесь:

   return(rates_total);
  }

//+------------------------------------------------------------------+

  // Поиск краткосрочных экстремумов.
  for(i=limit-2;i>1;i--) 

 Или пропущено несколько строк, потому что не объявлены 

    l = left_bar(i);
    r = right_bar(i);
 
vicmos:

У вас рано закрывается фигурная скобка здесь:

 Или пропущено несколько строк, потому что не объявлены 

Благодарствуйте за участие. Скобка перенесена в конец кода, компиляция выдала 16 ошибок - есть над чем работать.

 
Всем привет  скажите форумчане кто работает с ITrade Chaos програмный продукт Г. Станилевича. Он мне очень нравится но некоторые  моменты не могу понять. Если не трудно кто работает или работал с этим продуктом  свяжитесь со мной по скайпу.  мой скайп Furkat1962   Заранее всех благодарю .  С уважением Фуркат 
 
torblin:
всем привет не похоже что пост для новичков вопросики о г о г о подскажите где спросить с дп 200 какой советник подайдет? 
не какой советник не подойдет !!! . кто приходит из наветчиков как вы не хотите понять что FOREX это не халява а такая же работа как и все только при вложении труда отдача выше
 
Из советника добавил на график индикатор - как теперь этот индикатор раскрасить? Индикатор использует 3 линии, хотелось бы их все 3 сделать разного цвета и толщины.
 
YAndrey:
Из советника добавил на график индикатор - как теперь этот индикатор раскрасить? Индикатор использует 3 линии, хотелось бы их все 3 сделать разного цвета и толщины.
Можно фломастерами по монитору).
 
zfs:
Можно фломастерами по монитору).
Да, можно и так. Но не хотелось бы. А хотелось бы услышать людей умных ;). Пока нашел выход в создании пользовательского индикатора с добавлением входных параметров в виде цветов для каждой линии, а как можно попроще? Итак еще раз вопрос. В советнике делаю индикатор iBands. Прикрепляю его к графику. Хотелось бы нарисовать его 3 линии разными цветами. Возможно?
Причина обращения: