//+------------------------------------------------------------------+
//| SAR Oscillator                                                   |
//+------------------------------------------------------------------+

//---- indicator settings
var : indicator_buffers(5);
 
//---- indicator buffers
var : pas(0.02),maxx(0.2);
array : ind_buffer1[1000](0),ind_buffer1s[1000](0);
array : ind_buffer2[1000](0),ind_buffer2s[1000](0);
array : ind_buffer3[1000](0);
array : ind_buffer4[1000](0);
array : fastcci[1000](0);
 
var : limitt(0);
var : counted_bars(0),IndicatorCounted(0);
var : prev(0),current(0);
var : sarosc(0);
var : ii(0);
var : upp(true);

// countedBars Լ  Ƿ .
counted_bars = 30;

//---- check for possible errors
if (counted_bars > 0) then {
   //---- last counted bar will be recounted
	if (counted_bars > 0) then {
    	counted_bars = counted_bars-1;
	}

   	limitt = counted_bars;
//---- macd counted in the 1-st additional buffer
	ii=0;
   	for ii = 0 to limitt-1
   	{
    	ind_buffer3[ii]=C[ii]-SAR(pas,maxx);
      	ind_buffer4[ii]=C[ii]-SAR(pas,maxx);
  	}
  
//---- dispatch values between 2 buffers

	upp=true;
	ii = limitt - 1;
   	while (ii != 0)
   	{
		current=ind_buffer3[ii];
      	prev=ind_buffer3[ii+1];
      
      	//  ڿ   
        //   Ϲ  
       	if (((current<0)&&(prev>0))||(current<0)) then { upp = false;}    
       	if (((current>0)&&(prev<0))||(current>0)) then { upp = true;}      

      	if(!upp) then
        {
         	if(current > prev) then
           	{
            	ind_buffer2s[ii]=current;
            	ind_buffer2[ii]=0.0;
            	ind_buffer1[ii]=0.0;
            	ind_buffer1s[ii]=0.0;             
           	}        
         	else
           	{
            	ind_buffer2[ii]=current;
            	ind_buffer2s[ii]=0.0;
            	ind_buffer1[ii]=0.0;
            	ind_buffer1s[ii]=0.0;            
           	} 
   		plot1(ind_buffer1[ii], "sarosc1",green,def,0);
   		plot2(ind_buffer1s[ii], "sarosc2",green,def,0);
   		plot3(ind_buffer2[ii], "sarosc3",red,def,0);
   		plot4(ind_buffer2s[ii], "sarosc4",red,def,0);
   		plot5(ind_buffer3[ii], "sarosc5",black,def,0);
        }
        else
        {
        	if(current < prev) then
           	{
            	ind_buffer1s[ii]=current;
            	ind_buffer1[ii]=0.0;
            	ind_buffer2[ii]=0.0;
            	ind_buffer2s[ii]=0.0;
           	}
        	else
           	{
            	ind_buffer1[ii]=current;
            	ind_buffer1s[ii]=0.0;
            	ind_buffer2[ii]=0.0;
            	ind_buffer2s[ii]=0.0;
            }           
   		plot1(ind_buffer1[ii], "sarosc1",green,def,0);
   		plot2(ind_buffer1s[ii], "sarosc2",green,def,0);
   		plot3(ind_buffer2[ii], "sarosc3",red,def,0);
   		plot4(ind_buffer2s[ii], "sarosc4",red,def,0);
   		plot5(ind_buffer3[ii], "sarosc5",black,def,0);
        }
   		ii = ii - 1;
     }
}

PlotBaseLine1(0, "ؼ1");
