Как можно назначить переменным минимальную и максимальную цену за последние 24, 72 и 168 часов.

 

Добрый день!

Прошу помочь знающим специалистам своего дела.

Известно, что функциями:  

double BIDLOW=SymbolInfoDouble(_Symbol,SYMBOL_BIDLOW);

double ASKHIGH=SymbolInfoDouble(_Symbol,SYMBOL_ASKHIGH);

Возможно получить минимальную и максимальную цену за день.

 

Внимание вопрос:

Как можно назначить переменным минимальную и максимальную цену за последние

- 24 часа;

- 72 часа;

- 168 часов.

 

Существует ли какой-то простой способ о котором я, как новичек, могу не знать? Или это надо писать что-то сложное и масштабное?

Заранее Спасибо! 

 
basler:

Существует ли какой-то простой способ о котором я, как новичек, могу не знать? Или это надо писать что-то сложное и масштабное?

Не треба... всё украдено до Вас...

В помощь: CopyHigh

см. Обращение по начальной и конечной датам требуемого интервала времени

 
уффф... не осилил я массивы... надо читать букварь... 
 
basler:
уффф... не осилил я массивы... надо читать букварь... 
Самое верное решение!
 

Всем спасибо, вопрос решил!

Получилось вот что:

int daysl=5,l=1,ll=1;

double high_array[],low_array[],max_tik,low_tik;


CopyHigh(_Symbol,PERIOD_D1,0,daysl,high_array);

CopyLow(_Symbol,PERIOD_D1,0,daysl,low_array);


max_tik=high_array[0];

while(l<daysl){

if(high_array[l]>max_tik)

max_tik=high_array[l];

l++;

}


low_tik=low_array[0];

while(ll<daysl){

if(low_array[ll]<low_tik)

low_tik=low_array[ll];

ll++;

}

 

Думаю можно как-то усовершенствовать код используя многомерные массивы, но это я пока не осилил ))) 

 
basler:

Всем спасибо, вопрос решил!

Получилось вот что:

int daysl=5,l=1,ll=1;

double high_array[],low_array[],max_tik,low_tik;


CopyHigh(_Symbol,PERIOD_D1,0,daysl,high_array);

CopyLow(_Symbol,PERIOD_D1,0,daysl,low_array);


max_tik=high_array[0];

while(l<daysl){

if(high_array[l]>max_tik)

max_tik=high_array[l];

l++;

}


low_tik=low_array[0];

while(ll<daysl){

if(low_array[ll]<low_tik)

low_tik=low_array[ll];

ll++;

}

 

Думаю можно как-то усовершенствовать код используя многомерные массивы, но это я пока не осилил ))) 

Не надо никаких многомерных - Вы все правильно сделали)) Надо бы еще возможные ошибки при копировании проверить и на этом все.
 
basler:

Всем спасибо, вопрос решил!

...

Думаю можно как-то усовершенствовать код используя многомерные массивы, но это я пока не осилил ))) 

Усовершенствовать можно использую функции ArryaMaximum() и ArrayMinimum(). Многомерные массивы здесь не нужны.
 

Спасибо за наставление.

Оптимизировал. Вот что вышло:

int kl,km,daysl=2;

double high_array[],low_array[],max_tik,low_tik;

CopyHigh(_Symbol,PERIOD_D1,0,daysl,high_array);

CopyLow(_Symbol,PERIOD_D1,0,daysl,low_array);


kl=ArrayMaximum(high_array,0,WHOLE_ARRAY);

km=ArrayMinimum(low_array,0,WHOLE_ARRAY);


max_tik=high_array[kl];

low_tik=low_array[km];

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