Скачать MetaTrader 5
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Знаете ли вы, что MQL5 является объектно-ориентированным языком?
traderEvgen
397
traderEvgen 2016.01.09 10:50 
Как программно узнать что скользящая средняя выровнялась на графике ?
Vladimir Karputov
Модератор
42427
Vladimir Karputov 2016.01.09 11:11  
traderEvgen:
Как программно узнать что скользящая средняя выровнялась на графике ?
Для этого нужно сравнить значения индикатора на нескольких барах. А самое трудное - это чётко определится - а что такое "... скользящая средняя выровнялась...". То есть сколько баров сравнивать, какая погрешность выравненности...
traderEvgen
397
traderEvgen 2016.01.09 11:21  
Karputov Vladimir:
Для этого нужно сравнить значения индикатора на нескольких барах. А самое трудное - это чётко определится - а что такое "... скользящая средняя выровнялась...". То есть сколько баров сравнивать, какая погрешность выравненности...

а можете что - то посоветовать ?

 мне нужно примерно такие выравнивание находить 

МА выравнялась  

Maxim Romanov
3630
Maxim Romanov 2016.01.09 12:08  
traderEvgen:

а можете что - то посоветовать ?

 мне нужно примерно такие выравнивание находить 

 

ну если значение средней на предыдущем баре=текущему, то это значитивыровнилась. Можно процент отклонения добавить, типа: если предыдущее значение в пределах 10% отклонения от текущего, то выровнялось. Ну и задать диапазон периодов, сколько баров эта цена должна быть в диапазоне отклонения, чтобы считать что линия выровнялась.
Можно диапазон отклонения сделать зависимым от числа баров. чем больше баров, тем шире диапазон отклонения. Но сделать это по определенному закону.
Maxim Kuznetsov
9314
Maxim Kuznetsov 2016.01.09 12:11  
traderEvgen:
Как программно узнать что скользящая средняя выровнялась на графике ?

SMA "выравнивается" когда преодолевает цену за период назад. (это из определения SMA)

Чтобы избежать частых срабатываний на флете можно ещё сравнить наклоны краткопериодных SMA на текущей момент и за период назад - если они уверенно разбегаются то это чёткий сигнал пересечения и "дребезг" (скорое пересечение в обратку) маловероятен.

Vladimir Karputov
Модератор
42427
Vladimir Karputov 2016.01.09 12:50  
traderEvgen:

а можете что - то посоветовать ?

 мне нужно примерно такие выравнивание находить 

 

Для большего понимания, начните с публикации значений скользящей средней на промежутке, который Вы выделили. Для начала можно и вручную переписывать данные из окна "Окно данных":

Получение данных скользящей средней


Опубликуйте в этой ветке несколько последовательных значений. Это будет наглядно.

Alexey Volchanskiy
16218
Alexey Volchanskiy 2016.01.09 16:14  
Karputov Vladimir:

Для большего понимания, начните с публикации значений скользящей средней на промежутке, который Вы выделили. Для начала можно и вручную переписывать данные из окна "Окно данных":


Опубликуйте в этой ветке несколько последовательных значений. Это будет наглядно.

Я в кодобазу выкладывал советник, как раз для этих дел https://www.mql5.com/ru/code/12395
ShowMAParams
ShowMAParams
  • голосов: 8
  • 2015.02.09
  • Alexey Volchanskiy
  • www.mql5.com
Советник предназначен для помощи в разработке стратегий, основанных на анализе индикатора Moving Average.
forexman77
2069
forexman77 2016.01.09 20:42  
traderEvgen:
Как программно узнать что скользящая средняя выровнялась на графике ?

Запрограммировать думаю не сильно сложно. Необходимо для начала определиться, как находить выравнивание.

Вот тут попробовал реализовать в виде индикатора угол наклона скользящей. Если угол после большого значения падает и доходит к примеру до 10, то скользящая начинает выравниваться.

Работает на парах где нет йены,  с йеной вместо 1000.0 нужно умножать на 10.0.

#property indicator_separate_window
#property indicator_buffers 1
#property indicator_color1 Aqua
//--- input parameters
extern int            Period_  =33;//период скользящей
extern int            P        =7;//кол-во баров для поиска угла
//--- buffers
double m[];
double d[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(2);
   SetIndexBuffer(1,m);
   SetIndexBuffer(0,d);
   IndicatorDigits(Digits+1);
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
    int counted_bars=IndicatorCounted(),                      
    limit,iMAX, iMIN;
    double max, min,Katet_B_Max,Katet_A_Max;;
   if(counted_bars>0)
      counted_bars--;
   
   limit=Bars-counted_bars-1;     
   for(int i=limit;i>=0;i--)m[i]=iMA(NULL,0,Period_,0,MODE_EMA,PRICE_CLOSE,i);  
   for(i=limit;i>=0;i--)
   {
   iMAX=ArrayMaximum(m,P,i); 
   iMIN=ArrayMinimum(m,P,i); 
   max=m[iMAX];
   min=m[iMIN];
   Katet_B_Max=MathAbs(iMAX-iMIN);
   Katet_A_Max=MathAbs(m[iMAX]-m[iMIN])*1000.0; 
   if(Katet_B_Max!=0)d[i]=100.0*MathArctan(Katet_A_Max/Katet_B_Max);
   }
   return(0);
  }
//+------------------------------------------------------------------+
Oleg Tsarkov
1286
Oleg Tsarkov 2016.01.11 20:40  
дык производную взять, если пересекает ноль, значит выравнялась)
forexman77
2069
forexman77 2016.01.11 21:01  
Oleg Tsarkov:
дык производную взять, если пересекает ноль, значит выравнялась)
Ноль редко, когда будет. Чуть побольше цифру нужно.
Oleg Tsarkov
1286
Oleg Tsarkov 2016.01.11 21:11  
forexman77:
Ноль редко, когда будет. Чуть побольше цифру нужно.

Я же написал, если пересекает ноль, сверху вниз или снизу вверх, а самого нуля естественно никогда не будет...

т.е. если предыдущее значение выше нуля, а следующее ниже, значит случилось выравнивание) 

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