#property strict

 

Здравствуйте , помогите пожалуйста разобраться  , где допускаю ошибку ?

сам код, на графике перестал показывать

//+------------------------------------------------------------------+
//|                                                   cciatr.1.0.mq4 |
//|                   Copyright © 2017, jobs (Maing). |
//|                                      http://t.me/copyming |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2017, jobs (Maing)."
#property link      "http://t.me/copymaing"
#property strict
#property version "1.0"

  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
   
   int limit, i;
   double cciTrendNow;

   int counted_bars = IndicatorCounted();
//---- check for possible errors
   if(counted_bars < 0) return(-1);
//---- last counted bar will be recounted
   if(counted_bars > 0) counted_bars--;

   limit=Bars-counted_bars;
   
   for(i = limit; i >= 0; i--) 
     {cciTrendNow = iCCI(NULL, 0, CCIperiod, applied_price, i);
      
      if (cciTrendNow >= 0) 
        {TrLine[i] = NormalizeDouble(Low[i] - iATR(NULL, 0, ATRperiod, i),Digits);    
         if (TrLine[i] < TrLine[i+1]) 
            {TrLine[i] = TrLine[i+1];
            }
   

на это

int start()
  {
   int limit, i;
   double cciTrendNow;
   
   int limit=Bars-IndicatorCounted()-1;
   if(IndicatorCounted()==0)limit--;
   
   for(int i=limit; i>cciTrendNow=; i --)
 
Mukhriddin Ibragimov:

Здравствуйте , помогите пожалуйста разобраться  , где допускаю ошибку ?

сам код, на графике перестал показывать

этот поменял 

на это

 for(int i=limit; i>cciTrendNow=; i --)
 
Alena Lysenkova:
Все равно на графике не появился. 
 
Mukhriddin Ibragimov:
Все равно на графике не появился. 

ОК. Наводящие вопросы: что это за переменная, какого она типа и какой смысл ее установки в цикл по барам?

cciTrendNow
 
Mukhriddin Ibragimov:
Все равно на графике не появился. 

Если это индикатор, то в нем должна быть функция OnCalculate(), а не start()

И вообще, стоит поменять названия функций. https://docs.mql4.com/ru/runtime/running

Выполнение программ - Программы MQL4 - Справочник MQL4
Выполнение программ - Программы MQL4 - Справочник MQL4
  • docs.mql4.com
Выполнение программ - Программы MQL4 - Справочник MQL4
 

Вместо этого

   limit=Bars-counted_bars;

Поставьте вот это и будет вам счастье))

       limit = MathMin(Bars-counted_bars,Bars-1);
   if (counted_bars==0) {limit--; limit-=10;} else limit++;
 
FXwin:

Вместо этого

Поставьте вот это и будет вам счастье))

Так а Вы проверьте, прежде, чем советовать )) Никакого счастья не будет ;) Проблема ведь не в этом участке кода, а в строке цикла. Сначала нужно узнать, какая была цель изменения цикла и почему было решено, что тип double в целочисленном цикле это нормально.

 
Ihor Herasko:

Так а Вы проверьте, прежде, чем советовать )) Никакого счастья не будет ;) Проблема ведь не в этом участке кода, а в строке цикла. Сначала нужно узнать, какая была цель изменения цикла и почему было решено, что тип double в целочисленном цикле это нормально.

Цикла пробовал менять из кода #property strict, после того как его добавил индикатор исчез из графики, если убрать #property strict все наладится а с кодом не хочет! 

 
Mukhriddin Ibragimov:

Цикла пробовал менять из кода #property strict, после того как его добавил индикатор исчез из графики, если убрать #property strict все наладится а с кодом не хочет! 

Когда индикатор без директивы #property strict, то терминал не обращает внимания на критические ошибки при выполнении программы. С этой же директивой проверяет и реагирует. В журнале появляется такая запись:

2021.05.28 12:14:26.522 Test CHFJPY,H1: array out of range in 'Test.mq4' (78,41)

Это выход за пределы массива-таймсерии Low. Чтобы не было такой ошибки, нужно либо передать корректный индекс бара, либо проверить корректность индекса элемента массива перед его использованием. Второй вариант, конечно, предпочтительнее, но в данном случае намного проще сразу позаботиться о передаче корректного значения. Для этого в первом варианте кода строку:

limit=Bars-counted_bars;

заменить на:

   limit = int(fmin(Bars - counted_bars, Bars - CCIperiod));
 
2021.05.28 12:14:26.522 Test CHFJPY,H1: array out of range in 'Test.mq4' (78,41)

да именно такая запись было, поменял и все заработала . Спасибо большое за помощь .Благодарю )

 
Mukhriddin Ibragimov:

Здравствуйте , помогите пожалуйста разобраться  , где допускаю ошибку ?

сам код, на графике перестал показывать

на это

В конце должен стоят это знак  }