Любой вопрос новичка, чтоб не захламлять форум. Профи, не проходите мимо. Без вас никуда - 6. - страница 67

 
alexey1979621:

При тестировании советника в журнале выскакивает ошибка

2013.08.07 12:35:41 2012.06.06 05:29 Пуриа - 1.452 - SQ EURUSD,M30: Возникла ошибка 4002 (Индекс массива - вне диапазона)

2013.08.07 12:35:41 2012.06.06 05:29 Пуриа - 1.452 - SQ EURUSD,M30: Попытка открыть Buy ордер. Ожидание ответа..

Соответственно ордера не открываются. Как устранить ошибку? Каковы причины ее возникновения?

Буду рад помощи.

Без кода только можно подсказать, что индекс, указывающий на ячейку массива, указывает за пределы массива. Если массив имеет размер 10 и индекс имеет величину 10, то индекс указывает на несуществующую 11-ю ячейку массива, т.к. индексация массивов начинается с нуля. Для данного примера: массив величиной 10 индексируется от 0 до 9 - итого 10.

 
Mepkypuu:
Из одних сообщений терминала мало что будет понятно, мало кто поможет вам, если вы не выложите код советника. Где-то в массив у вас пишется несуществующая партия данных, как одно из предположений, но гадать не мой профиль.
Мне этот советник скинул товарищ. У него он работает без ошибок лично видел по скайпу. У меня же выдает ошибку 4002. Какие еще могут быть варианты?
 
alexey1979621:
Мне этот советник скинул товарищ. У него он работает без ошибок лично видел по скайпу. У меня же выдает ошибку 4002. Какие еще могут быть варианты?

Я вам ответил однозначно. Без кода не исправить.
 
r772ra:
Можно.

Спасибо! Может видели в свободном доступе?
 
001:
Спасибо! Может видели в свободном доступе?

Здесь
 
alexey1979621:
Мне этот советник скинул товарищ. У него он работает без ошибок лично видел по скайпу. У меня же выдает ошибку 4002. Какие еще могут быть варианты?
Еще раз говорю, гадать не мой профиль. Смотрите код, где у вас пишутся массивы, проработайте в уме все возможные варианты подборок данных, так вот, одна из них и будет не существующей. Ее надо исключить каким-то образом. А вообще, попросите товарища, чтобы он разбирался с ошибкой? Ведь он автор советника? В его компетенции заботиться о том, чтобы код исключал возможные ошибки исполнения.
 

Подскажите, пожалуйста, такая запись насколько корректна:

for(int i=ObjectsTotal(OBJ_HLINE)-1; i>=0; i--) 

Не получится так, что, когда объектов у меня горизонтальных, к примеру, 3, а всего объектов 10, и эти горизонтальные объекты разбросаны среди 10, то при переборе 3 сверху проанализируются, а до следующих 7-ми, где будут все (либо часть) горизонтальных линий, дело не дойдет? Или перебор автоматически отсортирует именно по горизонтальным линиям?

И, если последнее верно, то можно ли сделать такую запись:

for(int i=ObjectsTotal(OBJ_HLINE && OBJ_TREND)-1; i>=0; i--) 
 
Chiripaha:

Подскажите, пожалуйста, такая запись насколько корректна:

Не получится ли так, что, когда объектов у меня горизонтальных, к примеру, 3, а всего объектов 10, и эти горизонтальные объекты разбросаны среди 10, то при переборе 3 сверху проанализируются, а до следующих 7-ми, где будут все (либо часть) горизонтальных линий, дело не дойдет? Или перебор автоматически отсортирует именно по горизонтальным линиям?

И, если последнее верно, то можно ли сделать такую запись:

for(int i=ObjectsTotal(OBJ_HLINE && OBJ_TREND)-1; i>=0; i--) 

1. Не получится. Отсортирует по горизонтальным.

2. А надо?

 
Отсортирует по первым а не по горизонтальным....
 
artmedia70:

1. Не получится. Отсортирует по горизонтальным.

2. А надо?

2. Надо. Мне нужно просмотреть 2 типа объектов: горизонтальные и трендовые линии. Остальные объекты в данном переборе не актуальны.

FAQ:
Отсортирует по первым а не по горизонтальным....
Если я правильно понял, мнения разошлись? или ответ на счет "первых" не противоречит предыдущему утверждению?
Причина обращения: