Скачать MetaTrader 5

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

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
basler
810
basler  

Добрый день!

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

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

double BIDLOW=SymbolInfoDouble(_Symbol,SYMBOL_BIDLOW);

double ASKHIGH=SymbolInfoDouble(_Symbol,SYMBOL_ASKHIGH);

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

 

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

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

- 24 часа;

- 72 часа;

- 168 часов.

 

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

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

Dennis Kirichenko
11540
Dennis Kirichenko  
basler:

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

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

В помощь: CopyHigh

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

basler
810
basler  
уффф... не осилил я массивы... надо читать букварь... 
Mikhail Filimonov
5931
Mikhail Filimonov  
basler:
уффф... не осилил я массивы... надо читать букварь... 
Самое верное решение!
basler
810
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++;

}

 

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

Dmitriy Skub
12171
Dmitriy Skub  
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++;

}

 

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

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

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

...

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

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

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

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

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];

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий