Could someone help me make this indicator not repaint? (If thats even possible)

 

I know nothing about coding and I've been using this indicator only to find out it repaints. 

Any help is appreciated.


Here's the code.


//+------------------------------------------------------------------+

//|                                                 SilverTrend .mq4 |
//|                             SilverTrend  rewritten by CrazyChart |
//|                                                 http://viac.ru/  |
//|                  modified by Kalenzo bartlomiej.gorski@gmail.com |
//+------------------------------------------------------------------+
#property copyright "SilverTrend  rewritten by CrazyChart"
#property link      "http://viac.ru/ "

#property indicator_separate_window
#property indicator_buffers 2
#property indicator_color1 DeepSkyBlue  //Red  //Aqua
#property indicator_color2 Red

extern int       SSP=7;
extern double    Kmax=50.6; //24 21.6 21.6 
extern int       CountBars=300;

//---- buffers
double ExtMapBuffer1[];
double ExtMapBuffer2[];
double ExtHBuffer1[];
double ExtHBuffer2[];




//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   IndicatorBuffers(4);
   SetIndexStyle(0,DRAW_HISTOGRAM,0,2);  //Red
   SetIndexBuffer(0,ExtHBuffer1);
   SetIndexStyle(1,DRAW_HISTOGRAM,0,2);  //Aqua
   SetIndexBuffer(1,ExtHBuffer2);
   
   SetIndexBuffer(2,ExtMapBuffer1);
   SetIndexBuffer(3,ExtMapBuffer2);

   IndicatorShortName("FxTrend v2("+SSP+")");
   
//----
   return(0);
  }
//+------------------------------------------------------------------+
//| Custor indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {

   return(0);
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
 
  if (CountBars>=Bars) CountBars=Bars;
  
   SetIndexDrawBegin(0,Bars-CountBars+SSP);
   SetIndexDrawBegin(1,Bars-CountBars+SSP);
   
  int i, counted_bars=IndicatorCounted();
  double SsMax, SsMin, smin, smax; 
  
  if(Bars<=SSP+1) return(0);

if(counted_bars<SSP+1)
   {
      for(i=1;i<=SSP;i++) ExtMapBuffer1[CountBars-i]=0.0;
      for(i=1;i<=SSP;i++) ExtMapBuffer2[CountBars-i]=0.0;
   }

for(i=CountBars-SSP;i>=0;i--) { 


  SsMax = High[Highest(NULL,0,MODE_HIGH,SSP,i-SSP+1)]; 
  SsMin = Low[Lowest(NULL,0,MODE_LOW,SSP,i-SSP+1)]; 
  
   smax = SsMax-(SsMax-SsMin)*Kmax/100;
       
   ExtMapBuffer1[i-SSP+6]=smax; 
   ExtMapBuffer2[i-SSP-1]=smax; 

}
   for(int b=CountBars-SSP;b>=0;b--)
   {
      if(ExtMapBuffer1[b]>ExtMapBuffer2[b])
      {
         ExtHBuffer1[b]=1;
         ExtHBuffer2[b]=0;
      }
      else
      {
         ExtHBuffer1[b]=0;
         ExtHBuffer2[b]=1;
      }
      
   }

return(0);
}
Files:
 
Nick Roberts :

I know nothing about coding and I've been using this indicator only to find out it repaints. 

Any help is appreciated.


Here's the code.


//+------------------------------------------------------------------+

 //|                                                 SilverTrend .mq4 |
 //|                             SilverTrend  rewritten by CrazyChart |
 //|                                                 http://viac.ru/&amp;nbsp; |
 //|                  modified by Kalenzo bartlomiej.gorski@gmail.com |
 //+------------------------------------------------------------------+
 #property copyright "SilverTrend  rewritten by CrazyChart"
 #property link        "http://viac.ru/ "

 #property indicator_separate_window
 #property indicator_buffers 2
 #property indicator_color1 DeepSkyBlue   //Red  //Aqua
 #property indicator_color2 Red

 extern int        SSP= 7 ;
 extern double     Kmax= 50.6 ; //24 21.6 21.6 
extern int        CountBars= 300 ;

 //---- buffers
 double ExtMapBuffer1[];
 double ExtMapBuffer2[];
 double ExtHBuffer1[];
 double ExtHBuffer2[];




 //+------------------------------------------------------------------+
 //| Custom indicator initialization function                         |
 //+------------------------------------------------------------------+
 int init()
  {
 //---- indicators 
   IndicatorBuffers( 4 );
   SetIndexStyle( 0 , DRAW_HISTOGRAM , 0 , 2 );   //Red 
   SetIndexBuffer ( 0 ,ExtHBuffer1);
   SetIndexStyle( 1 , DRAW_HISTOGRAM , 0 , 2 );   //Aqua 
   SetIndexBuffer ( 1 ,ExtHBuffer2);
   
   SetIndexBuffer ( 2 ,ExtMapBuffer1);
   SetIndexBuffer ( 3 ,ExtMapBuffer2);

   IndicatorShortName( "FxTrend v2(" +SSP+ ")" );
   
//---- 
   return ( 0 );
  }
 //+------------------------------------------------------------------+
 //| Custor indicator deinitialization function                       |
 //+------------------------------------------------------------------+
 int deinit()
  {

   return ( 0 );
  }
 //+------------------------------------------------------------------+
 //| Custom indicator iteration function                              |
 //+------------------------------------------------------------------+
 int start()
  {
 
   if (CountBars>= Bars ) CountBars= Bars ;
  
   SetIndexDrawBegin( 0 , Bars -CountBars+SSP);
   SetIndexDrawBegin( 1 , Bars -CountBars+SSP);
   
   int i, counted_bars=IndicatorCounted();
   double SsMax, SsMin, smin, smax; 
  
   if ( Bars <=SSP+ 1 ) return ( 0 );

 if (counted_bars<SSP+ 1 )
   {
       for (i= 1 ;i<=SSP;i++) ExtMapBuffer1[CountBars-i]= 0.0 ;
       for (i= 1 ;i<=SSP;i++) ExtMapBuffer2[CountBars-i]= 0.0 ;
   }

 for (i=CountBars-SSP;i>= 0 ;i--) { 


  SsMax = High[Highest( NULL , 0 , MODE_HIGH ,SSP,i-SSP+ 1 )]; 
  SsMin = Low[Lowest( NULL , 0 , MODE_LOW ,SSP,i-SSP+ 1 )]; 
  
   smax = SsMax-(SsMax-SsMin)*Kmax/ 100 ;
       
   ExtMapBuffer1[i-SSP+ 6 ]=smax; 
   ExtMapBuffer2[i-SSP- 1 ]=smax; 

}
   for ( int b=CountBars-SSP;b>= 0 ;b--)
   {
       if (ExtMapBuffer1[b]>ExtMapBuffer2[b])
      {
         ExtHBuffer1[b]= 1 ;
         ExtHBuffer2[b]= 0 ;
      }
       else 
      {
         ExtHBuffer1[b]= 0 ;
         ExtHBuffer2[b]= 1 ;
      }
      
   }

 return ( 0 );
}

This indicator can be redesigned as non-repaint, but then it will become useless. This indicator generates signals on each new high and low close.

 
Ahmet Metin Yilmaz #:

This indicator can be redesigned as non-repaint, but then it will become useless. This indicator generates signals on each new high and low close.

Isn't a repainting indicator useless anyway ?
 
Alain Verleyen # :
Isn't a repainting indicator useless anyway ?

It depends on your expectation. For example, if your expectation in this indicator is to reference the lowest and highest values within a certain period, it may work. However, it would be misleading to enter the transaction with every signal produced on live.