//+------------------------------------------------------------------+ //| Filename changed to ForexOFFTrend.mq4 by CrazyChart | //| SilverTrend .mq4 | //| SilverTrend rewritten by CrazyChart | //| http://viac.ru/ | //+------------------------------------------------------------------+ #property copyright "SilverTrend rewritten by CrazyChart" #property link "http://viac.ru/ " //---- #property indicator_chart_window #property indicator_buffers 2 #property indicator_color1 Blue #property indicator_color2 Red //---- input parameters extern int CountBars=400; extern int SSP=7; extern double Kmin = 1.6; extern double Kmax = 50.6; extern bool gAlert=True; // Switch to allow alerts //---- buffers double ExtMapBuffer1[]; double ExtMapBuffer2[]; //---- bool gSellAlertGiven= false; // Used to stop constant alerts bool gBuyAlertGiven = false; // Used to stop constant alerts //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators SetIndexStyle(0,DRAW_LINE,0,2); SetIndexBuffer(0,ExtMapBuffer1); SetIndexStyle(1,DRAW_LINE,0,2); SetIndexBuffer(1,ExtMapBuffer2); //---- if(CountBars>= Bars) CountBars = Bars; SetIndexDrawBegin(0,Bars-CountBars+SSP); SetIndexDrawBegin(1,Bars-CountBars+SSP); //---- return(0); } //+------------------------------------------------------------------+ //| Custor indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ int start() { int i, i2, loopbegin, counted_bars=IndicatorCounted(); double SsMax, SsMin, K, val1, val2, smin, smax, price; if(Bars<=SSP+1) return(0); //---- initial zero if(counted_bars=0; i--) { SsMax = High[Highest(NULL, 0, MODE_HIGH, SSP, i - SSP + 1)]; SsMin = Low[Lowest(NULL, 0, MODE_LOW, SSP, i - SSP + 1)]; smin = NormalizeDouble((SsMin - (SsMax - SsMin)*Kmin / 100), Digits); smax = NormalizeDouble((SsMax - (SsMax - SsMin)*Kmax / 100), Digits); int index=MathMax(0,i-SSP+6); ExtMapBuffer1[index]=smax; if(i-SSP-1>=0)ExtMapBuffer2[i-SSP-1]=smax; val1 = ExtMapBuffer1[0]; val2 = ExtMapBuffer2[0]; if(val1>val2) { Comment("покупка buy ",val1); if(gAlert==true && gBuyAlertGiven==false) { PlaySound("alert.wav"); Alert("Buy signal at "+DoubleToStr(val1,Digits)+" on "+Period()+ " minute chart"); gBuyAlertGiven=true; gSellAlertGiven=false; } } if(val1