Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Нет времени изучать MQL5? Библиотека исходников для вас!
first_may
326
first_may 2011.04.17 17:12 

Здравствуйте, пытаюсь определить, пересекла ли скользящая средняя цены или нет. Подскажите пожалуйста, как это сделать?

MA0=iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,0); // средняя на текущем баре

MA1=iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,1); // средняя на предыдущем баре

if (MA0>... && MA1<...) // тут я не знаю как сравнить с ценой на текущем и предыдущем баре :(

{

MessageBox("Есть пересечение",Symbol(),MB_OK);

}

moskitman
4027
moskitman 2011.04.17 17:16  
если МА больше лоя и меньше хая соответствующего бара
first_may
326
first_may 2011.04.17 17:21  
Это я понимаю, но как написать. В документации написано про Bid, Ask, .. Вы хотите сказать, что надо использовать их?
first_may
326
first_may 2011.04.17 17:26  

MA0=iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,0); // средняя на текущем баре

MA1=iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,1); // средняя на предыдущем баре

if (MA0>Close[0] && MA1< Close[1] ) // Вот так правильно???

{

MessageBox("Есть пересечение",Symbol(),MB_OK);

}

first_may
326
first_may 2011.04.17 18:13  
Скажите пожалуйста, я правильно написал?
Victor Nikolaev
Модератор
14482
Victor Nikolaev 2011.04.17 18:20  
MA0=iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,0); // средняя на текущем баре

MA1=iMA(NULL,0,13,0,MODE_SMA,PRICE_CLOSE,1); // средняя на предыдущем баре

if (MA0>High[0] && MA1< High[1] ) // Вот так правильно??? 

{

MessageBox("Есть пересечение",Symbol(),MB_OK);

}

if (MA0<Low[0] && MA1> Low[1] ) // Вот так правильно??? 

{

MessageBox("Есть пересечение",Symbol(),MB_OK);

}
Что-то примерно так. Хотя мне не нравится
first_may
326
first_may 2011.04.17 18:31  
Я понимаю, что в первом сравнении проверяли на лонг, а во втором на шорт. А почему не нравиться? Потому что условия MA1< High[1] или MA1> Low[1] могут говорить о том, что на предыдущем баре средняя могла быть внутри свечи? Да?
Виктор
Модератор
6559
Виктор 2011.04.18 07:43  
Vinin:
Что-то примерно так. Хотя мне не нравится
Можно поширше представить тему:
Пересечение скользящей средней и цены
Хоть что-нибудь, но подойдет.
Мне лично проще рассматривать типовое пересечение двух МА, у одной из которых период=1.
first_may
326
first_may 2011.04.18 09:06  
"Мне лично проще рассматривать типовое пересечение двух МА, у одной из которых период=1." - даже не подумал об этом, спасибо, надо попробовать :)
Bol
18
Bol 2011.06.22 19:18  

А вот можно взять из советника Moving Average.mq4 из станд.набора который идет в любом МТ4 ...

Если открытие предыдущей свечи выше машки, а закрытие ниже машки - значит цена пересекла машку вниз, солим..

Если наоборот - баим...

Вроде очень разумное и лаконичное решение... А сравнивать пересечения High[0] и Low[0] с машкой по моему не совсем верно, пересечение может ведь быть и тенью от свечи - получите ложное пробитие, а ордерок то уже откроется и самоотверженно пойдет в убыток.

   ma=iMA(NULL,0,MovingPeriod,MovingShift,MODE_SMA,PRICE_CLOSE,0);
//---- sell conditions
   if(Open[1]>ma && Close[1]<ma)  
     {
      OrderSend(Symbol(),OP_SELL,LotsOptimized(),Bid,3,0,0,"",MAGICMA,0,Red);
      return;
     }
//---- buy conditions
   if(Open[1]<ma && Close[1]>ma)  
     {
      OrderSend(Symbol(),OP_BUY,LotsOptimized(),Ask,3,0,0,"",MAGICMA,0,Blue);
      return;
     }
Victor Nikolaev
Модератор
14482
Victor Nikolaev 2011.06.22 19:34  
Abylhat:

А вот можно взять из советника Moving Average.mq4 из станд.набора который идет в любом МТ4 ...

Если открытие предыдущей свечи выше а закрытие ниже - значит цена пересекла машку вниз, солим..

Если наоборот - баим...

Вроде очень разумное и лаконичное решение...


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