Помогите с массивами

 
Всем здравствуйте!
Написал скрипт, которой должен выводить последние пять значений High[]

double F[] = {0};
int k = 0;
 
void start()
   {
   int i = 1;
   while(i<6)
     {     
     F[k] = High[i];
     ArrayResize(F,k+1);
     k++;
     i++;
     }
 
   while (k<ArraySize(F))
     {
     Alert(F[k]);
     k++;
     }
   }
Не могу найти ошибку.
Помогите!
Всем спасибо!
 
qee:
Всем здравствуйте!
Написал скрипт, которой должен выводить последние пять значений High[]

double F[] = {0};
int k = 0;
 
void start()
   {
   int i = 1;
   while(i<6)
     {     
     F[k] = High[i];
================================================
     k++;
     ArrayResize(F,k+1);   
================================================
     i++;
     }
 
   while (k<ArraySize(F))
     {
     Alert(F[k]);
     k++;
     }
   }
Не могу найти ошибку.
Помогите!
Всем спасибо!
 

Все равно не работает.
Результат "0".

 
Вас не удивляет, почему в алерте открывается только одно значение,   в то время как в массиве несколько больше элементов? Вставтье k=0; перед вторым циклом. А последний элемент будет равен нулю.
 
qee:
Написал скрипт, которой должен выводить последние пять значений High[]

double F[1] = {0};
int k = 0;
 
void start()
   {
   int i = 1;
   while(i<6)
     {     
     F[k] = High[i];
     ArrayResize(F,k+1);
     k++;
     i++;
     }
 

   k=0;
     while (k<ArraySize(F))
     {
     Alert(F[k]);
     k++;
     }
   }
А так ?
 
Всем спасибо
получилось:
double F[1] = {0};
int k = 0;
 
void start()
   {
   int i = 1;
   while(i<6)
     {     
     F[k] = High[i];
     if (i==5)
     break;
     k++;
     ArrayResize(F,k+1);    
     i++;
     }
 
     k=0;
     while (k<ArraySize(F))
     {
     Alert(F[k]);
     k++;
     }
   }
Заработало.

А теперь другой вопрос.
Как сделать так чтобы скрипт выдавал результаты для всех таймфреймов?
Т.е. хотелось чтобы скрипт содержал массив T[1,5,15,30,60,240,1440,10080,43200]
 
Есть такие функции iClose(), iHight() и т.п.
 
double F[1] = {0};
int k = 0;
int T[]={1,5,15,30,60,240,1440,10080,43200};
int ti = 0;
 
void start()
   {
   while (ti<ArraySize(T))
   {
   ArrayResize(F,1);
   F[1] = {0};
   int i = 1;
   while(i<6)
     {     
     F[k] = iHigh(NULL,T[ti],i);
     if (i==5)
     break;
     k++;
     ArrayResize(F,k+1);    
     i++;
     }
 
     k=0;
     while (k<ArraySize(F))
     {
     Alert(F[k],"   ",T[ti]);
     k++;
     }
     ti++;
   }
   }

Получился вот такой код.
Работает правильно только для минуток(для первого элемента массива).
Все остальные результаты мне не понятны.
Подскажите кто что сможет!

 

Помогите, пожалуйста!

 

А такой кусок кода не устраит?

double F[9][5];
int T[]={1,5,15,30,60,240,1440,10080,43200};
 
void start() {
   int i,j;
// Формирование массива
   for (i=0;i<9;i++) {
      for (j=0;j<5;j++) {
         F[i,j] = iHigh(NULL,T[i],j+1);
      }
   }
// Вывод массива
   for (i=0;i<9;i++) {
      for (j=0;j<5;j++) {
        Alert(F[i,j],"   ",T[i]);
      }
   }
}
 

Код не оптимальный, но верный. Не хватает одной строчки.

После int i = 1; добавить k=0;

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