Обработать сетку фибоначчи

 
Подскажите, как можно реализовать в советнике обработку уровней Фибоначчи. Уровни Фибоначчи натягиваю на график руками. И только после этого советник должен определить уровни и дать сигнал. Либо же где можно читнуть про это? Спасибо!!
 
drziv:
Подскажите, как можно реализовать в советнике обработку уровней Фибоначчи. Уровни Фибоначчи натягиваю на график руками. И только после этого советник должен определить уровни и дать сигнал. Либо же где можно читнуть про это? Спасибо!!

Ищите на графике объект, в имени которого присутствует "Fibo" - МТ присваивает имена для сетки Fibo как Fibo ХХХХХ, где ХХХХХ - произвольное число

Когда объект будет найден, берите с него данные:

ObjectGet("Имя найденного объекта Fibo", OBJPROP_FIRSTLEVEL+n); 

где n - порядковый номер линии фибо от 0 до 31. Количество линий можно узнать через:

ObjectGet("Имя найденного объекта Fibo", OBJPROP_FIBOLEVELS); 

вернёт число от 1 до 32.

 
Спасибо! С этим все ясно. Вы очень помогли. Но вот беда: Я натянул сетку на график и увидел название сетки Fibo 33295. В советнике вбил название сетки и все нормально нашлось. Но со временем когда цена уйдет, нужно будет старую сетку фибо удалить, а новую натянуть и номер уже будет другой. Как можно будет либо номер оставить сетки либо же чтобы советник сам определял номера? Такое возможно? Спасибо!
 
Вроде допер. Можно с помощью ObjectsTotal(); Я правильно мыслю? Но вот если будет несколько объектов на графике, то уже наверно не выбрать нужный
[Удален]  
Создавайте сетку при помощи скрипта, будет возможность формировать имя по своим правилам. Можно сделать весьма удобно https://www.mql5.com/ru/forum/146112.
 

Отличное решение. Спасибо. Но вот для собственной образованности интересуюсь ручным способом нанесения сетки и дальнейшей обработки её советником.

[Удален]  
А вообще лучше в советнике вбейте формулами уровни фибоначи (потом на другие уровни легче перейти будет)
 

Подскажите, можно ли сделать так чтобы уровни фибоначи ровнялись ценам графика. Не получатся создать условие

if (Ask < ObjectGet (name,OBJPROP_FIRSTLEVEL+4)

{

Alert ("сообщение");

}

как бы не двигал сетку выше уровня или ниже уровня цены Алерт не срабатывает. И это понятно, потому что цена - 1,3300 больше, чем уровень фибо 0,618 как бы я не передвигал сетку по графику. Нужно чтобы уровни фибо равнялись ценам на которых они расположены, что бы условие стало истинным. Можно ли такое организовать? Спасибо.

 
drziv:

Подскажите, можно ли сделать так чтобы уровни фибоначи ровнялись ценам графика. Не получатся создать условие

if (Ask < ObjectGet (name,OBJPROP_FIRSTLEVEL+4)

{

Alert ("сообщение");

}

как бы не двигал сетку выше уровня или ниже уровня цены Алерт не срабатывает. И это понятно, потому что цена - 1,3300 больше, чем уровень фибо 0,618 как бы я не передвигал сетку по графику. Нужно чтобы уровни фибо равнялись ценам на которых они расположены, что бы условие стало истинным. Можно ли такое организовать? Спасибо.

Да тут у Вас вообще ошибка...Навскидку так лучше:

if (Ask < NormalizeDouble(ObjectGet (name,OBJPROP_FIRSTLEVEL))+4*Point) 
 
drziv:
Спасибо! С этим все ясно. Вы очень помогли. Но вот беда: Я натянул сетку на график и увидел название сетки Fibo 33295. В советнике вбил название сетки и все нормально нашлось. Но со временем когда цена уйдет, нужно будет старую сетку фибо удалить, а новую натянуть и номер уже будет другой. Как можно будет либо номер оставить сетки либо же чтобы советник сам определял номера? Такое возможно? Спасибо!

Для поиска части имени в имени объекта используйте StringSubstr(); Также сетки фибо можно идентифицировать по времени и значению их точек 0 и 100 на графике. Можно использовать только одну сетку фибо для советника: когда вы её натягиваете на график, в поле её имени введите своё, ну или удалите из её имени число, оставив только "Fibo".


По сути-то вариантов множество. И каждый в большей/меньшей степени подходит под конкретные требования ТС

 
artmedia70:

Для поиска части имени в имени объекта используйте StringSubstr();

Еще лучше StringFind()