maag:
Подскажите пожалуйста как определить момент пересечения линий графиков в MetaTrader? Ведь оно может произойти между тиками...
Заранее благодарен.
Подскажите пожалуйста как определить момент пересечения линий графиков в MetaTrader? Ведь оно может произойти между тиками...
Заранее благодарен.
Просто. Если вычисленные значения индикаторов в какой то момент равны, то это и есть пересечение.
Пример определения пересечения двух мувингов
//---- возьмём значения мувингов Ma8Current=iMA(NULL,0,ExtPeriod1,0,MODE_EMA,PRICE_CLOSE,0); Ma8Previous=iMA(NULL,0,ExtPeriod1,0,MODE_EMA,PRICE_CLOSE,1); Ma8Previous2=iMA(NULL,0,ExtPeriod1,0,MODE_EMA,PRICE_CLOSE,2); Ma13Current=iMA(NULL,0,ExtPeriod2,0,MODE_EMA,PRICE_CLOSE,0); Ma13Previous=iMA(NULL,0,ExtPeriod2,0,MODE_EMA,PRICE_CLOSE,1); Ma13Previous2=iMA(NULL,0,ExtPeriod2,0,MODE_EMA,PRICE_CLOSE,2); //---- и проверим условие пересечения IsCrossDown=(Ma8Current<Ma13Current && Ma8Previous>=Ma13Previous && Ma8Previous2>Ma13Previous2); IsCrossUp =(Ma8Current>Ma13Current && Ma8Previous<=Ma13Previous && Ma8Previous2<Ma13Previous2);
stringo:
Спасибо! Но этот способ не работает в случае если Tenkan и Kijun в Ишимоку
сошлись и идут некоторое время параллельно или +DM и -DM в ADX пересекаются
по типу xx. Проблема в том, как определить момент пересечения
дискретных графиков...
Пример определения пересечения двух мувингов
//---- возьмём значения мувингов Ma8Current=iMA(NULL,0,ExtPeriod1,0,MODE_EMA,PRICE_CLOSE,0); Ma8Previous=iMA(NULL,0,ExtPeriod1,0,MODE_EMA,PRICE_CLOSE,1); Ma8Previous2=iMA(NULL,0,ExtPeriod1,0,MODE_EMA,PRICE_CLOSE,2); Ma13Current=iMA(NULL,0,ExtPeriod2,0,MODE_EMA,PRICE_CLOSE,0); Ma13Previous=iMA(NULL,0,ExtPeriod2,0,MODE_EMA,PRICE_CLOSE,1); Ma13Previous2=iMA(NULL,0,ExtPeriod2,0,MODE_EMA,PRICE_CLOSE,2); //---- и проверим условие пересечения IsCrossDown=(Ma8Current<Ma13Current && Ma8Previous>=Ma13Previous && Ma8Previous2>Ma13Previous2); IsCrossUp =(Ma8Current>Ma13Current && Ma8Previous<=Ma13Previous && Ma8Previous2<Ma13Previous2);
int IsMACross( int bar, int period1, int period2, int luft = 0 ) { double ma1 = iMA( Symbol(), Period(), period1, 0, MODE_EMA, PRICE_CLOSE, bar ); double ma2 = iMA( Symbol(), Period(), period2, 0, MODE_EMA, PRICE_CLOSE, bar ); int i; if ( NormalizeDouble( ma1 - ma2 - luft*_Point, _Digits ) >= 0.0 ) { for ( i = bar + 1; i < Bars - 1; i ++ ) { ma1 = iMA( Symbol(), Period(), period1, 0, MODE_EMA, PRICE_CLOSE, i ); ma2 = iMA( Symbol(), Period(), period2, 0, MODE_EMA, PRICE_CLOSE, i ); if ( NormalizeDouble( ma1 - ma2 - luft*_Point, _Digits ) >= 0.0 ) { return(0); } if ( NormalizeDouble( ma2 - ma1, _Digits ) >= 0.0 ) { return(1); } } } if ( NormalizeDouble( ma2 - ma1 - luft*_Point, _Digits ) >= 0.0 ) { for ( i = bar + 1; i < Bars - 1; i ++ ) { ma1 = iMA( Symbol(), Period(), period1, 0, MODE_EMA, PRICE_CLOSE, i ); ma2 = iMA( Symbol(), Period(), period2, 0, MODE_EMA, PRICE_CLOSE, i ); if ( NormalizeDouble( ma2 - ma1 - luft*_Point, _Digits ) >= 0.0 ) { return(0); } if ( NormalizeDouble( ma1 - ma2, _Digits ) >= 0.0 ) { return(-1); } } } return(0); }Функция находит пересечение 2-х МА.
Если ма1 пересекает ма2 вверх, возвращает "1", если вниз - "-1".
ЧТо вы ходите вокруг да около? Сделайте индикатор БыстраяМА-Медленная
МА и анализируйте его значение. Заодно с Осмой познакомитесь.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
Заранее благодарен.