NLD_TrendWaves

Author: 2019 © NELODI.com
0 Views
0 Downloads
0 Favorites
NLD_TrendWaves
ÿþ//+---------------------------------------------------+

//|                                NLD_TrendWaves.mq5 |

//|                             http://www.nelodi.com |

//|                     Copyright (c) 2019 NELODI.com |

//+---------------------------------------------------+

#property copyright   "2019 © NELODI.com"

#property link        "http://www.nelodi.com"

#property description "NELODI - Trend Waves"



#include "NLD_MedBuffers.mqh"

#include "NLD_Medians.mqh"



#property indicator_chart_window



#property indicator_applied_price PRICE_TYPICAL



#property indicator_buffers 238

#property indicator_plots   119



#property indicator_color1    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color2    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color3    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color4    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color5    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color6    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color7    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color8    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color9    clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color10   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color11   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color12   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color13   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color14   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color15   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color16   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color17   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color18   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color19   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color20   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color21   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color22   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color23   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color24   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color25   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color26   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color27   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color28   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color29   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color30   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color31   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color32   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color33   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color34   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color35   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color36   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color37   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color38   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color39   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color40   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color41   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color42   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color43   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color44   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color45   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color46   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color47   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color48   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color49   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color50   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color51   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color52   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color53   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color54   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color55   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color56   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color57   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color58   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color59   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color60   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color61   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color62   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color63   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color64   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color65   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color66   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color67   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color68   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color69   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color70   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color71   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color72   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color73   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color74   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color75   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color76   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color77   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color78   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color79   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color80   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color81   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color82   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color83   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color84   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color85   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color86   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color87   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color88   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color89   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color90   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color91   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color92   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color93   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color94   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color95   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color96   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color97   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color98   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color99   clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color100  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color101  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color102  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color103  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color104  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color105  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color106  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color107  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color108  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color109  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color110  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



#property indicator_color111  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color112  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color113  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color114  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color115  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color116  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color117  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color118  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'

#property indicator_color119  clrNONE, C'0,250,150',C'0,250,100',C'0,250,50',C'50,250,0',C'100,250,0',C'150,250,0', C'200,200,0',  C'250,150,0',C'250,100,0',C'250,50,0',C'250,0,50',C'250,0,100',C'250,0,150'



//--- input parametrs

input int     InpPeriod=1;        // Period: Start {1}

input int     InpStep=1;          // Period: Growth {1}

input int     InpMult=1;          // Period: Inflation {1}

input int     InpWaveLines=30;    // Period: Length [1-1000] {30}

input int     InpLHACDens=10;     // Period: Density [1-100] {10}

input int     InpBands=10;        // Period: Standard Deviation {10}

input double  InpShift=0;         // Period: Phase Shift% [0-100] {0}

input int     InpPast=500;        // Period: History Range {60}

input int     InpFuture=0;        // Period: Future Range {0}

input int     InpRealTime=0;      // Period: Tick Updates {0}



input bool    InpBrkSep=false;    // Predict: Separate Future? {false}



input int     InpCalcRange=50;    // Predict: Calc Range% [0-100] {50}

input int     InpDataRange=50;    // Predict: Draw Range% [0-100] {50}

input int     InpCalcC=100;       // Predict: Present Power% [0-100] {100}

input int     InpCalcF=0;         // Predict: Future Power% [0-100] {0}

input int     InpCalcP=0;         // Predict: Past Power% [0-100] {0}

input int     InpPredShift=0;     // Predict: Period Shift% [0-100] {0}

input int     InpPredFrom=0;      // Predict: Period Skip% [0-100] {0}



input bool    InpSigN=false;       // Signal: Draw Now? {false}

input bool    InpSigU=true;       // Signal: Draw Up? {true}

input bool    InpSigD=true;       // Signal: Draw Down? {true}

input bool    InpSigC=true;       // Signal: Draw Center? {true}

input bool    InpSigA=true;       // Signal: Draw Average? {true}



input bool    InpSigSU=true;      // Signal += Slow Wave Up {true}

input bool    InpSigSD=true;      // Signal += Slow Wave Down {true}

input bool    InpSigSA=true;      // Signal += Slow Wave Average {true}

input bool    InpSigMU=true;      // Signal += Median Wave Up {true}

input bool    InpSigMD=true;      // Signal += Median Wave Down {true}

input bool    InpSigMA=true;      // Signal += Median Wave Average {true}

input bool    InpSigFU=true;      // Signal += Fast Wave Up {true}

input bool    InpSigFD=true;      // Signal += Fast Wave Down {true}

input bool    InpSigFA=true;      // Signal += Fast Wave Average {true}

input bool    InpSigLo=false;     // Signal += Wave Lows {false}

input bool    InpSigHi=false;     // Signal += Wave Highs {false}

input bool    InpSigAv=false;     // Signal += Wave Averages {false}

input bool    InpSigCn=false;     // Signal += Wave Centers {false}

input bool    InpSigUp=false;     // Signal += Wave Deviations Up {false}

input bool    InpSigDn=false;     // Signal += Wave Deviations Down {false}



input int     InpSigNWidth=1;     // Signal: Width Now {1}

input int     InpSigUWidth=2;     // Signal: Width Up {2}

input int     InpSigDWidth=2;     // Signal: Width Down {2}

input int     InpSigCWidth=1;     // Signal: Width Center {1}

input int     InpSigAWidth=2;     // Signal: Width Average {2}

input int     InpSigNColors=6;    // Signal: Colors Now [0..5] {6}

input int     InpSigUColors=6;    // Signal: Colors Up [0..5] {6}

input int     InpSigDColors=6;    // Signal: Colors Down [0..5] {6}

input int     InpSigCColors=1;    // Signal: Colors Center [0..5] {1}

input int     InpSigAColors=4;    // Signal: Colors Average [0..5] {4}

input int     InpSigNIcon=119;    // Signal: Icon Now [0=Line;33-255] {119}

input int     InpSigUIcon=0;      // Signal: Icon Up [0=Line;33-255] {0}

input int     InpSigDIcon=0;      // Signal: Icon Down [0=Line;33-255] {0}

input int     InpSigCIcon=0;      // Signal: Icon Center [0=Line;33-255] {0}

input int     InpSigAIcon=0;      // Signal: Icon Average [0=Line;33-255] {0}

input int     InpFilXX=0;         // Signal: Filter [0-4] {0}



input bool    InpUX=true;         // Deviation: Draw Up? {true}

input bool    InpDX=true;         // Deviation: Draw Down? {true}

input int     InpXUWidth=2;       // Deviation: Width Up {2}

input int     InpXDWidth=2;       // Deviation: Width Down {2}

input int     InpXUColors=3;      // Deviation: Colors Up [0..5] {3}

input int     InpXDColors=3;      // Deviation: Colors Down [0..5] {3}

input int     InpXUIcon=0;        // Deviation: Icon Up [0=Line;33-255] {0}

input int     InpXDIcon=0;        // Deviation: Icon Down [0=Line;33-255] {0}



input bool    InpLX=true;         // LHAC: Draw Lowest? {true}

input bool    InpHX=true;         // LHAC: Draw Highest? {true}

input bool    InpAX=true;         // LHAC: Draw Average? {true}

input bool    InpCX=true;         // LHAC: Draw Center? {true}

input int     InpXLWidth=2;       // LHAC: Width Lowest {2}

input int     InpXHWidth=2;       // LHAC: Width Highest {2}

input int     InpXAWidth=2;       // LHAC: Width Average {2}

input int     InpXCWidth=2;       // LHAC: Width Center {2}

input int     InpXLColors=1;      // LHAC: Colors Lowest [0..5] {1}

input int     InpXHColors=1;      // LHAC: Colors Highest [0..5] {1}

input int     InpXAColors=1;      // LHAC: Colors Average [0..5] {1}

input int     InpXCColors=0;      // LHAC: Colors Center [0..5] {0}

input int     InpXLIcon=0;        // LHAC: Icon Lowest [0=Line;33-255] {0}

input int     InpXHIcon=0;        // LHAC: Icon Highest [0=Line;33-255] {0}

input int     InpXAIcon=0;        // LHAC: Icon Average [0=Line;33-255] {0}

input int     InpXCIcon=0;        // LHAC: Icon Center [0=Line;33-255] {0}

input int     InpFilSX=0;         // LHAC: Filter Slow [0-4] {0}

input int     InpFilMX=0;         // LHAC: Filter Median [0-4] {0}

input int     InpFilFX=0;         // LHAC: Filter Fast [0-4] {0}



input bool    InpL=true;          // Waves: Draw Lows? {true}

input bool    InpH=true;          // Waves: Draw Highs? {true}

input bool    InpA=false;         // Waves: Draw Averages? {false}

input bool    InpC=false;         // Waves: Draw Centers? {false}

input bool    InpU=false;         // Waves: Draw Deviations Up? {false}

input bool    InpD=false;         // Waves: Draw Deviations Down? {false}

input bool    InpF=false;         // Waves: Draw Fast Details {false}

input bool    InpM=false;         // Waves: Draw Median Details {false}

input bool    InpS=false;         // Waves: Draw Slow Details {false}

input int     InpLWidth=1;        // Waves: Width Lows {1}

input int     InpHWidth=1;        // Waves: Width Highs {1}

input int     InpAWidth=1;        // Waves: Width Averages {1}

input int     InpCWidth=1;        // Waves: Width Centers {1}

input int     InpUWidth=1;        // Waves: Width Deviations Up {1}

input int     InpDWidth=1;        // Waves: Width Deviations Down {1}

input int     InpMWidth=1;        // Waves: Width FMS Details {1}

input int     InpFColors=0;       // Waves: Colors Fast Details [0..5] {0}

input int     InpMColors=0;       // Waves: Colors Median Details [0..5] {0}

input int     InpSColors=0;       // Waves: Colors Slow Details [0..5] {0}

input int     InpLIcon=158;       // Waves: Icon Lows [0=Line;33-255] {158}

input int     InpHIcon=158;       // Waves: Icon Highs [0=Line;33-255] {158}

input int     InpAIcon=0;         // Waves: Icon Averages [0=Line;33-255] {0}

input int     InpCIcon=0;         // Waves: Icon Centers [0=Line;33-255] {0}

input int     InpUIcon=0;         // Waves: Icon Deviations Up [0=Line;33-255] {0}

input int     InpDIcon=0;         // Waves: Icon Deviations Down [0=Line;33-255] {0}

input int     InpMIcon=0;         // Waves: Icon Details [0=Line;33-255] {0}

input int     InpFilS=4;          // Waves: Filter Slow [0-4] {4}

input int     InpFilM=4;          // Waves: Filter Median [0-4] {4}

input int     InpFilF=4;          // Waves: Filter Fast [0-4] {4}



//--- global variables

int           ExtPeriod,ExtStep,ExtStepInc;

int           ExtPlotBegin=0,ExtPlotCnt=0;

bool          ExtReady=false;



int           ExtPast,ExtNeed,ExtBands;



#define MAX_LHAC_LEN 10000

#define MAX_DET_LEN 1000

#define NO_VALUE 0



int WAVE_LEN=10;

int LHAC_LEN=10;

int LHAC_MUL=1;



int ExtPSize[MAX_DET_LEN+2];



double nowM[MAX_DET_LEN],prevM[MAX_DET_LEN],oldM[MAX_DET_LEN],dirM[MAX_DET_LEN];

double nowT[MAX_DET_LEN],prevT[MAX_DET_LEN],oldT[MAX_DET_LEN],dirT[MAX_DET_LEN];

double nowB[MAX_DET_LEN],prevB[MAX_DET_LEN],oldB[MAX_DET_LEN],dirB[MAX_DET_LEN];



double nM[],nT[],nB[];

double pM[],pT[],pB[];

double oM[],oT[],oB[];

double dM[],dT[],dB[];



double aM,aT,aB,aX,vM,vT,vB,vX;

int cT,cM,cB,cX;



double nowL[4],prevL[4],oldL[4],dirL[4],dirHL[4];

double nowH[4],prevH[4],oldH[4],dirH[4];

double nowU[4],prevU[4],oldU[4],dirU[4],dirUD[4];

double nowD[4],prevD[4],oldD[4],dirD[4];

double nowA[4],prevA[4],oldA[4],dirA[4],dirAC[4];

double nowC[4],prevC[4],oldC[4],dirC[4];



int nowN[4],nowE[4];



//---- indicator buffer

double        ExtMColorBufferAf[];

double        ExtMColorBufferHf[];

double        ExtMColorBufferLf[];

double        ExtMColorBufferCf[];

double        ExtMColorBufferUf[];

double        ExtMColorBufferDf[];

double        ExtMLBufferAf[];

double        ExtMLBufferHf[];

double        ExtMLBufferLf[];

double        ExtMLBufferCf[];

double        ExtMLBufferUf[];

double        ExtMLBufferDf[];



double        ExtMColorBufferAm[];

double        ExtMColorBufferHm[];

double        ExtMColorBufferLm[];

double        ExtMColorBufferCm[];

double        ExtMColorBufferUm[];

double        ExtMColorBufferDm[];

double        ExtMLBufferAm[];

double        ExtMLBufferHm[];

double        ExtMLBufferLm[];

double        ExtMLBufferCm[];

double        ExtMLBufferUm[];

double        ExtMLBufferDm[];



double        ExtMColorBufferAs[];

double        ExtMColorBufferHs[];

double        ExtMColorBufferLs[];

double        ExtMColorBufferCs[];

double        ExtMColorBufferUs[];

double        ExtMColorBufferDs[];

double        ExtMLBufferAs[];

double        ExtMLBufferHs[];

double        ExtMLBufferLs[];

double        ExtMLBufferCs[];

double        ExtMLBufferUs[];

double        ExtMLBufferDs[];



double        ExtMColorBufferAX[];

double        ExtMColorBufferHX[];

double        ExtMColorBufferLX[];

double        ExtMColorBufferCX[];

double        ExtMColorBufferUX[];

double        ExtMColorBufferDX[];

double        ExtMLBufferAX[];

double        ExtMLBufferHX[];

double        ExtMLBufferLX[];

double        ExtMLBufferCX[];

double        ExtMLBufferUX[];

double        ExtMLBufferDX[];



double        ExtSigUPrice[];

double        ExtSigUColor[];

double        ExtSigDPrice[];

double        ExtSigDColor[];

double        ExtSigCPrice[];

double        ExtSigCColor[];

double        ExtSigAPrice[];

double        ExtSigAColor[];

double        ExtSigNPrice[];

double        ExtSigNColor[];

//+------------------------------------------------------------------+

void OnInit()

  {

   MyArrClear(ExtShift,0);



   WAVE_LEN=InpWaveLines; if(WAVE_LEN<1) WAVE_LEN=1; if(WAVE_LEN>MAX_DET_LEN) WAVE_LEN=MAX_DET_LEN;

   LHAC_LEN=InpLHACDens*InpWaveLines; if(LHAC_LEN<1) LHAC_LEN=1; if(LHAC_LEN>MAX_LHAC_LEN) LHAC_LEN=MAX_LHAC_LEN;

   LHAC_MUL=LHAC_LEN/WAVE_LEN;



   ExtPlotBegin=0;

   ExtPeriod=(InpPeriod>0?InpPeriod:1);

   ExtStep=(InpStep>0?InpStep:1);

   ExtStepInc=(InpMult>0?InpMult:0);

   ExtBands=(InpBands>0?InpBands:1);



   ExtReady=false;

   int j=0,period=ExtPeriod,nextstep=ExtStep;

   while(j<=WAVE_LEN)

     {

      ExtPSize[j]=period;

      ExtShift[j]=(int)MathRound(period*InpShift/100);

      j++;

      period+=nextstep;

      nextstep+=ExtStepInc;

     }



   ExtNeed=(WAVE_LEN-1)-InpDataRange*(WAVE_LEN-1)/100; if(ExtNeed<0) ExtNeed=0; else if(ExtNeed>=WAVE_LEN) ExtNeed=WAVE_LEN-1;

   ExtPSize[WAVE_LEN+1]=ExtPSize[(WAVE_LEN-1)-ExtNeed];

   ExtShift[WAVE_LEN+1]=ExtShift[(WAVE_LEN-1)-ExtNeed];



   period=ExtPSize[WAVE_LEN-1];

   nextstep=ExtShift[WAVE_LEN-1];



   ExtPast=(InpPast>0?InpPast:0); if(ExtPast<0) ExtPast=0;

   ExtShiftP=InpFuture; if(ExtShiftP>period-1) ExtShiftP=period-1; if(ExtShiftP<0) ExtShiftP=0;



   MyMedians2Init(InpCalcC,InpCalcP,InpCalcF,InpCalcRange,InpPredShift,InpPredFrom);



   MyPrepBuffers();



   ArrayResize(nM,LHAC_LEN); ArrayResize(nT,LHAC_LEN); ArrayResize(nB,LHAC_LEN);

   ArrayResize(pM,LHAC_LEN); ArrayResize(pT,LHAC_LEN); ArrayResize(pB,LHAC_LEN);

   ArrayResize(oM,LHAC_LEN); ArrayResize(oT,LHAC_LEN); ArrayResize(oB,LHAC_LEN);

   ArrayResize(dM,LHAC_LEN); ArrayResize(dT,LHAC_LEN); ArrayResize(dB,LHAC_LEN);



   IndicatorSetString(INDICATOR_SHORTNAME,"TrendWaves");

   IndicatorSetInteger(INDICATOR_DIGITS,_Digits+1);



   Print("Init(L",WAVE_LEN," D",LHAC_MUL," P",ExtPeriod," S",ExtStep," I",ExtStepInc,

         ") [",ExtPSize[0],"-",ExtPSize[WAVE_LEN-1],"] SH=",ExtShiftP,

         " NS=",ExtPSize[WAVE_LEN]," NG=",ExtPSize[WAVE_LEN]-ExtPSize[WAVE_LEN-1]);

  }

//+------------------------------------------------------------------+

void OnDeinit(const int reason)

  {

   Comment("");



   MyClearBuffers();



   ArrayResize(nM,0); ArrayResize(nT,0); ArrayResize(nB,0); 

   ArrayResize(pM,0); ArrayResize(pT,0); ArrayResize(pB,0);   

   ArrayResize(oM,0); ArrayResize(oT,0); ArrayResize(oB,0);   

   ArrayResize(dM,0); ArrayResize(dT,0); ArrayResize(dB,0);

   

   Print("DeInit(",ExtPeriod,"+",ExtStep,"+",ExtStepInc,") [",

         ExtPSize[0],"-",ExtPSize[WAVE_LEN-1],"] SH=",ExtShiftP);

  }

//+------------------------------------------------------------------+

int OnCalculate(const int rates_total,

                const int prev_calculated,

                const int begin,

                const double &price[])

  {

   uint tc=GetTickCount();



   int pos;



   if(ExtPlotBegin!=begin)

     {

      ExtPlotBegin=begin;

      for(int i=0;i<ExtPlotCnt;i++) PlotIndexSetInteger(i,PLOT_DRAW_BEGIN,ExtPlotBegin);

     }



   if(rates_total<5) return(0);



   if(prev_calculated>0 && prev_calculated<=rates_total)

     {

      pos=prev_calculated-5; if(pos<0) pos=0;

     }

   else

     {

      ExtReady=false;

      pos=rates_total-ExtPast-5; if(pos<0) pos=0;



      Print("Calc(L",WAVE_LEN," D",LHAC_MUL," P",ExtPeriod," S",ExtStep," I",ExtStepInc,

            ") [",ExtPSize[0],"-",ExtPSize[WAVE_LEN-1],"] SH=",ExtShiftP,

            " Size=",rates_total+ExtShiftP-pos);



      MyClearBuffers();

     }



   MyArrClear(nowM,-1); MyArrClear(prevM,-1); MyArrClear(oldM,-1); MyArrClear(dirM,0);

   MyArrClear(nowT,-1); MyArrClear(prevT,-1); MyArrClear(oldT,-1); MyArrClear(dirT,0);

   MyArrClear(nowB,-1); MyArrClear(prevB,-1); MyArrClear(oldB,-1); MyArrClear(dirB,0);



   MyArrClear(nM,-1); MyArrClear(nT,-1); MyArrClear(nB,-1);

   MyArrClear(pM,-1); MyArrClear(pT,-1); MyArrClear(pB,-1);

   MyArrClear(oM,-1); MyArrClear(oT,-1); MyArrClear(oB,-1);

   MyArrClear(dM,0);  MyArrClear(dT,0);  MyArrClear(dB,0);



   MyArrClear(nowN,0);

   MyArrClear(nowL,-1); MyArrClear(prevL,-1); MyArrClear(oldL,-1); MyArrClear(dirL,0);

   MyArrClear(nowH,-1); MyArrClear(prevH,-1); MyArrClear(oldH,-1); MyArrClear(dirH,0); MyArrClear(dirHL,0);

   MyArrClear(nowU,-1); MyArrClear(prevU,-1); MyArrClear(oldU,-1); MyArrClear(dirU,0);

   MyArrClear(nowD,-1); MyArrClear(prevD,-1); MyArrClear(oldD,-1); MyArrClear(dirD,0); MyArrClear(dirUD,0);

   MyArrClear(nowA,-1); MyArrClear(prevA,-1); MyArrClear(oldA,-1); MyArrClear(dirA,0);

   MyArrClear(nowC,-1); MyArrClear(prevC,-1); MyArrClear(oldC,-1); MyArrClear(dirC,0);



   int lastI=rates_total-1,lastP=rates_total,pos0=pos;

   int cnt1=0,cnt2=0,cntH,cntL,cntU,cntD,cntA,cntC;



   int i,j,k,l,z,es,ep,ls,lp;

   double rc,rv,sigUC,sigUV,sigDC,sigDV,sigCC,sigCV,sigAC,sigAV;



   int LHAC_MUL2=LHAC_MUL,LHAC_LEN2=LHAC_LEN;



   if(prev_calculated<rates_total)

     {

      lastP+=ExtShiftP;

      pos-=ExtShift[WAVE_LEN+1]-ExtShift[0];

     }

   else if(InpRealTime>0)

     {

      int shpl=ExtShift[WAVE_LEN+1]-ExtShift[0];

      if(InpRealTime>shpl)

        {

         if(ExtShiftP+shpl>InpRealTime) lastP+=InpRealTime-shpl; else lastP+=ExtShiftP;

        }

      pos-=shpl;

     }

   if(pos<0) pos=0;



   bool haveMFS=false,haveSig=false;



   bool InpSig=InpSigU || InpSigD || InpSigC || InpSigN;

   bool InpZ=(InpA || InpAX) || (InpH || InpHX) || (InpL || InpLX) || (InpC || InpCX) || InpSig;

   bool InpX=(InpM || InpF || InpS) && (InpMWidth>0);

   bool InpFil=(InpFilMX>0 || InpFilSX>0 || InpFilFX>0) || InpSig;

   bool InpFil3=((InpFilMX  &3)>0 || (InpFilSX  &3)>0 || (InpFilFX  &3)>0) || InpSig;



   for(i=pos;i<lastP && !IsStopped();i++)

     {

      k=i-ExtShiftP;



      MyArrClear(nowT,-1);

      MyArrClear(nowM,-1);

      MyArrClear(nowB,-1);



      haveMFS=InpX && (i>=pos0) && (ExtShiftP>0 || i<=lastI);



      if(haveMFS)

        {

         //-- Calculate Top/Median/Bottom for Wave Lines

         for(j=0;j<WAVE_LEN;j++) {MyMedians2(i,ExtPSize[j],price,nowT[j],nowB[j],nowM[j],lastI);}

         //--- Calculate Wave Line Colors

         if(cnt1>=2) for(j=0;j<WAVE_LEN;j++)

           {

            if(nowM[j]>=0 && prevM[j]>=0 && oldM[j]>=0) MyDirP(nowM[j],prevM[j],oldM[j],dirM[j]);

            if(nowT[j]>=0 && prevT[j]>=0 && oldT[j]>=0) MyDirP(nowT[j],prevT[j],oldT[j],dirT[j]);

            if(nowB[j]>=0 && prevB[j]>=0 && oldB[j]>=0) MyDirP(nowB[j],prevB[j],oldB[j],dirB[j]);

           }

         //--- Calculate Wave Line Averages

         aM=0;aB=0;aT=0;aX=0;

         vM=0;vB=0;vT=0;vX=0;

         cM=0;cB=0;cT=0;cX=0;

         if(cnt1>=4)

           {

            rc=-1;rv=-1;

            for(j=0;j<WAVE_LEN;j++)

              {

               if(nowM[j]>=0) {cM++; aM+=dirM[j]; vM+=nowM[j];}

               if(nowB[j]>=0) {cB++; aB+=dirB[j]; vB+=nowB[j];}

               if(nowT[j]>=0) {cT++; aT+=dirT[j]; vT+=nowT[j];}

              }

            if(cM>0) {aX+=aM; vX+=vM; aM/=cM; vM/=cM; }

            if(cT>0) {aX+=aT; vX+=vT; aT/=cT; vT/=cT; }

            if(cB>0) {aX+=aB; vX+=vB; aB/=cB; vB/=cB; }

            cX=cM+cT+cB; if(cX>0) { aX/=cX; vX/=cX; }

           }

         //--- Paint Wave Lines

         if(cnt1>=4 && k>=0 && k<=lastI)

           {

            if(InpM) for(j=0;j<MathMin(WAVE_LEN,MAX_WAVE_LEN);j++) { if(MyMCalc(j,rc,rv)) MyMBuff(j,k,rv,MySetColor(rc)); else MyMBuff(j,k,NO_VALUE,NO_COLOR); }

            if(InpS) for(j=0;j<MathMin(WAVE_LEN,MAX_WAVE_LEN);j++) { if(MySCalc(j,rc,rv)) MySBuff(j,k,rv,MySetColor(rc)); else MySBuff(j,k,NO_VALUE,NO_COLOR); }

            if(InpF) for(j=0;j<MathMin(WAVE_LEN,MAX_WAVE_LEN);j++) { if(MyFCalc(j,rc,rv)) MyFBuff(j,k,rv,MySetColor(rc)); else MyFBuff(j,k,NO_VALUE,NO_COLOR); }

           }

         //-- Store Prev & Old values to calculate Wave Line Color

         cnt1++;

         for(j=0;j<WAVE_LEN;j++)

           {

            if(prevM[j]>=0)oldM[j]=prevM[j]; if(nowM[j]>=0)prevM[j]=nowM[j];

            if(prevT[j]>=0)oldT[j]=prevT[j]; if(nowT[j]>=0)prevT[j]=nowT[j];

            if(prevB[j]>=0)oldB[j]=prevB[j]; if(nowB[j]>=0)prevB[j]=nowB[j];

           }

        }



      MyArrClear(nT,-1);

      MyArrClear(nM,-1);

      MyArrClear(nB,-1);



      MyArrClear(nowN,0);

      MyArrClear(nowA,0);

      MyArrClear(nowL,-1);

      MyArrClear(nowH,-1);

      MyArrClear(nowC,-1);

      MyArrClear(nowU,-1);

      MyArrClear(nowD,-1);



      if(InpZ)

        {

         //-- Calculate Top/Median/Bottom for High/Low/Average/Center Lines

         l=0;

         LHAC_MUL2=1;

         for(j=0;j<WAVE_LEN;j++)

           {

            if(haveMFS && ExtShift[j]==ExtShift[WAVE_LEN+1] && nowT[j]>=0 && nowB[j]>=0 && nowM[j]>=0)

              { nT[l]=nowT[j]; nB[l]=nowB[j]; nM[l]=nowM[j]; }

            else

              { MyMedians2(i+ExtShift[WAVE_LEN+1]-ExtShift[j],ExtPSize[j],price,nT[l],nB[l],nM[l],lastI); }

            l++; z=1; ls=0; lp=0;

            while(z<LHAC_MUL)

              {

               ep=(ExtPSize[j+1]-ExtPSize[j])*z/(LHAC_MUL+1);

               es=(ExtShift[j+1]-ExtShift[j])*z/(LHAC_MUL+1);

               if(es!=ls || ep!=lp)

                 { 

                 if (z>LHAC_MUL2) LHAC_MUL2=z;

                 MyMedians2(i+ExtShift[WAVE_LEN+1]-ExtShift[j]-es,ExtPSize[j]+ep,price,nT[l],nB[l],nM[l],lastI); 

                 l++; ls=es; lp=ep;

                 }

              z++;

              }

           }

         LHAC_LEN2=l;

         //--- Calculate Wave Line Averages



         nowE[1]=ExtNeed*LHAC_LEN2/LHAC_LEN;

         nowE[2]=nowE[1];

         nowE[3]=nowE[2];

         nowE[0]=nowE[1]+nowE[2]+nowE[3];



         aM=0;aB=0;aT=0;aX=0;

         vM=0;vB=0;vT=0;vX=0;

         cM=0;cB=0;cT=0;cX=0;

         if(InpFil3)

           {

            if(cnt2>=2)

              {

               for(j=0;j<LHAC_LEN2;j++)

                 {

                  if(nM[j]>=0 && pM[j]>=0 && oM[j]>=0) MyDirP(nM[j],pM[j],oM[j],dM[j]);

                  if(nT[j]>=0 && pT[j]>=0 && oT[j]>=0) MyDirP(nT[j],pT[j],oT[j],dT[j]);

                  if(nB[j]>=0 && pB[j]>=0 && oB[j]>=0) MyDirP(nB[j],pB[j],oB[j],dB[j]);

                 }

              }

            if(cnt2>=4)

              {

               rc=-1;rv=-1;

               for(j=0;j<LHAC_LEN2;j++)

                 {

                  if(nM[j]>=0) {cM++; aM+=dM[j]; vM+=nM[j];}

                  if(nB[j]>=0) {cB++; aB+=dB[j]; vB+=nB[j];}

                  if(nT[j]>=0) {cT++; aT+=dT[j]; vT+=nT[j];}

                 }

               if(cM>0) {aX+=aM; vX+=vM; aM/=cM; vM/=cM; }

               if(cT>0) {aX+=aT; vX+=vT; aT/=cT; vT/=cT; }

               if(cB>0) {aX+=aB; vX+=vB; aB/=cB; vB/=cB; }

               cX=cM+cT+cB; if(cX>0) { aX/=cX; vX/=cX; }

              }

           }

         //-- Find Low/High Lines & sum-up for Average Lines

         for(j=0;j<LHAC_LEN2;j++)

           {

            MySCalc2(j,nowN[1],nowA[1],nowH[1],nowL[1],nowN[0],nowA[0],nowH[0],nowL[0]);

            MyMCalc2(j,nowN[2],nowA[2],nowH[2],nowL[2],nowN[0],nowA[0],nowH[0],nowL[0]);

            MyFCalc2(j,nowN[3],nowA[3],nowH[3],nowL[3],nowN[0],nowA[0],nowH[0],nowL[0]);

           }

         //--- Calculate Average, Center, Higher and Lower Bounds

         l=i+ExtShift[WAVE_LEN+1];

         cntH=0;cntL=0;cntU=0;cntD=0;cntA=0;cntC=0;

         nowH[0]=0;nowL[0]=0;nowU[0]=0;nowD[0]=0;nowA[0]=0;nowC[0]=0;

         for(j=1;j<4;j++)

           {

            nowU[j]=-1; nowD[j]=-1; nowC[j]=-1;

            if(nowN[j]>nowE[j] && nowH[j]>=0 && nowL[j]>=0)

              {

               nowC[j]=(nowH[j]+nowL[j])/2;

               cntH++;nowH[0]+=nowH[j];

               cntL++;nowL[0]+=nowL[j];

               cntC++;nowC[0]+=nowC[j];

               if(nowA[j]>=0)

                 {

                  nowA[j]/=nowN[j];

                  cntA++;nowA[0]+=nowA[j];

                  if(l>0 && l<lastI+ExtBands)

                    {

                     rv=(nowH[j]+nowA[j])/2; rc=MyStdDev(l,price,rv,lastI); nowD[j]=rv-rc;

                     rv=(nowL[j]+nowA[j])/2; rc=MyStdDev(l,price,rv,lastI); nowU[j]=rv+rc;

                     cntD++;nowD[0]+=nowD[j];

                     cntU++;nowU[0]+=nowU[j];

                    }

                 }

              }

            else

              { nowA[j]=-1; }

           }

         if(cntH>0) nowH[0]/=cntH; else nowH[0]=-1;

         if(cntL>0) nowL[0]/=cntL; else nowL[0]=-1;

         if(cntC>0) nowC[0]/=cntC; else nowC[0]=-1;

         if(cntA>0) nowA[0]/=cntA; else nowA[0]=-1;

         if(nowH[0]>=0 && nowL[0]>=0 && nowA[0]>=0 && l>0 && l<lastI+ExtBands)

           {

            rv=(nowH[0]+nowA[0])/2; rc=MyStdDev(l,price,rv,lastI); nowD[0]=rv-rc;

            rv=(nowL[0]+nowA[0])/2; rc=MyStdDev(l,price,rv,lastI); nowU[0]=rv+rc;

           }

         else

           {

            if(cntD>0) nowD[0]/=cntD; else nowD[0]=-1;

            if(cntU>0) nowU[0]/=cntU; else nowU[0]=-1;

           }

         //--- Calculate LHAC Colors

         if(cnt2>=2)

           {

            for(j=0;j<4;j++)

              {

               if(nowA[j]>=0 && prevA[j]>=0 && oldA[j]>=0) MyDirP(nowA[j],prevA[j],oldA[j],dirA[j]);

               if(nowC[j]>=0 && prevC[j]>=0 && oldC[j]>=0) MyDirP(nowC[j],prevC[j],oldC[j],dirC[j]);

               if(nowL[j]>=0 && prevL[j]>=0 && oldL[j]>=0) MyDirP(nowL[j],prevL[j],oldL[j],dirL[j]);

               if(nowH[j]>=0 && prevH[j]>=0 && oldH[j]>=0) MyDirP(nowH[j],prevH[j],oldH[j],dirH[j]);

               if(nowU[j]>=0 && prevU[j]>=0 && oldU[j]>=0) MyDirP(nowU[j],prevU[j],oldU[j],dirU[j]);

               if(nowD[j]>=0 && prevD[j]>=0 && oldD[j]>=0) MyDirP(nowD[j],prevD[j],oldD[j],dirD[j]);

              }

           }

         if(cnt2>=4 && k>=0 && k<=lastI)

           {

            bool valid=!InpBrkSep || l<=lastI || l>lastI+1;

            for(j=0;j<4;j++)

              {

               if(nowU[j]>=0 && nowD[j]>=0) dirUD[j]=(dirU[j]+dirD[j])/2; else dirUD[j]=0;

               if(nowH[j]>=0 && nowL[j]>=0) dirHL[j]=(dirH[j]+dirL[j])/2; else dirHL[j]=0;

               if(nowA[j]>=0 && nowC[j]>=0) dirAC[j]=(dirA[j]+dirC[j])/2; else dirAC[j]=0;

              }

            if(InpH)

              {

               if(valid && nowN[1]>nowE[1] && nowH[1]>=0) {ExtMLBufferHs[k]=nowH[1]; ExtMColorBufferHs[k]=MySetColor(dirH[1]);} else {ExtMLBufferHs[k]=NO_VALUE; ExtMColorBufferHs[k]=NO_COLOR;}

               if(valid && nowN[2]>nowE[2] && nowH[2]>=0) {ExtMLBufferHm[k]=nowH[2]; ExtMColorBufferHm[k]=MySetColor(dirH[2]);} else {ExtMLBufferHm[k]=NO_VALUE; ExtMColorBufferHm[k]=NO_COLOR;}

               if(valid && nowN[3]>nowE[3] && nowH[3]>=0) {ExtMLBufferHf[k]=nowH[3]; ExtMColorBufferHf[k]=MySetColor(dirH[3]);} else {ExtMLBufferHf[k]=NO_VALUE; ExtMColorBufferHf[k]=NO_COLOR;}

              }

            if(InpHX)

              {

               if(valid && nowH[0]>=0) {ExtMLBufferHX[k]=nowH[0]; ExtMColorBufferHX[k]=MySetColor(dirH[0]);} else {ExtMLBufferHX[k]=NO_VALUE; ExtMColorBufferHX[k]=NO_COLOR;}

              }

            if(InpL)

              {

               if(valid && nowN[1]>nowE[1] && nowL[1]>=0) {ExtMLBufferLs[k]=nowL[1]; ExtMColorBufferLs[k]=MySetColor(dirL[1]);} else {ExtMLBufferLs[k]=NO_VALUE; ExtMColorBufferLs[k]=NO_COLOR;}

               if(valid && nowN[2]>nowE[2] && nowL[2]>=0) {ExtMLBufferLm[k]=nowL[2]; ExtMColorBufferLm[k]=MySetColor(dirL[2]);} else {ExtMLBufferLm[k]=NO_VALUE; ExtMColorBufferLm[k]=NO_COLOR;}

               if(valid && nowN[3]>nowE[3] && nowL[3]>=0) {ExtMLBufferLf[k]=nowL[3]; ExtMColorBufferLf[k]=MySetColor(dirL[3]);} else {ExtMLBufferLf[k]=NO_VALUE; ExtMColorBufferLf[k]=NO_COLOR;}

              }

            if(InpLX)

              {

               if(valid && nowL[0]>=0) {ExtMLBufferLX[k]=nowL[0]; ExtMColorBufferLX[k]=MySetColor(dirL[0]);} else {ExtMLBufferLX[k]=NO_VALUE; ExtMColorBufferLX[k]=NO_COLOR;}

              }

            if(InpC)

              {

               if(valid && nowN[1]>nowE[1] && nowC[1]>=0) {ExtMLBufferCs[k]=nowC[1]; ExtMColorBufferCs[k]=MySetColor(dirC[1]);} else {ExtMLBufferCs[k]=NO_VALUE; ExtMColorBufferCs[k]=NO_COLOR;}

               if(valid && nowN[2]>nowE[2] && nowC[2]>=0) {ExtMLBufferCm[k]=nowC[2]; ExtMColorBufferCm[k]=MySetColor(dirC[2]);} else {ExtMLBufferCm[k]=NO_VALUE; ExtMColorBufferCm[k]=NO_COLOR;}

               if(valid && nowN[3]>nowE[3] && nowC[3]>=0) {ExtMLBufferCf[k]=nowC[3]; ExtMColorBufferCf[k]=MySetColor(dirC[3]);} else {ExtMLBufferCf[k]=NO_VALUE; ExtMColorBufferCf[k]=NO_COLOR;}

              }

            if(InpCX)

              {

               if(valid && nowC[0]>=0) {ExtMLBufferCX[k]=nowC[0]; ExtMColorBufferCX[k]=MySetColor(dirC[0]);} else {ExtMLBufferCX[k]=NO_VALUE; ExtMColorBufferCX[k]=NO_COLOR;}

              }

            if(InpA)

              {

               if(valid && nowN[1]>nowE[1] && nowA[1]>=0) {ExtMLBufferAs[k]=nowA[1]; ExtMColorBufferAs[k]=MySetColor(dirA[1]);} else {ExtMLBufferAs[k]=NO_VALUE; ExtMColorBufferAs[k]=NO_COLOR;}

               if(valid && nowN[2]>nowE[2] && nowA[2]>=0) {ExtMLBufferAm[k]=nowA[2]; ExtMColorBufferAm[k]=MySetColor(dirA[2]);} else {ExtMLBufferAm[k]=NO_VALUE; ExtMColorBufferAm[k]=NO_COLOR;}

               if(valid && nowN[3]>nowE[3] && nowA[3]>=0) {ExtMLBufferAf[k]=nowA[3]; ExtMColorBufferAf[k]=MySetColor(dirA[3]);} else {ExtMLBufferAf[k]=NO_VALUE; ExtMColorBufferAf[k]=NO_COLOR;}

              }

            if(InpAX)

              {

               if(valid && nowA[0]>=0) {ExtMLBufferAX[k]=nowA[0]; ExtMColorBufferAX[k]=MySetColor(dirA[0]);} else {ExtMLBufferAX[k]=NO_VALUE; ExtMColorBufferAX[k]=NO_COLOR;}

              }

            if(InpU)

              {

               if(valid && nowN[1]>nowE[1] && nowU[1]>=0) {ExtMLBufferUs[k]=nowU[1]; ExtMColorBufferUs[k]=MySetColor(dirU[1]);} else {ExtMLBufferUs[k]=NO_VALUE; ExtMColorBufferUs[k]=NO_COLOR;}

               if(valid && nowN[2]>nowE[2] && nowU[2]>=0) {ExtMLBufferUm[k]=nowU[2]; ExtMColorBufferUm[k]=MySetColor(dirU[2]);} else {ExtMLBufferUm[k]=NO_VALUE; ExtMColorBufferUm[k]=NO_COLOR;}

               if(valid && nowN[3]>nowE[3] && nowU[3]>=0) {ExtMLBufferUf[k]=nowU[3]; ExtMColorBufferUf[k]=MySetColor(dirU[3]);} else {ExtMLBufferUf[k]=NO_VALUE; ExtMColorBufferUf[k]=NO_COLOR;}

              }

            if(InpUX)

              {

               if(valid && nowU[0]>=0) {ExtMLBufferUX[k]=nowU[0]; ExtMColorBufferUX[k]=MySetColor(dirU[0]);} else {ExtMLBufferUX[k]=NO_VALUE; ExtMColorBufferUX[k]=NO_COLOR;}

              }

            if(InpD)

              {

               if(valid && nowN[1]>nowE[1] && nowD[1]>=0) {ExtMLBufferDs[k]=nowD[1]; ExtMColorBufferDs[k]=MySetColor(dirD[1]);} else {ExtMLBufferDs[k]=NO_VALUE; ExtMColorBufferDs[k]=NO_COLOR;}

               if(valid && nowN[2]>nowE[2] && nowD[2]>=0) {ExtMLBufferDm[k]=nowD[2]; ExtMColorBufferDm[k]=MySetColor(dirD[2]);} else {ExtMLBufferDm[k]=NO_VALUE; ExtMColorBufferDm[k]=NO_COLOR;}

               if(valid && nowN[3]>nowE[3] && nowD[3]>=0) {ExtMLBufferDf[k]=nowD[3]; ExtMColorBufferDf[k]=MySetColor(dirD[3]);} else {ExtMLBufferDf[k]=NO_VALUE; ExtMColorBufferDf[k]=NO_COLOR;}

              }

            if(InpDX)

              {

               if(valid && nowD[0]>=0) {ExtMLBufferDX[k]=nowD[0]; ExtMColorBufferDX[k]=MySetColor(dirD[0]);} else {ExtMLBufferDX[k]=NO_VALUE; ExtMColorBufferDX[k]=NO_COLOR;}

              }

            if(InpSig)

              {

               cntU=0; cntD=0; cntC=0; cntA=0;

               sigUV=0; sigDV=0; sigCV=0; sigAV=0;

               sigUC=0; sigDC=0; sigCC=0; sigAC=0;

               if(nowN[1]>nowE[1] && nowN[2]>nowE[2] && nowN[3]>nowE[3]) for(j=0;j<LHAC_LEN2;j++)

                 {

                  if((nB[j]>=0 && pB[j]>=0 && oB[j]>=0) &&

                     (nT[j]>=0 && pT[j]>=0 && oT[j]>=0) &&

                     (nM[j]>=0 && pM[j]>=0 && oM[j]>=0))

                    {

                     if(InpFilXX==4)

                       {

                        haveSig=(dT[j]*dM[j]>0 || dT[j]*dB[j]>0 || dM[j]*dB[j]>0);

                       }

                     else if(InpFilXX>0)

                       {

                        rc=(aX+aM+dM[j])/3;

                        haveSig=(rc*aX>0 || (InpFilXX  &2)==0) && (rc*aM>0 || (InpFilXX  &1)==0);

                       }

                     else

                        haveSig=true;

                     if(haveSig)

                       {

                        if(InpSigMU && dM[j]>0 && (dT[j]>0 || dB[j]>0)) { cntU++; sigUV+=nM[j]; sigUC+=dM[j]; }

                        if(InpSigFU && dT[j]>0 && dM[j]>0) { cntU++; sigUV+=nT[j]; sigUC+=dT[j]; }

                        if(InpSigSU && dB[j]>0 && dM[j]>0) { cntU++; sigUV+=nB[j]; sigUC+=dB[j]; }



                        if(InpSigMD && dM[j]<0 && (dT[j]<0 || dB[j]<0)) { cntD++; sigDV+=nM[j]; sigDC+=dM[j]; }

                        if(InpSigFD && dT[j]<0 && dM[j]<0) { cntD++; sigDV+=nT[j]; sigDC+=dT[j]; }

                        if(InpSigSD && dB[j]<0 && dM[j]<0) { cntD++; sigDV+=nB[j]; sigDC+=dB[j]; }



                        if(InpSigMA && ((dM[j]>0 && (dT[j]>0 || dB[j]>0)) || (dM[j]<0 && (dT[j]<0 || dB[j]<0)))) { cntA++; sigAV+=nM[j]; sigAC+=dM[j]; }

                        if(InpSigFA && ((dT[j]>0 && dM[j]>0) || (dT[j]<0 && dM[j]<0))) { cntA++; sigAV+=nT[j]; sigAC+=dT[j]; }

                        if(InpSigSA && ((dB[j]>0 && dM[j]>0) || (dB[j]<0 && dM[j]<0))) { cntA++; sigAV+=nB[j]; sigAC+=dB[j]; }

                       }

                    }

                 }

                       

               if(cntU>0 && cntD>0) { cntC=1; sigCV=(sigUV/cntU+sigDV/cntD)/2; sigCC=(sigUC+sigDC)/(cntU+cntD); }

               

               if(InpSigA)

                 {

                  if(valid && cntA>0) { ExtSigAPrice[k]=sigAV/cntA; ExtSigAColor[k]=MySetColor(sigAC/cntA); }

                  else { ExtSigAPrice[k]=NO_VALUE; ExtSigAColor[k]=NO_COLOR; }

                 }

               if(InpSigC)

                 {

                  if(valid && cntC>0) { ExtSigCPrice[k]=sigCV/cntC; ExtSigCColor[k]=MySetColor(sigCC/cntC); }

                  else { ExtSigCPrice[k]=NO_VALUE; ExtSigCColor[k]=NO_COLOR; }

                 }

               if(InpSigD)

                 {

                  if(valid && cntD>0) { ExtSigDPrice[k]=sigDV/cntD; ExtSigDColor[k]=MySetColor(sigDC/cntD); }

                  else { ExtSigDPrice[k]=NO_VALUE; ExtSigDColor[k]=NO_COLOR; }

                 }

               if(InpSigU)

                 {

                  if(valid && cntU>0) { ExtSigUPrice[k]=sigUV/cntU; ExtSigUColor[k]=MySetColor(sigUC/cntU); }

                  else { ExtSigUPrice[k]=NO_VALUE; ExtSigUColor[k]=NO_COLOR; }

                 }



               if(InpSigN)

                 {

                  if(l>=0 && l<=lastI)

                    {

                     double cnt=0,val=0;

                     if(cntA>0) { cnt++;val+=sigAC/cntA; }

                     if(cntC>0) { cnt++;val+=sigCC/cntC; }

                     if(InpSigUp && nowU[0]>=0) { cnt++; val+=dirU[0]; }

                     if(InpSigHi && nowH[0]>=0) { cnt++; val+=dirH[0]; }

                     if(InpSigAv && nowA[0]>=0) { cnt++; val+=dirA[0]; }

                     if(InpSigDn && nowD[0]>=0) { cnt++; val+=dirD[0]; }

                     if(InpSigLo && nowL[0]>=0) { cnt++; val+=dirL[0]; }

                     if(InpSigCn && nowC[0]>=0) { cnt++; val+=dirC[0]; }

                     if(cnt>0) ExtSigNColor[k]=MySetColor(val/cnt); else ExtSigNColor[k]=MySetColor(0);

                     ExtSigNPrice[k]=price[l];

                    }

                  else

                    { ExtSigNPrice[k]=NO_VALUE; ExtSigNColor[k]=NO_COLOR; }

                 }

              }

           }

         cnt2++;

         if(InpFil)

           {

            for(j=0;j<LHAC_LEN2;j++)

              {

               if(pM[j]>=0)oM[j]=pM[j]; if(nM[j]>=0)pM[j]=nM[j];

               if(pT[j]>=0)oT[j]=pT[j]; if(nT[j]>=0)pT[j]=nT[j];

               if(pB[j]>=0)oB[j]=pB[j]; if(nB[j]>=0)pB[j]=nB[j];

              }

           }

         for(j=0;j<4;j++)

           {

            if(prevA[j]>=0)oldA[j]=prevA[j]; if(nowA[j]>=0)prevA[j]=nowA[j];

            if(prevC[j]>=0)oldC[j]=prevC[j]; if(nowC[j]>=0)prevC[j]=nowC[j];

            if(prevL[j]>=0)oldL[j]=prevL[j]; if(nowL[j]>=0)prevL[j]=nowL[j];

            if(prevH[j]>=0)oldH[j]=prevH[j]; if(nowH[j]>=0)prevH[j]=nowH[j];

            if(prevU[j]>=0)oldU[j]=prevU[j]; if(nowU[j]>=0)prevU[j]=nowU[j];

            if(prevD[j]>=0)oldD[j]=prevD[j]; if(nowD[j]>=0)prevD[j]=nowD[j];

           }

        }

     }



   if(!ExtReady)

     {

      ExtReady=true;

      Print("Ready(L",WAVE_LEN," D",LHAC_MUL," P",ExtPeriod," S",ExtStep," I",ExtStepInc,

            ") [",ExtPSize[0],"-",ExtPSize[WAVE_LEN-1],"] SH=",ExtShiftP,

            " => ",lastP-pos,"/",rates_total," in ",GetTickCount()-tc,"ms");

     }



   Comment(GetTickCount()-tc,"ms");



   return(rates_total);

  }

//+------------------------------------------------------------------+

bool MyMCalc(const int j,double &rc,double &rv)

  {

   rv=-1;rc=-1;

   if(InpM && nowM[j]>=0 && prevM[j]>=0 && oldM[j]>=0)

     {

      //rc=(aX+aM+dirM[j])/3; rv=(vX+nowM[j])/2;

      rc=dirM[j]; rv=nowM[j];

      if(InpFilM==4)

        {

         if((nowB[j]>=0 && prevB[j]>=0 && oldB[j]>=0) && (nowT[j]>=0 && prevT[j]>=0 && oldT[j]>=0))

            if(dirB[j]*dirM[j]>0 || dirM[j]*dirT[j]>0) return(true);

        }

      else if((rc*aX>0 || (InpFilM  &2)==0) && (rc*aM>0 || (InpFilM  &1)==0))

         return(true);

     }

   return(false);

  }

//+------------------------------------------------------------------+

bool MyFCalc(const int j,double &rc,double &rv)

  {

   rv=-1;rc=-1;

   if(InpF && nowT[j]>=0 && prevT[j]>=0 && oldT[j]>=0)

     {

      //rc=(aX+aT+dirT[j])/3; rv=(vX+nowT[j])/2;

      rc=dirT[j]; rv=nowT[j];

      if(InpFilF==4)

        {

         if((nowB[j]>=0 && prevB[j]>=0 && oldB[j]>=0) && (nowM[j]>=0 && prevM[j]>=0 && oldM[j]>=0))

            if(dirT[j]*dirM[j]>0 || dirB[j]*dirT[j]>0) return(true);

        }

      else if((rc*aX>0 || (InpFilF  &2)==0) && (rc*aT>0 || (InpFilF  &1)==0))

         return(true);

     }

   return(false);

  }

//+------------------------------------------------------------------+

bool MySCalc(const int j,double &rc,double &rv)

  {

   rv=-1;rc=-1;

   if(InpS && nowB[j]>=0 && prevB[j]>=0 && oldB[j]>=0)

     {

      //rc=(aX+aB+dirB[j])/3; rv=(vX+nowB[j])/2;

      rc=dirB[j]; rv=nowB[j];

      if(InpFilS==4)

        {

         if((nowT[j]>=0 && prevT[j]>=0 && oldT[j]>=0) && (nowM[j]>=0 && prevM[j]>=0 && oldM[j]>=0))

            if(dirB[j]*dirM[j]>0 || dirB[j]*dirT[j]>0) return(true);

        }

      else if((rc*aX>0 || (InpFilS  &2)==0) && (rc*aB>0 || (InpFilS  &1)==0))

         return(true);

     }

   return(false);

  }

//+------------------------------------------------------------------+

void MyMCalc2(const int j,

              int &sn,double &sv,double &sh,double &sl,

              int &xn,double &xv,double &xh,double &xl)

  {

   if(nM[j]>=0)

     {

      if(InpFilMX==4)

        {

         if((nB[j]>=0 && pB[j]>=0 && oB[j]>=0) &&

            (nT[j]>=0 && pT[j]>=0 && oT[j]>=0) &&

            (nM[j]>=0 && pM[j]>=0 && oM[j]>=0))

            if(dT[j]*dM[j]>0 || dM[j]*dB[j]>0)

              {

               double rv=nM[j];

               sn++; xn++; sv+=rv;  xv+=rv;

               if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

               if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

              }

        }

      else if(InpFilMX>0 && pM[j]>=0 && oM[j]>=0)

        {

         double rc=(aX+aM+dM[j])/3;

         if((rc*aX>0 || (InpFilMX & 2)==0) &&

            (rc*aM>0 || (InpFilMX & 1)==0))

           {

            double rv=nM[j];

            sn++; xn++; sv+=rv;  xv+=rv;

            if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

            if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

           }

        }

      else

        {

         double rv=nM[j];

         sn++; xn++; sv+=rv;  xv+=rv;

         if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

         if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

        }

     }

  }

//+------------------------------------------------------------------+

void MyFCalc2(const int j,

              int &sn,double &sv,double &sh,double &sl,

              int &xn,double &xv,double &xh,double &xl)

  {

   if(nT[j]>=0)

     {

      if(InpFilFX==4)

        {

         if((nB[j]>=0 && pB[j]>=0 && oB[j]>=0) &&

            (nT[j]>=0 && pT[j]>=0 && oT[j]>=0) &&

            (nM[j]>=0 && pM[j]>=0 && oM[j]>=0))

            if(dT[j]*dM[j]>0 || dT[j]*dB[j]>0)

              {

               double rv=nT[j];

               sn++; xn++; sv+=rv;  xv+=rv;

               if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

               if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

              }

        }

      else if(InpFilFX>0 && pT[j]>=0 && oT[j]>=0)

        {

         double rc=(aX+aT+dT[j])/3;

         if((rc*aX>0 || (InpFilFX & 2)==0) &&

            (rc*aT>0 || (InpFilFX & 1)==0))

           {

            double rv=nT[j];

            sn++; xn++; sv+=rv;  xv+=rv;

            if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

            if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

           }

        }

      else

        {

         double rv=nT[j];

         sn++; xn++; sv+=rv;  xv+=rv;

         if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

         if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

        }

     }

  }

//+------------------------------------------------------------------+

void MySCalc2(const int j,

              int &sn,double &sv,double &sh,double &sl,

              int &xn,double &xv,double &xh,double &xl)

  {

   if(nB[j]>=0)

     {

      if(InpFilSX==4)

        {

         if((nB[j]>=0 && pB[j]>=0 && oB[j]>=0) &&

            (nT[j]>=0 && pT[j]>=0 && oT[j]>=0) &&

            (nM[j]>=0 && pM[j]>=0 && oM[j]>=0))

            if(dT[j]*dB[j]>0 || dM[j]*dB[j]>0)

              {

               double rv=nB[j];

               sn++; xn++; sv+=rv;  xv+=rv;

               if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

               if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

              }

        }

      else if(InpFilSX>0)

        {

         double rc=(aX+aB+dB[j])/3;

         if((rc*aX>0 || (InpFilSX & 2)==0) &&

            (rc*aB>0 || (InpFilSX & 1)==0))

           {

            double rv=nB[j];

            sn++; xn++; sv+=rv;  xv+=rv;

            if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

            if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

           }

        }

      else

        {

         double rv=nB[j];

         sn++; xn++; sv+=rv;  xv+=rv;

         if(sh<rv) sh=rv; if(sl<0) sl=rv; else if(sl>rv) sl=rv;

         if(xh<rv) xh=rv; if(xl<0) xl=rv; else if(xl>rv) xl=rv;

        }

     }

  }

//+------------------------------------------------------------------+

void MyPrepBuffers()

  {

   string per=IntegerToString(InpPeriod);

   int x=0,z=0,idx=WAVE_LEN+1;

   if((InpF || InpM || InpS) && (InpMWidth>0))

     {

      MyPrepSMFBuffers(1,MathMin(WAVE_LEN,MAX_WAVE_LEN),x,z,

         InpSColors,InpMColors,InpFColors,

         STYLE_SOLID,STYLE_SOLID,STYLE_SOLID,

         InpMWidth,InpMWidth,InpMWidth,

         InpMIcon,InpMIcon,InpMIcon,

         InpS,InpF,InpM,

         "s","f","m",

         NO_VALUE);

     }



   if(InpL)

     {

      MySetBuf(x,z,idx,ExtMLBufferLs,ExtMColorBufferLs,InpSColors,STYLE_DASH,InpLWidth,InpLIcon,"Ls"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferLf,ExtMColorBufferLf,InpFColors,STYLE_DASH,InpLWidth,InpLIcon,"Lf"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferLm,ExtMColorBufferLm,InpMColors,STYLE_DASH,InpLWidth,InpLIcon,"Lm"+per,NO_VALUE);

     }

   if(InpH)

     {

      MySetBuf(x,z,idx,ExtMLBufferHs,ExtMColorBufferHs,InpSColors,STYLE_DASH,InpHWidth,InpHIcon,"Hs"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferHf,ExtMColorBufferHf,InpFColors,STYLE_DASH,InpHWidth,InpHIcon,"Hf"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferHm,ExtMColorBufferHm,InpMColors,STYLE_DASH,InpHWidth,InpHIcon,"Hm"+per,NO_VALUE);

     }

   if(InpA)

     {

      MySetBuf(x,z,idx,ExtMLBufferAs,ExtMColorBufferAs,InpXAColors,STYLE_DASH,InpAWidth,InpAIcon,"As"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferAf,ExtMColorBufferAf,InpXAColors,STYLE_DASH,InpAWidth,InpAIcon,"Af"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferAm,ExtMColorBufferAm,InpXAColors,STYLE_DASH,InpAWidth,InpAIcon,"Am"+per,NO_VALUE);

     }

   if(InpC)

     {

      MySetBuf(x,z,idx,ExtMLBufferCs,ExtMColorBufferCs,InpXCColors,STYLE_DASH,InpCWidth,InpCIcon,"Cs"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferCf,ExtMColorBufferCf,InpXCColors,STYLE_DASH,InpCWidth,InpCIcon,"Cf"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferCm,ExtMColorBufferCm,InpXCColors,STYLE_DASH,InpCWidth,InpCIcon,"Cm"+per,NO_VALUE);

     }

   if(InpD)

     {

      MySetBuf(x,z,idx,ExtMLBufferDs,ExtMColorBufferDs,InpXDColors,STYLE_DASH,InpDWidth,InpDIcon,"Ds"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferDf,ExtMColorBufferDf,InpXDColors,STYLE_DASH,InpDWidth,InpDIcon,"Df"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferDm,ExtMColorBufferDm,InpXDColors,STYLE_DASH,InpDWidth,InpDIcon,"Dm"+per,NO_VALUE);

     }

   if(InpU)

     {

      MySetBuf(x,z,idx,ExtMLBufferUs,ExtMColorBufferUs,InpXUColors,STYLE_DASH,InpUWidth,InpUIcon,"Us"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferUf,ExtMColorBufferUf,InpXUColors,STYLE_DASH,InpUWidth,InpUIcon,"Uf"+per,NO_VALUE);

      MySetBuf(x,z,idx,ExtMLBufferUm,ExtMColorBufferUm,InpXUColors,STYLE_DASH,InpUWidth,InpUIcon,"Um"+per,NO_VALUE);

     }



   if(InpAX)

     {

      MySetBuf(x,z,idx,ExtMLBufferAX,ExtMColorBufferAX,InpXAColors,STYLE_DASH,InpXAWidth,InpXAIcon,"AX"+per,NO_VALUE);

     }

   if(InpCX)

     {

      MySetBuf(x,z,idx,ExtMLBufferCX,ExtMColorBufferCX,InpXCColors,STYLE_DASH,InpXCWidth,InpXCIcon,"CX"+per,NO_VALUE);

     }

   if(InpLX)

     {

      MySetBuf(x,z,idx,ExtMLBufferLX,ExtMColorBufferLX,InpXLColors,STYLE_DASH,InpXLWidth,InpXLIcon,"LX"+per,NO_VALUE);

     }

   if(InpHX)

     {

      MySetBuf(x,z,idx,ExtMLBufferHX,ExtMColorBufferHX,InpXHColors,STYLE_DASH,InpXHWidth,InpXHIcon,"HX"+per,NO_VALUE);

     }

   if(InpDX)

     {

      MySetBuf(x,z,idx,ExtMLBufferDX,ExtMColorBufferDX,InpXDColors,STYLE_DASH,InpXDWidth,InpXDIcon,"DX"+per,NO_VALUE);

     }

   if(InpUX)

     {

      MySetBuf(x,z,idx,ExtMLBufferUX,ExtMColorBufferUX,InpXUColors,STYLE_DASH,InpXUWidth,InpXUIcon,"UX"+per,NO_VALUE);

     }

   if(InpSigN)

     {

      MySetBuf(x,z,idx,ExtSigNPrice,ExtSigNColor,InpSigNColors,STYLE_SOLID,InpSigNWidth,InpSigNIcon,"SigN"+per,NO_VALUE);

     }

   if(InpSigU)

     {

      MySetBuf(x,z,idx,ExtSigUPrice,ExtSigUColor,InpSigUColors,STYLE_SOLID,InpSigUWidth,InpSigUIcon,"Sig+"+per,NO_VALUE);

     }

   if(InpSigD)

     {

      MySetBuf(x,z,idx,ExtSigDPrice,ExtSigDColor,InpSigDColors,STYLE_SOLID,InpSigDWidth,InpSigDIcon,"Sig-"+per,NO_VALUE);

     }

   if(InpSigA)

     {

      MySetBuf(x,z,idx,ExtSigAPrice,ExtSigAColor,InpSigAColors,STYLE_SOLID,InpSigAWidth,InpSigAIcon,"SigA"+per,NO_VALUE);

     }

   if(InpSigC)

     {

      MySetBuf(x,z,idx,ExtSigCPrice,ExtSigCColor,InpSigCColors,STYLE_DASH,InpSigCWidth,InpSigCIcon,"SigC"+per,NO_VALUE);

     }

   ExtPlotCnt=z;

  }

//+------------------------------------------------------------------+

void MyClearBuffers()

  {

   MyClearSMFBuffers();



   MyArrClear(ExtMLBufferLs,NO_VALUE); MyArrClear(ExtMColorBufferLs,NO_COLOR);

   MyArrClear(ExtMLBufferLm,NO_VALUE); MyArrClear(ExtMColorBufferLm,NO_COLOR);

   MyArrClear(ExtMLBufferLf,NO_VALUE); MyArrClear(ExtMColorBufferLf,NO_COLOR);



   MyArrClear(ExtMLBufferHs,NO_VALUE); MyArrClear(ExtMColorBufferHs,NO_COLOR);

   MyArrClear(ExtMLBufferHm,NO_VALUE); MyArrClear(ExtMColorBufferHm,NO_COLOR);

   MyArrClear(ExtMLBufferHf,NO_VALUE); MyArrClear(ExtMColorBufferHf,NO_COLOR);



   MyArrClear(ExtMLBufferCs,NO_VALUE); MyArrClear(ExtMColorBufferCs,NO_COLOR);

   MyArrClear(ExtMLBufferCm,NO_VALUE); MyArrClear(ExtMColorBufferCm,NO_COLOR);

   MyArrClear(ExtMLBufferCf,NO_VALUE); MyArrClear(ExtMColorBufferCf,NO_COLOR);



   MyArrClear(ExtMLBufferAs,NO_VALUE); MyArrClear(ExtMColorBufferAs,NO_COLOR);

   MyArrClear(ExtMLBufferAm,NO_VALUE); MyArrClear(ExtMColorBufferAm,NO_COLOR);

   MyArrClear(ExtMLBufferAf,NO_VALUE); MyArrClear(ExtMColorBufferAf,NO_COLOR);



   MyArrClear(ExtMLBufferDs,NO_VALUE); MyArrClear(ExtMColorBufferDs,NO_COLOR);

   MyArrClear(ExtMLBufferDm,NO_VALUE); MyArrClear(ExtMColorBufferDm,NO_COLOR);

   MyArrClear(ExtMLBufferDf,NO_VALUE); MyArrClear(ExtMColorBufferDf,NO_COLOR);



   MyArrClear(ExtMLBufferUs,NO_VALUE); MyArrClear(ExtMColorBufferUs,NO_COLOR);

   MyArrClear(ExtMLBufferUm,NO_VALUE); MyArrClear(ExtMColorBufferUm,NO_COLOR);

   MyArrClear(ExtMLBufferUf,NO_VALUE); MyArrClear(ExtMColorBufferUf,NO_COLOR);



   MyArrClear(ExtMLBufferLX,NO_VALUE); MyArrClear(ExtMColorBufferLX,NO_COLOR);

   MyArrClear(ExtMLBufferHX,NO_VALUE); MyArrClear(ExtMColorBufferHX,NO_COLOR);

   MyArrClear(ExtMLBufferCX,NO_VALUE); MyArrClear(ExtMColorBufferCX,NO_COLOR);

   MyArrClear(ExtMLBufferAX,NO_VALUE); MyArrClear(ExtMColorBufferAX,NO_COLOR);

   MyArrClear(ExtMLBufferDX,NO_VALUE); MyArrClear(ExtMColorBufferDX,NO_COLOR);

   MyArrClear(ExtMLBufferUX,NO_VALUE); MyArrClear(ExtMColorBufferUX,NO_COLOR);



   MyArrClear(ExtSigUPrice,NO_VALUE); MyArrClear(ExtSigUColor,NO_COLOR);

   MyArrClear(ExtSigDPrice,NO_VALUE); MyArrClear(ExtSigDColor,NO_COLOR);

   MyArrClear(ExtSigCPrice,NO_VALUE); MyArrClear(ExtSigCColor,NO_COLOR);

   MyArrClear(ExtSigAPrice,NO_VALUE); MyArrClear(ExtSigAColor,NO_COLOR);

   MyArrClear(ExtSigNPrice,NO_VALUE); MyArrClear(ExtSigNColor,NO_COLOR);

  }

//+------------------------------------------------------------------+

double MyStdDev(int position,const double &price[],const double MAprice,int lastPos)

  {

   double StdDev_dTmp=0.0,EBands=ExtBands;

   if(position>lastPos) {EBands-=position-lastPos; position=lastPos;}

   if(EBands<1) EBands=1;

   if(position<EBands) return(StdDev_dTmp);

   for(int i=0;i<EBands;i++) StdDev_dTmp+=MathPow(price[position-i]-MAprice,2);

   StdDev_dTmp=MathSqrt(StdDev_dTmp/EBands);

   return(StdDev_dTmp);

  }

//+------------------------------------------------------------------+

Comments