Выход за пределы массива - страница 2

 
forex2030:

Вопрос единственный, как предотвратить этот вылет за пределы массива.
Цикл по всем ордерам не помогает, в итоге не вся информация объектов отображается.

Истользуйте debug для поиска ваших косяков. Сэкономите время и нервы, чем подобное задавать на форуме. ))




 
forex2030:

Только в переменных за стартом

В init, то не принимает


не встречал пока 2-х мерных массивов для индикатора

попробуйте так

ArrayResize(rExtSymbolsSummaries)=OrdersTotal()*8;

не в Init, а в боевой части

 
forex2030:

Вопрос единственный, как предотвратить этот вылет за пределы массива.

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

Цикл по всем ордерам не помогает, в итоге не вся информация объектов отображается.

Вот эта фраза ничего никому не скажет, пока нет того кода, который за нее отвечает.

 
Renat Akhtyamov:

попробуйте так
ArrayResize(rExtSymbolsSummaries)=OrdersTotal()*8;
не в Init, а в боевой части

Странное решение но и не работает


 

Такое решение не выявляет ошибку, но все объекты просто пропадают если >1000

   int tf=PERIOD_CURRENT;   
   int bars=iBars(OrderSymbol(),tf);
   if (ArraySize(rExtSymbolsSummaries)<Bars){
       ArraySetAsSeries(rExtSymbolsSummaries,false);
       ArrayResize(rExtSymbolsSummaries,bars);
       ArraySetAsSeries(rExtSymbolsSummaries,true);} 
 
forex2030:

Странное решение но и не работает

я неправильно написал

ArrayResize(rExtSymbolsSummaries,OrdersTotal()*8);

 
Renat Akhtyamov:

я неправильно написал

ArrayResize(rExtSymbolsSummaries,OrdersTotal()*8);

Ошибки при компилировании нет, но через 3-4 тика


 
forex2030:

Ошибки при компилировании нет, но через 3-4 тика

понял

так пробуем

ArrayResize(rExtSymbolsSummaries,SYMBOLS_MAX*8);

если вышибет, так еще:

ArrayResize(rExtSymbolsSummaries,(SYMBOLS_MAX+1)*8);

смысл в том, что массив arr[1][8] это уже 8 элементов, а не один

если вышибет, попробуй поискать error сам

 
Renat Akhtyamov:

так пробуем
ArrayResize(rExtSymbolsSummaries,SYMBOLS_MAX*8);

Ошибок нет ни в компиляции не после 1000, но все объекты пропали как в моём примере когда >1000

   int tf=PERIOD_CURRENT;   
   int bars=iBars(OrderSymbol(),tf);
   if (ArraySize(rExtSymbolsSummaries)<Bars){
       ArraySetAsSeries(rExtSymbolsSummaries,false);
       ArrayResize(rExtSymbolsSummaries,bars);
       ArraySetAsSeries(rExtSymbolsSummaries,true);} 
 
forex2030:

Ошибок нет ни в компиляции не после 1000, но все объекты пропали как в моём примере когда >1000

какие объекты пропадают?
Причина обращения: