Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Опубликуй статью. Получи вознаграждение!
Aleksandr Nezhin
124
Aleksandr Nezhin 2012.08.23 17:53 

Написал такой код, установил советника, но при пересечении двух мувингов не получил сигнал, подскажите в чем проблема. Прошу не пинать - осваиваю только.

if (iMA(NULL,0,40,0,MODE_EMA,PRICE_CLOSE,0) == iMA(NULL,0,60,0,MODE_EMA,PRICE_CLOSE,0))
  Alert("Есть пересечение");
DmitriyN
2316
DmitriyN 2012.08.23 18:02  
MRDA:

Написал такой код, установил советника, но при пересечении двух мувингов не получил сигнал, подскажите в чем проблема. Прошу не пинать - осваиваю только.


== - вот это "жесть". Мягче нужно задавать условия для сравнения, а то вы вообще сигналов не дождётесь.
IgorM М
4801
IgorM М 2012.08.23 18:11  
MRDA:

Написал такой код, установил советника, но при пересечении двух мувингов не получил сигнал, подскажите в чем проблема. Прошу не пинать - осваиваю только.

проблема в том, что вы не читали как правильно работать с вещественными числами https://www.mql5.com/ru/articles/1561

ну а если разберетесь, тогда наверное так: на предыдущем баре инд1 выше ли равно инд2, а на текущем баре инд1 ниже или равно инд2 ИЛИ на предыдущем баре инд1 ниже ли равно инд2, а на текущем баре инд1 выше или равно инд2 --> было пересечение линий

наверноекактотак :)

Владимир Тезис
4270
Владимир Тезис 2012.08.23 20:25  
MRDA:

Написал такой код, установил советника, но при пересечении двух мувингов не получил сигнал, подскажите в чем проблема. Прошу не пинать - осваиваю только.


Условие задано не верно. Вы работаетет со значениями на нулевой свече. Ситуация: Цены равны, советник решил, что пересечение есть, открыл позу. На следующем тике ситуация изменилась и равенство цен исчезло. А поза-то открыта. Это всё закончится тем, что Вы будут смотреть на историю своих торгов и недоумевать, почему же советник пооткрывал ордера, если пересечение отсутствует?

Попробуйте получить значения скользящих на второй свече и на первой. Если на второй свече первая скользящая менее или равна второй скользящей и при этом если на первой свече первая скользящая больше второй, то произошло пересечение - скользящая первая пересекла вторую снизу вверх. Для большинства скользящих это сработает. Если копать глубже, то тут на форуме есть целая статья о том, как обрабатывать показания скользящих.

Владимир Тезис
4270
Владимир Тезис 2012.08.23 20:43  
Посмотрите вот тут - здесь рассмотрены вопросы не только пересечения скользящих, но и касания
Vladimir
1592
Vladimir 2012.08.23 23:09  

Вот пример, открытие совпадает с историей, только к сожалению профита это не принесет ...

https://book.mql4.com/ru/samples/expert

Aleksandr Nezhin
124
Aleksandr Nezhin 2012.08.24 13:14  

Спасибо за науку. Разбираюсь только, вот и первая проблема.

Но только либо не дочитал, либо не понял. Изменил код, но также нет сигнала

MA_TB_13 = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,0); //текущий бар
MA_TB_50 = iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,0); //текущий бар
MA_PB_13 = iMA(NULL,0,13,0,MODE_EMA,PRICE_CLOSE,1); //предыдущий бар 
MA_PB_50 = iMA(NULL,0,50,0,MODE_EMA,PRICE_CLOSE,1); //предыдущий бар
if ((( MA_TB_13 <= MA_TB_50 ) && (MA_PB_13 >= MA_PB_50)) || (( MA_TB_13 >= MA_TB_50 ) && (MA_PB_13 <= MA_PB_50)))
  Alert(Symbol() + " " + "Есть касание или пересечение");
Виктор
Модератор
6560
Виктор 2012.08.24 18:11  
Бальзам на душу...
Ребята, почаще заглядывайте в эту ветку, она придумана специально для вас!
Mihail Marchukajtes
3295
Mihail Marchukajtes 2012.08.25 15:54  
При пересечении нужно использовать знаки сравнения больше или меньше. Равно в данном случае не поможет....
/
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий