Как заменить длинную запись через буфер???

 

Здравствуйте.

Для обозначения цены открытия каждой свечи пишу так.
double openH1 = iOpen(Symbol(),PERIOD_H1,1);
double openH2 = iOpen(Symbol(),PERIOD_H1,2);
double openH3 = iOpen(Symbol(),PERIOD_H1,3);
double openH4 = iOpen(Symbol(),PERIOD_H1,4);
и т.д.


пробую 
int z;
double openH[z] = iOpen(Symbol(),PERIOD_H1,z);//вроде так, но не получается



openH[1]>openH[4] // чтобы потом вот так было
 
D4135:

Здравствуйте.

Почитайте про циклы. К буферам (если Вы имеете ввиду индикаторные буферы) это никак не относится:

int z;
double openH[];
ArrayResize( openH, z );
for( int i = 0; i < z; i++ )
   {
    openH[ i ] = iOpen(Symbol(),PERIOD_H1,i);
   }

Обратите внимание также на нумерацию в массиве. Она начинается с нуля, так что последний индекс в данном массиве будет не z, а z-1.

Работоспособность кода не проверял! 

 
Tapochun:

Почитайте про циклы. К буферам (если Вы имеете ввиду индикаторные буферы) это никак не относится:

Обратите внимание также на нумерацию в массиве. Она начинается с нуля, так что последний индекс в данном массиве будет не z, а z-1.

Работоспособность кода не проверял! 

спасибо
 
D4135:

Здравствуйте.

Вот эта строчка неправильная:


Сначала надо объявить массив: 

double openH[10];

При объявлении в скобках указывается количество элементов массива.

Потом пользоваться:

openH[0] = iOpen(Symbol(),PERIOD_H1,0); 

openH[1] = iOpen(Symbol(),PERIOD_H1,1);  

...

openH[9] = iOpen(Symbol(),PERIOD_H1,9);  // последний индекс 9 для массива из 10-ти элементов