Hello Joris,
> 1. You compute the HHVMax (C) and LLVMin(C) rather than HHVMax (H) and
> LLVMin(L), which can cause some overlap
True. I used C just as an example but if the need is to plot price your comment
is perfect
> 2. In the presence of RHS blank bars an error message appears.
>
True, as discussed with Faragasso
> 3. Since AB 5.25 (I believe) there are two undocumented functions
> HighestVisibleValue() and LowestVisibleValue();
this helped a lot (I missed those new functions, Thanks to Tomasz) solving:
a) the blank bars bugs
b) the case if the indicator is still EMPTY as at the very first bars
I still prefer the fuction approach because I believe that it's more
comfortable, but, of course, it's a personal approach
here below the code revised
thank you very much
Bisto
function MinZone( array, PercZoneLow, PercZoneHigh )
{
HHVMax = HighestVisibleValue( array );
LLVMin = LowestVisibleValue( array );
MinZ = ( PercZoneLow * HHVMax - PercZoneHigh * LLVMin ) / ( PercZoneLow -
PercZoneHigh );
return MinZ ;
}
function MaxZone( array, PercZoneLow, PercZoneHigh )
{
HHVMax = HighestVisibleValue( array );
LLVMin = LowestVisibleValue( array );
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));