Для этого нужно сравнить значения индикатора на нескольких барах. А самое трудное - это чётко определится - а что такое "... скользящая средняя выровнялась...". То есть сколько баров сравнивать, какая погрешность выравненности...
а можете что - то посоветовать ?
мне нужно примерно такие выравнивание находить
а можете что - то посоветовать ?
мне нужно примерно такие выравнивание находить
SMA "выравнивается" когда преодолевает цену за период назад. (это из определения SMA)
Чтобы избежать частых срабатываний на флете можно ещё сравнить наклоны краткопериодных SMA на текущей момент и за период назад - если они уверенно разбегаются то это чёткий сигнал пересечения и "дребезг" (скорое пересечение в обратку) маловероятен.
а можете что - то посоветовать ?
мне нужно примерно такие выравнивание находить
Для большего понимания, начните с публикации значений скользящей средней на промежутке, который Вы выделили. Для начала можно и вручную переписывать данные из окна "Окно данных":
Опубликуйте в этой ветке несколько последовательных значений. Это будет наглядно.
Для большего понимания, начните с публикации значений скользящей средней на промежутке, который Вы выделили. Для начала можно и вручную переписывать данные из окна "Окно данных":
Опубликуйте в этой ветке несколько последовательных значений. Это будет наглядно.
- голосов: 8
- 2015.02.09
- Alexey Volchanskiy
- www.mql5.com
Запрограммировать думаю не сильно сложно. Необходимо для начала определиться, как находить выравнивание.
Вот тут попробовал реализовать в виде индикатора угол наклона скользящей. Если угол после большого значения падает и доходит к примеру до 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); } //+------------------------------------------------------------------+
дык производную взять, если пересекает ноль, значит выравнялась)
Ноль редко, когда будет. Чуть побольше цифру нужно.
Я же написал, если пересекает ноль, сверху вниз или снизу вверх, а самого нуля естественно никогда не будет...
т.е. если предыдущее значение выше нуля, а следующее ниже, значит случилось выравнивание)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования