Нужна помощь по массивам "array out of range" - страница 2

 
Ihor Herasko:

Каждый элемент массива соответствует своей цене. Например, интервал цен от 1.18 до 1.19 - это 1000 элементов массива. Индекс 0 - цена 1.18, а индекс 999 - цена 1.18999. Теперь нужно записать информацию для цены 1.18545. Как найти индекс? Так и находим: 1.18545 - 1.18 = 0.0545. Далее делим на величину пункта и округляем до целого, т. к. имеем дело с вещественными числами.

Теперь понятно. А почему-бы в таком случае не добавить простую проверку индекс массива > 0 и < размера массива? и все проблемы должны быть сняты, на мой взгляд.

зы. почитав с небольшим запозданием, я увидел что это предложение уже было, но не сделано.
 

Natalya Dzerzhinskaya:
Этот пример тоже виснет.

Значит, что-то не так сделали. Я же проверил код. Все отлично работает.

Если по умолчанию код и выше по коду поправить инициализируемое значение с 0 на 1, то всё работает чисто.

Вы просто эксперименты ставите? Что бы такого изменить в коде, не вникая в то, что это означает?
Файлы:
 
Alexey Viktorov:

Теперь понятно. А почему-бы в таком случае не добавить простую проверку индекс массива > 0 и < размера массива? и все проблемы должны быть сняты, на мой взгляд.

зы. почитав с небольшим запозданием, я увидел что это предложение уже было, но не сделано.
Нужно ведь не просто сделать проверку, но и разобраться, исходя из логики кода, что делать, если значение некорректное. Просто игнорировать запись в массив нельзя, т. к. получается бесконечный цикл.
 
Ihor Herasko:

Значит, что-то не так сделали. Я же проверил код. Все отлично работает.

Вы просто эксперименты ставите? Что бы такого изменить в коде, не вникая в то, что это означает?

В тестере всё-равно виснет к сожалению((

Если я не знаю причину и суть проблемы, то пробую перебором вариантов хотя бы решить))

 
Natalya Dzerzhinskaya:

В тестере всё-равно виснет к сожалению((

Если я не знаю причину и суть проблемы, то пробую перебором вариантов хотя бы решить))


Проверил в тестере. Все отлично. EURUSD, M15, начиная с 2017.08.04. Какие настройки у Вас?

 
Ihor Herasko:

Проверил в тестере. Все отлично. EURUSD, M15, начиная с 2017.08.04. Какие настройки у Вас?


USDJPY, M5, с 2017.10.19, настройки по умолчанию, история прогружена.
Тест с визуализацией, с переходом на новые сутки виснет терминал.

 
Natalya Dzerzhinskaya:

USDJPY, M5, с 2017.10.19, настройки по умолчанию, история прогружена.
Тест с визуализацией, с переходом на новые сутки виснет терминал.


Разобрался. Цикл, из-за которого виснет индикатор при добавлении проверок на предмет выхода за пределы массива, работает до тех пор, пока сумма отметок на уровнях ниже или выше уровня с максимальным количеством отметок не достигнет 70% от этого максимума. В итоге в тех случаях, когда уровень максимума составляет более 30% от всего профиля рынка, невозможно набрать сумму в 70%. Получаем бесконечный цикл с выходом за пределы массива.

В показанном Вами случае уровень максимума равен 2, а общий профиль рынка - 3. То есть весь профиль рынка, исключая максимум, составляет только 33% от общего профиля.

Файлы:
 
Ihor Herasko:

Разобрался. Цикл, из-за которого виснет индикатор при добавлении проверок на предмет выхода за пределы массива, работает до тех пор, пока сумма отметок на уровнях ниже или выше уровня с максимальным количеством отметок не достигнет 70% от этого максимума. В итоге в тех случаях, когда уровень максимума составляет более 30% от всего профиля рынка, невозможно набрать сумму в 70%. Получаем бесконечный цикл с выходом за пределы массива.

В показанном Вами случае уровень максимума равен 2, а общий профиль рынка - 3. То есть весь профиль рынка, исключая максимум, составляет только 33% от общего профиля.


Сейчас работает безупречно)) Спасибо!!

Мне бы лично все эти манёвры были бы точно не под силу.
Даже при готовом варианте так мысли не собрать (чего, почему, да как)
Не люблю работу с массивами.

Причина обращения: