Скачать MetaTrader 5

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

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

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

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

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

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

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

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

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

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

Дмитрий
1046
Дмитрий  
А вообще лучше в советнике вбейте формулами уровни фибоначи (потом на другие уровни легче перейти будет)
Igor Zenchenko
167
Igor Zenchenko  

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

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

{

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

}

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

Mikhail Kozhemyako
1247
Mikhail Kozhemyako  
drziv:

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

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

{

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

}

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

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

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

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


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

Alexey Subbotin
4998
Alexey Subbotin  
artmedia70:

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

Еще лучше StringFind()
12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий