а как должно быть? нужен эталон для сравнения. как часто проявляется? существуют ли обстоятельства, которые можно отнести к причинам? стандартная просьба - присылайте индикатора на проверку
дело в том, что верхняя или нижняя части гистограммы могут произвольно рисоваться полностью до края окна (как на рисунке нижняя половина MACDHistogram - комбинация MACD и OsMA).
глюк проявляется при зменении масштаба либо высоты окна.
код:
глюк проявляется при зменении масштаба либо высоты окна.
код:
//+------------------------------------------------------------------+ //| MACDHistogram.mq4 | //| Copyright © 2005, Nick Bilak, beluck[AT]gmail.com | //| http://metatrader.50webs.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright © 2005, Nick Bilak" #property link "http://metatrader.50webs.com/" #property indicator_separate_window #property indicator_buffers 4 #property indicator_color1 DarkKhaki #property indicator_color2 Teal #property indicator_color3 Lime #property indicator_color4 Red #property indicator_level3 0 //---- input parameters extern int FastLen=12; extern int SlowLen=26; extern int AvgLen=9; //---- buffers double MACDMain[]; double MACDSignal[]; double MACDHistogramUp[]; double MACDHistogramDn[]; //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE); SetIndexBuffer(0,MACDMain); SetIndexStyle(1,DRAW_LINE); SetIndexBuffer(1,MACDSignal); SetIndexStyle(2,DRAW_HISTOGRAM); SetIndexBuffer(2,MACDHistogramUp); SetIndexEmptyValue(2,EMPTY_VALUE); SetIndexStyle(3,DRAW_HISTOGRAM); SetIndexBuffer(3,MACDHistogramDn); SetIndexEmptyValue(3,EMPTY_VALUE); IndicatorShortName("MACDHistogram("+FastLen+","+SlowLen+","+AvgLen+")"); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { double h; int counted_bars=IndicatorCounted(),limit,shift; if (counted_bars<0) return(-1); if (counted_bars>0) counted_bars--; limit=Bars-SlowLen-1; if(counted_bars>SlowLen) limit=Bars-counted_bars-1; MACDHistogramUp[Bars-SlowLen]=-1; for (shift=limit;shift>=0;shift--) { MACDMain[shift]=iMACD(NULL,0,FastLen,SlowLen,AvgLen,PRICE_CLOSE,MODE_MAIN,shift); MACDSignal[shift]=iMACD(NULL,0,FastLen,SlowLen,AvgLen,PRICE_CLOSE,MODE_SIGNAL,shift); if ((MACDMain[shift]-MACDSignal[shift]>MACDHistogramUp[shift+1]) || (MACDMain[shift]-MACDSignal[shift]>MACDHistogramDn[shift+1])) { MACDHistogramUp[shift]=MACDMain[shift]-MACDSignal[shift]; MACDHistogramDn[shift]=EMPTY_VALUE; } else { MACDHistogramDn[shift]=MACDMain[shift]-MACDSignal[shift]; MACDHistogramUp[shift]=EMPTY_VALUE; } } return(0); }
глюк связан с EMPTY_VALUE. когда заменить EMPTY_VALUE на 0, то он не появляется, но тогда раскраска не будет правильной.
Вы упускаете торговые возможности:
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Регистрация
Вход
Вы принимаете политику сайта и условия использования
Если у вас нет учетной записи, зарегистрируйтесь
надо бы пофиксить.