//+------------------------------------------------------------------+ //| SSL.mq4 | //|ssl bar sw mtf Kalenzo | //| bartlomiej.gorski@gmail.com | //+------------------------------------------------------------------+ //2008fxtsd ki #property copyright "Kalenzo" #property link "bartlomiej.gorski@gmail.com" #property indicator_buffers 2 #property indicator_color1 Green #property indicator_color2 Red #property indicator_minimum 10 #property indicator_maximum 90 extern int Lb = 10; extern int SSL_BarLevel = 15; //BarLevel 10-90 extern int BarsSize = 2; //0-5 extern int TimeFrame=0; extern string TimeFrames = "M1;5,15,30,60H1;240H4;1440D1;10080W1;43200MN|0-CurrentTF"; string IndicatorFileName; double ssl[],Hld,Hlv, sslHup[],sslHdn[],PriceBuff[]; #property indicator_separate_window //+------------------------------------------------------------------+ //| Custom indicator initialization function | //+------------------------------------------------------------------+ int init() { //---- indicators IndicatorBuffers(3); SetIndexBuffer (0,sslHup); SetIndexArrow (0,167); SetIndexLabel (0,"SSLup "+Lb+"["+TimeFrame+"]"); SetIndexBuffer (1,sslHdn); SetIndexArrow (1,167); SetIndexLabel (1,"SSLdn "+Lb+"["+TimeFrame+"]"); SetIndexBuffer (2,ssl); SetIndexLabel (2,""); SetIndexStyle(0,DRAW_ARROW,0,BarsSize); SetIndexStyle(1,DRAW_ARROW,0,BarsSize); SetIndexStyle(2,DRAW_NONE); SetIndexEmptyValue(0,EMPTY_VALUE); SetIndexEmptyValue(1,EMPTY_VALUE); switch(TimeFrame) { case 1 : string TimeFrameStr= "M1"; break; case 5 : TimeFrameStr= "M5"; break; case 15 : TimeFrameStr= "M15"; break; case 30 : TimeFrameStr= "M30"; break; case 60 : TimeFrameStr= "H1"; break; case 240 : TimeFrameStr= "H4"; break; case 1440 : TimeFrameStr= "D1"; break; case 10080 : TimeFrameStr= "W1"; break; case 43200 : TimeFrameStr= "MN1"; break; default : TimeFrameStr= "TF0"; } IndicatorShortName("SSL "+Lb+"["+TimeFrameStr+"]"); IndicatorFileName = WindowExpertName(); if (TimeFrame<Period()) TimeFrame=Period(); return(0); } //+------------------------------------------------------------------+ //| Custom indicator deinitialization function | //+------------------------------------------------------------------+ int deinit() { //---- return(0); } //+------------------------------------------------------------------+ //| Custom indicator iteration function | //+------------------------------------------------------------------+ 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; if (TimeFrame != Period()) { datetime TimeArray[]; limit = MathMax(limit,TimeFrame/Period()); ArrayCopySeries(TimeArray ,MODE_TIME ,NULL,TimeFrame); for(i=0,int y=0; i<limit; i++) { if(Time[i]<TimeArray[y]) y++; sslHup[i] = iCustom(NULL,TimeFrame,IndicatorFileName,Lb,SSL_BarLevel,BarsSize,0,y); sslHdn[i] = iCustom(NULL,TimeFrame,IndicatorFileName,Lb,SSL_BarLevel,BarsSize,1,y); } return(0); } for(i=Bars-Lb;i>=0;i--) { if(Close[i]>iMA(Symbol(),TimeFrame,Lb,0,MODE_SMA,PRICE_HIGH,i+1)) Hld = 1; else { if(Close[i]<iMA(Symbol(),TimeFrame,Lb,0,MODE_SMA,PRICE_LOW,i+1)) Hld = -1; else Hld = 0; } if(Hld!=0) Hlv = Hld; if(Hlv == -1) { ssl[i] = iMA(Symbol(),TimeFrame,Lb,0,MODE_SMA,PRICE_HIGH,i+1); sslHdn[i] = SSL_BarLevel; sslHup[i]=EMPTY_VALUE; } else { ssl[i] = iMA(Symbol(),TimeFrame,Lb,0,MODE_SMA,PRICE_LOW,i+1); sslHup[i] = SSL_BarLevel; sslHdn[i]=EMPTY_VALUE; } } return(0); } //+------------------------------------------------------------------+
Sample
Analysis
Market Information Used:
Series array that contains open time of each bar
Series array that contains close prices for each bar
Indicator Curves created:
Implements a curve of type DRAW_ARROW
Implements a curve of type DRAW_NONE
Indicators Used:
Moving average indicator
Custom Indicators Used:
IndicatorFileName
Order Management characteristics:
Other Features: