[color=blue]
inputs:
iMode("No"), { if "auto" code sets xPeriods, if not "auto" code uses iPeriods}
iPeriods(05),
HighColor( red),
LowColor( blue) ;
variables:
xPeriods(60),
xInterval(0),
sFirstPass(true),
HavePrevLines( false ),
TLHigh( 0 ),
TLLow( 0 ),
PushHigh( 0 ),
PushLow( 0 ),
OldPushHigh( 0 ),
OldPushLow( 0 ),
PrevPushHigh( 0 ),
PrevPushLow( 0 ) ;
{first time through}
if sFirstPass
then begin
sFirstPass = false;
{bar test}
If bartype = 4
then xInterval = 94
else
If bartype = 3
then xInterval = 93
else
If bartype = 2
then xInterval = 92
else
If bartype = 1
then begin
xInterval = BarInterval;
end; { If bartype = 1 }
{mode test}
If iMode <> "Auto" and iMode <> "auto" and iMode <> "AUTO"
then xPeriods = iPeriods
else xPeriods = _fPushPeriods(xInterval);
end; {if sFirstPass}
{save old values}
If PushHigh <> PrevPushHigh
then OldPushHigh = PrevPushHigh;
If PushLow <> PrevPushLow
then OldPushLow = PrevPushLow ;
OldPushHigh = PrevPushHigh ;
OldPushLow = PrevPushLow ;
PrevPushHigh = PushHigh ;
PrevPushLow = PushLow ;
{ high / low for period }
PushHigh = Highest( H, xPeriods);
PushLow = Lowest( L, xPeriods) ;
If PushHigh <> H
and PushHigh < PrevPushHigh
then PushHigh = PrevPushHigh;
If PushLow <> L
and PushLow > PrevPushLow
then PushLow = PrevPushLow;
plot1(PushLow, "PushLow", LowColor);
plot2(PushHigh, "PushHigh", HighColor);
#function _fPushPeriods
inputs: iInterval(NumericSimple);
variables: xPeriods(60);
{ calculations }
If iInterval < 5 then xPeriods = 60 else
If iInterval < 10 then xPeriods = 45 else
If iInterval = 10 then xPeriods = 6 else
If iInterval = 15 then xPeriods = 12 else
If iInterval = 30 then xPeriods = 4 else
If iInterval = 60 then xPeriods = 6 else
If iInterval > 60 then xPeriods = 10;
_fPushPeriods = xPeriods;
{==END: _fPushPeriods ==}
[/color]