Скачать MetaTrader 5

почему вылетает индикатор в инициализации на этой строке HiBuffer[i]= iHigh(NULL,0,i); ???

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
koko_moko
373
koko_moko  
надо же в массив под таким индексом записать это значение цены
Boris
3943
Boris  
Замените i на любую цифру, и может, заиницилизируется! А i оставьте для цикла!
Ihor Herasko
16482
Ihor Herasko  
Скорее всего, HiBuffer не имеет достаточный размер. Проверьте максимально возможное значение i в цикле и сравните его с размером массива HiBuffer. 
koko_moko
373
koko_moko  
borilunad:
Замените i на любую цифру, и может, заиницилизируется! А i оставьте для цикла!
с ицфрой то же самое 
koko_moko
373
koko_moko  
Scriptong:
Скорее всего, HiBuffer не имеет достаточный размер. Проверьте максимально возможное значение i в цикле и сравните его с размером массива HiBuffer. 

ну явного ограничения для i в цикле нет.

 

for (int i=1;ok==false;i++)

      { if ()

HiBuffer[i]= iHigh(NULL,0,i);

ok = true; 

return(INIT_SUCCEEDED);

         } 

 

и вот как он задается double         HiBuffer[]; 

Boris
3943
Boris  

Посмотрите в Доке, как делать циклы в индикаторах!

Так нельзя for (int i=1;ok==false;i++) 

Может быть,  for (int i=0;i<bar;i++)  Посмотрите любой индикатор!

Или: int limit=Bars-1-IndicatorCounted();

for (int i=limit;i>=0;i--) 

koko_moko
373
koko_moko  
borilunad:

Посмотрите в Доке, как делать циклы в индикаторах!

Так нельзя for (int i=1;ok==false;i++) 

Может быть,  for (int i=0;i<bar;i++)  Посмотрите любой индикатор!

Или: int limit=Bars-1-IndicatorCounted();

for (int i=limit;i>=0;i--) 

 

нет дело не в этом. for (int i=1; i==99;i++) тоже не работает  

Boris
3943
Boris  

Пробуйте другие варианты! А этот и с цифрами не заработает! Нужно же указывать откуда куда прибавлять или вычитать!

Этот скорей всего:

int limit=Bars-1-IndicatorCounted();

for (int i = limit; i >= 0; i--) 

Alexey Viktorov
20972
Alexey Viktorov  
borilunad:

Посмотрите в Доке, как делать циклы в индикаторах!

Так нельзя for (int i=1;ok==false;i++) 

Может быть,  for (int i=0;i<bar;i++)  Посмотрите любой индикатор!

Или: int limit=Bars-1-IndicatorCounted();

for (int i=limit;i>=0;i--) 

mario_SC--:


нет дело не в этом. for (int i=1; i==99;i++) тоже не работает 

А ты попробуй прочесть как будет звучать цикл на русском языке.

"от i = 1; пока i == 99; i++"

Я думаю так никакой цикл работать не будет.

koko_moko
373
koko_moko  
AlexeyVik:

А ты попробуй прочесть как будет звучать цикл на русском языке.

"от i = 1; пока i == 99; i++"

Я думаю так никакой цикл работать не будет.

тут с условием ты прав. но всеравно то что я с самого начала писал условие, что с цифрами и "правильным" условием - цикл то РАБОТАЕТ. я по отладчику смотрю. ВЫЛЕТАЕТ когда доходит до этого массива. Может я неправильно в него записываю ?
Алексей Тарабанов
7399
Алексей Тарабанов  
mario_SC--:
тут с условием ты прав. но всеравно то что я с самого начала писал условие, что с цифрами и "правильным" условием - цикл то РАБОТАЕТ. я по отладчику смотрю. ВЫЛЕТАЕТ когда доходит до этого массива. Может я неправильно в него записываю ?
Вы пытаетесь работать с массивом, память для которого еще не распределена; иначе говоря - этого массива еще нет. Не надо инициализировать массивы индикаторных буферов, это сделает система без Вашего участия, но использовать эти массивы ранее, чем в start()/OnCalculate не стоит. 
123
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий