.

# Simple Heikin Ashi with 3 Lines break - Amibroker AFL Code

### Click Image To Enlarge. Please Rate And Comment.

```GraphXSpace=7;

numline = Param("Break",2, 2, 10, 1);
j =0;
Line[j]= C[0];
Op[j]= C[0];
direction = 0;
up=0; // count up lines
down=0;// count down lines
Count=1; // count lines

for( i = 1; i < BarCount; i++ )
{

if(direction[j] == 0) // continues down
{
if(C[i] < Line[j] )
{
j++;
direction[j] = 0;
Line[j] = C[i];
Op[j] =Line[j-1];
down++;
up=0;
Count++;
}
else
{
if(Count==1 && C[i] > OP[j] )// I-st reverse
{
j++;
direction[j] = 1;
Line[j] = C[i];
Op[j] = Op[j-1];
up++;
down=0;
Count++;
}
if(Count>1 && down  ==1 && C[i] > Line[j-1])//  reverse after 1 down line
{
j++;
direction[j] = 1;
Line[j] = C[i];
Op[j] = Op[j-1];
up++;
down=0;
Count++;
}
if(Count >1  && down  >1 && down < numline && C[i] > Op[j-1])//simple reverse
{
j++;
direction[j] = 1;
Line[j] = C[i];
Op[j] = Op[j-1];
up++;
down=0;
Count++;
}
if(  down >= numline && C[i] > Op[j-(numline -1)]) // white trunaround line
{
j++;
direction[j] = 1;
Line[j] = C[i];
Op[j] = Op[j-1];
up++;
down=0;
Count++;
}
}

}
else // continues up
{
if(C[i] > Line[j])
{
j++;
direction[j] = 1;
Line[j] = C[i];
op[j] = Line[j-1];
up++;
down=0;
Count++;
}
else
{
if(Count==1  && C[i] < OP[j] )// I-st reverse
{
j++;
direction[j] = 0;
Line[j] =C[i];
Op[j] = Op[j-1];
down++;
up=0;
Count++;

}
if(Count>1 && up  ==1 && C[i] < Line[j-1])//  reverse after 1 up line
{
j++;
direction[j] = 0;
Line[j] =C[i];
Op[j] = Op[j-1];
down++;
up=0;
Count++;
}
if( Count>1 && up  >1 && up < numline && C[i] < Op[j-1]) //simple reverse
{
j++;
direction[j] = 0;
Line[j] =C[i];
Op[j] = Op[j-1];
down++;
up=0;
Count++;
}
if( up >= numline && C[i] < Op[j-(numline -1)])//black trunaround line

{
j++;
direction[j] = 0;
Line[j] =C[i];
Op[j] = Op[j-1];
down++;
up=0;
Count++;
}
}
}
}
delta = BarCount - j -1;
direction = Ref(direction, - delta);
C= Ref(Line, - delta);
O=(Ref(Op,-delta));
H= L=C;

Plot(C,"", 39, styleCandle);

Title = Name() + "  Three Line Break" +"\n"+
"Value = " + SelectedValue(C)  +"\n"+
"Break = " + numline;
```