//+------------------------------------------------------------------+ //| SSL channel chart.mq4 | //| mladen | //| | //| initial SSL for metatrader developed by Kalenzo | //+------------------------------------------------------------------+ //mod2009fxtsd +ln on/off #property copyright "copyleft mladen" #property link "mladenfx@gmail.com" #property indicator_chart_window #property indicator_buffers 4 #property indicator_color1 Red #property indicator_color2 Green #property indicator_color3 OrangeRed #property indicator_color4 Lime #property indicator_width1 2 #property indicator_width2 2 // // // // // extern int Lb = 10; extern int sslMaMode = 0; extern bool alertsOn = false; extern bool alertsMessage = true; extern bool alertsSound = false; extern bool alertsEmail = false; extern bool showLines = true; extern bool showArrows = false; double ssld[]; double sslu[]; double sslad[]; double sslau[]; double Hlv[]; //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // int init() { IndicatorBuffers(5); if (showLines)int draw= DRAW_LINE; else draw= DRAW_NONE; SetIndexBuffer(0,ssld); SetIndexDrawBegin(0,Lb+1); SetIndexStyle(0,draw); SetIndexBuffer(1,sslu); SetIndexDrawBegin(0,Lb+1); SetIndexStyle(1,draw); SetIndexBuffer(2,sslad); SetIndexDrawBegin(0,Lb+1); SetIndexStyle(2,DRAW_ARROW); SetIndexArrow(2,234); SetIndexBuffer(3,sslau); SetIndexDrawBegin(0,Lb+1); SetIndexStyle(3,DRAW_ARROW); SetIndexArrow(3,233); SetIndexBuffer(4,Hlv); return(0); } // // // // // int start() { int counted_bars=IndicatorCounted(); int i,limit; if(counted_bars<0) return(-1); if(counted_bars>0) counted_bars--; limit=Bars-counted_bars; // // // // // for(i=limit;i>=0;i--) { Hlv[i] = Hlv[i+1]; if(Close[i]>iMA(Symbol(),0,Lb,0,sslMaMode,PRICE_HIGH,i+1)) Hlv[i] = 1; if(Close[i]<iMA(Symbol(),0,Lb,0,sslMaMode,PRICE_LOW, i+1)) Hlv[i] = -1; if(Hlv[i] == -1) { ssld[i] = iMA(Symbol(),0,Lb,0,sslMaMode,PRICE_HIGH,i+1); sslu[i] = iMA(Symbol(),0,Lb,0,sslMaMode,PRICE_LOW ,i+1); } else { ssld[i] = iMA(Symbol(),0,Lb,0,sslMaMode,PRICE_LOW ,i+1); sslu[i] = iMA(Symbol(),0,Lb,0,sslMaMode,PRICE_HIGH,i+1); } // // // // // sslau[i] = EMPTY_VALUE; sslad[i] = EMPTY_VALUE; if (showArrows) { if (Hlv[i]!=Hlv[i+1]) if (Hlv[i]==1) sslau[i] = ssld[i]-iATR(NULL,0,15,i)/2.0; else sslad[i] = ssld[i]+iATR(NULL,0,15,i)/2.0; } } // // // // // if (alertsOn) if (Hlv[0] != Hlv[1]) if (Hlv[0] == 1) doAlert("up"); else doAlert("down"); return(0); } //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ // // // // // void doAlert(string doWhat) { static string previousAlert="nothing"; static datetime previousTime; string message; if (previousAlert != doWhat || previousTime != Time[0]) { previousAlert = doWhat; previousTime = Time[0]; // // // // // message = StringConcatenate(Symbol()," at ",TimeToStr(TimeLocal(),TIME_SECONDS)," SSL trend changed to ",doWhat); if (alertsMessage) Alert(message); if (alertsEmail) SendMail(StringConcatenate(Symbol(),"SSL "),message); if (alertsSound) PlaySound("alert2.wav"); } }
Sample
Analysis
Market Information Used:
Series array that contains close prices for each bar
Series array that contains open time of each bar
Indicator Curves created:
Implements a curve of type draw
Implements a curve of type DRAW_ARROW
Indicators Used:
Moving average indicator
Indicator of the average true range
Custom Indicators Used:
Order Management characteristics:
Other Features:
It issuies visual alerts to the screen
It sends emails
It plays sound alerts