Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Ведешь свой блог? Размести в нем ссылку на MQL5.community и заработай!
Андрей
24
Андрей 2010.01.22 12:10 

Добрый день.

Я только начинаю изучать язык MQL4, прочитав учебник, что дан на сайте, не могу понять как можно программно определить какая цена в определенный момент времени у трендовой линии созданной через ObjectCreate?

Например:

ObjectCreate ("line",2,0,Time1,Price1,Time2,Price2,0,0); // Создам трендовую линию

а теперь хочу знать значение этой линии в момент Time1+1

Комбинатор
15886
Комбинатор 2010.01.22 12:13  
Andrey_Kam >>:

Курить ObjectGet.

Андрей
24
Андрей 2010.01.22 12:39  
TheXpert >>:

Курить ObjectGet.

Это первое что пришло мне в голову, но!!

Функция ObjectGet()  

Функция возвращает значение указанного свойства объекта

double ObjectGet(string name, int prop_id)

int prop_id - идентификатор свойства объекта. Может быть любым из значений списка свойств объекта

А в этом Списке свойств есть только Заданные (константные) свойства. через эту функцию нельзя задать требующегося смещения от времени. Следовательно моя задача не решается.

если я напишу так  Price3 =  ObjectGet("line",1) или Price3 =  ObjectGet("line",3) то получу те значения которые я же и задавал при создании объекта.

Aleksey Kravtsov
169
Aleksey Kravtsov 2010.01.22 12:52  
Andrey_Kam >>:

Добрый день.

Я только начинаю изучать язык MQL4, прочитав учебник, что дан на сайте, не могу понять как можно программно определить какая цена в определенный момент времени у трендовой линии созданной через ObjectCreate?

Например:

ObjectCreate ("line",2,0,Time1,Price1,Time2,Price2,0,0); // Создам трендовую линию

а теперь хочу знать значение этой линии в момент Time1+1




Если я вас правильно понял то сначала нужно найти смещение свечи для этого времени затем так price= ObjectGetValueByShift( "line", candle_shift)

вот как можно узнать смещение свечи зная время, возможно есть ошибки

int CandleShift(datetime i_time)
{
 for(int i = 0; i < Bars - 1; i++)
 {
   if(i_time == Time[i])
    return i;
 }
}

Возможно этот цикл можно заменить стандартной функцией но такой не знаю....

Андрей
24
Андрей 2010.01.22 13:26  
al.k >>:


Если я вас правильно понял то сначала нужно найти смещение свечи для этого времени затем так price= ObjectGetValueByShift( "line", candle_shift)

вот как можно узнать смещение свечи зная время, возможно есть ошибки

Возможно этот цикл можно заменить стандартной функцией но такой не знаю....

Похоже это то что нужно! Спасибо.

Левитин Сергей В.
5160
Левитин Сергей В. 2010.01.22 13:30  

А уровнением из геометрии средней школы не получится?

Комбинатор
15886
Комбинатор 2010.01.22 13:48  
Andrey_Kam >>:

если я напишу так Price3 = ObjectGet("line",1) или Price3 = ObjectGet("line",3) то получу те значения которые я же и задавал при создании объекта.

Да, прочитал по диагонали. Тогда, как написали чуть выше. Бар можно узнать с помощью iBarShift.

Aleksey Kravtsov
169
Aleksey Kravtsov 2010.01.22 13:57  
price = ObjectGetValueByShift( line_name, iBarShift(Symbol(), Period(), time));
с циклом это конечно же была дурость... :)
Nikolay Gaylis
1826
Nikolay Gaylis 2016.12.01 00:00  
Aleksey Kravtsov:
с циклом это конечно же была дурость... :)
Спасибо огромное!
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий