You are right!
I don't use blank bars at the right indeed, so I 
  never noticed it before
if you set them at 0 it works
I will 
  appreciate if you'll keep me informed if you change the code to solve this 
  bug
Bisto
--- In amibroker@xxxxxxxxxps.com, 
  "Anthony Faragasso" <ajf1111@xxx> wrote:
>
> 
  Hello,
> 
> I believe it is because if you have blank bars to the 
  right of the last visible price...it produces error....
> 
> 
  
> ----- Original Message ----- 
> From: Bisto 
> To: amibroker@xxxxxxxxxps.com 
  
> Sent: Tuesday, November 17, 2009 4:05 PM
> Subject: [amibroker] 
  Re: Is it possible to divide an indicator pane into several zones?
> 
  
> 
> 
> I post it again with copy & paste from AB where 
  it's running ok... who knows?
> 
> function MinZone( array, 
  PercZoneLow, PercZoneHigh )
> {
> fvb = Status( "firstvisiblebar" 
  );
> lvb = Status( "lastvisiblebar" );
> HHVMax = 
  -100000000;
> LLVMin = 100000000;
> 
> for ( i = fvb; i 
  <= Lvb; i++ )
> {
> HHVMax = Max( array[ i ], HHVMax );
> 
  LLVMin = Min( array[ i ], LLVMin );
> }
> 
> MinZ = ( 
  PercZoneLow * HHVMax - PercZoneHigh * LLVMin ) / ( PercZoneLow - PercZoneHigh 
  );
> 
> return MinZ ;
> }
> 
> function MaxZone( 
  array, PercZoneLow, PercZoneHigh )
> {
> fvb = Status( 
  "firstvisiblebar" );
> lvb = Status( "lastvisiblebar" );
> HHVMax 
  = -100000000;
> LLVMin = 100000000;
> 
> for ( i = fvb; i 
  <= Lvb; i++ )
> {
> HHVMax = Max( array[ i ], HHVMax );
> 
  LLVMin = Min( array[ i ], LLVMin );
> }
> 
> MinZ = ( 
  PercZoneLow * HHVMax - PercZoneHigh * LLVMin ) / ( PercZoneLow - PercZoneHigh 
  );
> 
> MaxZ = ( LLVMin - MinZ ) / PercZoneLow + MinZ;
> 
  
> return MaxZ ;
> }
> 
> // example: use the above 
  functions to define min and max values of styleownscale
> 
> // 
  please note that axes type has to be linear (logartimic type requests little 
  modification in the code)
> // please also note that plot style has to 
  be ALSO styleOwnScale
> 
> PercZoneLow1 = 
  Param("PercZoneLow1",0.3,0.000001,1,0.05) ;
> PercZoneHigh1 = 
  Param("PercZoneHigh1 ",1,0.000001,1,0.05) ;
> 
> Plot( 
  C, "C in zone", colorBlack, styleCandle | styleOwnScale, 
  MinZone(C,PercZoneLow1,PercZoneHigh1), 
  MaxZone(C,PercZoneLow1,PercZoneHigh1));
> 
> 
  PercZoneLow2 = Param("PercZoneLow2",0.00001,0.000001,1,0.05) 
  ;
> PercZoneHigh2 = PercZoneLow1 ;
> 
> // in case of time 
  consuming array avoid to calculate 3 times
> 
  arraylongtobecalculated = al = ATR(14);
> 
> Plot( al, 
  "ATR(14) in zone", colorRed, styleLine | styleOwnScale, 
  MinZone(al,PercZoneLow2,PercZoneHigh2), 
  MaxZone(al,PercZoneLow2,PercZoneHigh2));
> 
> --- In amibroker@xxxxxxxxxps.com, 
  "Anthony Faragasso" <ajf1111@> wrote:
> >
> > 
  Hello,
> > 
> > Formula returns Subscript out of range 
  error..
> >
>