#property indicator_chart_window

#property indicator_buffers 2
#property indicator_color1 Blue
#property indicator_width1 0
#property indicator_color2 Red
#property indicator_width2 0
extern bool UseAlert = true; 
extern int BarsToCount = 1000;

double SarUpSig[];
double SarDownSig[];

datetime TT;
int init()
{
//---- indicators
SetIndexStyle(0,DRAW_ARROW);
SetIndexArrow(0,233);
SetIndexBuffer(0,SarUpSig);

SetIndexStyle(1,DRAW_ARROW);
SetIndexArrow(1,234);
SetIndexBuffer(1,SarDownSig);

TT=iTime(Symbol(),0,0);
//----
return(0);
}

int start()
{

int limit;
int counted_bars=IndicatorCounted();
//---- last counted bar will be recounted
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- macd counted in the 1-st buffer
/*if(Period()!=PERIOD_H1)
{
return(0);
}*/

if (BarsToCount < limit)
limit = BarsToCount; 


for(int i=limit; i>=0; i--)
{
datetime time = iTime(Symbol(),0,i);
int shiftM15 = iBarShift(Symbol(), PERIOD_M15, time, false);
int shiftM5 = iBarShift(Symbol(), PERIOD_M5, time, false);
int shiftM1 = iBarShift(Symbol(),PERIOD_M1,time,false);

double OsMa1 = iCustom(Symbol(),PERIOD_M1,"OsMA",30,200,5,0,shiftM1);
double OsMa2 = iCustom(Symbol(),PERIOD_M1,"OsMA",5 ,35,35,0,shiftM1);

double POsMa1 = iCustom(Symbol(),PERIOD_M1,"OsMA",30,200,5,0,shiftM1+1);
double POsMa2 = iCustom(Symbol(),PERIOD_M1,"OsMA",5 ,35,35,0,shiftM1+1);

//double Up_ST = iCustom(Symbol(),0,"4xRider STRONG-TREND Signal v2",14,2,i); 
//double Dn_ST = iCustom(Symbol(),0,"4xRider STRONG-TREND Signal v2",14,1,i);

double SARM15 = iSAR(Symbol(),PERIOD_M15,0.22,0.2,shiftM15);
double SARM5 = iSAR(Symbol(),PERIOD_M5,0.05,0.2,shiftM5);
double SARM1 = iSAR(Symbol(),PERIOD_M1,0.01,0.2,shiftM1);
//double SARlast = iSAR(Symbol(),0,0.02,0.2,i+1);
double CLOSEM15 = iClose(Symbol(),PERIOD_M15,shiftM15);
double CLOSEM5 = iClose(Symbol(),PERIOD_M5,shiftM5);
double CLOSEM1 = iClose(Symbol(),PERIOD_M1,shiftM1);

double PSARM15 = iSAR(Symbol(),PERIOD_M15,0.22,0.2,shiftM15+1);
double PSARM5 = iSAR(Symbol(),PERIOD_M5,0.05,0.2,shiftM5+1);
double PSARM1 = iSAR(Symbol(),PERIOD_M1,0.01,0.2,shiftM1+1);
//double SARlast = iSAR(Symbol(),0,0.02,0.2,i+1);
double PCLOSEM15 = iClose(Symbol(),PERIOD_M15,shiftM15+1 );
double PCLOSEM5 = iClose(Symbol(),PERIOD_M5,shiftM5+1 );
double PCLOSEM1 = iClose(Symbol(),PERIOD_M1,shiftM1+1 );

SarUpSig[i]=EMPTY_VALUE;
SarDownSig[i]=EMPTY_VALUE; 

string buy;
//BUY

//if(Up_ST!=EMPTY_VALUE)
//{
//SarUpSig[1] = 1.6094;
if(SarUpSig[i+1] != EMPTY_VALUE && SARM1<CLOSEM1 && OsMa2>0 &&SARM5<CLOSEM5)
{
SarUpSig[i] = SARM1;
if(TT!=iTime(Symbol(),0,0)&&UseAlert)
{
//string time = TimeToStr(TimeCurrent()); 
Alert("4xRider (BUY) " + Symbol() + " (" + TimeDay(TimeLocal()) + "." + TimeMonth(TimeLocal()) + "." + TimeYear(TimeLocal()) + ")");
PlaySound("alert.wav");
TT=iTime(Symbol(),0,0);
}
}
if((PSARM5>PCLOSEM5&&POsMa1<0&&PSARM1>PCLOSEM1)&&
(SARM5<CLOSEM5&&OsMa1>0&&SARM1<CLOSEM1&&SARM15<CLOSEM15)&& OsMa2>0)
{
SarUpSig[i] = SARM1;
buy = "trading";
if(TT!=iTime(Symbol(),0,0)&&UseAlert)
{
//string time = TimeToStr(TimeCurrent()); 
Alert("4xRider (BUY) " + Symbol() + " (" + TimeDay(TimeLocal()) + "." + TimeMonth(TimeLocal()) + "." + TimeYear(TimeLocal()) + ")");
PlaySound("alert.wav");
TT=iTime(Symbol(),0,0);
}
}

//}
string sell;
//SELL

//if(Dn_ST!=EMPTY_VALUE)
//{
if(SarDownSig[i+1] != EMPTY_VALUE && SARM1>CLOSEM1 && OsMa2<0 && SARM5>CLOSEM5)
{
SarDownSig[i] = SARM1;
if(TT!=iTime(Symbol(),0,0)&&UseAlert)
{
//string time = TimeToStr(TimeCurrent()); 
Alert("4xRider (SELL) " + Symbol() + " (" + TimeDay(TimeLocal()) + "." + TimeMonth(TimeLocal()) + "." + TimeYear(TimeLocal()) + ")");
PlaySound("alert.wav");
TT=iTime(Symbol(),0,0);
}
}
if((PSARM5<PCLOSEM5&&POsMa1>0&&PSARM1<PCLOSEM1)&&
(SARM5>CLOSEM5&&OsMa1<0&&SARM1>CLOSEM1&&SARM15>CLOSEM15)&& OsMa2<0)
{
SarDownSig[i] = SARM1;
if(TT!=iTime(Symbol(),0,0)&&UseAlert)
{
//string time = TimeToStr(TimeCurrent()); 
Alert("4xRider (SELL) " + Symbol() + " (" + TimeDay(TimeLocal()) + "." + TimeMonth(TimeLocal()) + "." + TimeYear(TimeLocal()) + ")");
PlaySound("alert.wav");
TT=iTime(Symbol(),0,0);
}
}

//}

//SELL

}
//----
//Comment("From indicator: ", DoubleToStr(SarUpSig[1], Digits));
return(0);
}

