// Downloaded From https://www.WiseStockTrader.com
// Three Line Break or TLB 
// 3 line Break Chart
//Modified Version to Plot TLB Bars in Synch with the Time Frame being Charted
// Custom Indicator, date axis does not apply
// i compare my TLB chart with broker and another software
// visual result in almost the same, but the 3 have small difference

SetBarsRequired(10000,10000);

// initialize first element
NumBar = 0;
LastHigh=Close[1];
LastLow=Close[1];
LastStartHigh=Close[1];
LastStartLow=Close[1];
Plotb = Close[1];
Plote = Close[1];

// Loop to produce the TLB values 

//for( i=1; i<BarCount-1; i++ )
for( i=1; i<BarCount; i++ )
{
if (numbar > 3 )
{
M1=Max(TLBCB[numbar],TLBCE[numbar]);
M2=Max(TLBCB[numbar-1],TLBCE[numbar-1]);
M3=Max(TLBCB[numbar-2],TLBCE[numbar-2]);
m4=Max(m1,m2);
LastHigh=Max(m4,m3);

M1=Min(TLBCB[numbar],TLBCE[numbar]);
M2=Min(TLBCB[numbar-1],TLBCE[numbar-1]);
M3=Min(TLBCB[numbar-2],TLBCE[numbar-2]);
m4=Min(m1,m2);
LastLow=Min(m4,m3);
Plotb[i]=Plotb[i-1];
Plote[i]=Plote[i-1];
}

if( Close[i]> Lasthigh)
{
numbar++;
TLBCB[numbar]=LastStartHigh; // TLBCB Three Line Break Chart Begin (of bar)
TLBCE[numbar]=Close[i]; // TLBCB Three Line Break Chart End (of bar)
//mod
PlotB[i]=LastStartHigh;
PlotE[i]=Close[i];
//modend
LastStartlow=LastHigh;
LastHigh=Close[i];
LastStartHigh=Close[i];
}

if( Close[i]< LastLow)
{
numbar++;
TLBCB[numbar]=LastStartLow;
TLBCE[numbar]=Close[i];
//mod
PlotB[i]=LastStartLow;
PlotE[i]=Close[i];
//modend
LastStartHigh=LastStartLow;
Lastlow=Close[i];
LastStartlow=Close[i];
}


} // for

// move the chart to right end of chart space, ie last brick on last bar position
//delta = BarCount-1 - numbar;

//TLBCB = Ref( TLBCB, -delta );
//TLBCE = Ref( TLBCE, -delta );

//rO = TLBCB;
//rC = TLBCE;
//mod
rO = PlotB;
rC = PlotE;
//mod end
rH = Max(rC,rO);
rL = Min(rC,rO);

// plot chart
PlotOHLC( rO, rH, rL, rC, "TLB" , colorBlack, styleCandle);
GraphXSpace=1;

Title = Name() + " - {{INTERVAL}} {{DATE}} - TLB Chart Plot : ";