Skip to main content

Triangle Pattern for Amibroker (AFL)

i4you about 14 years ago Amibroker (AFL)

  • Rating:
    5 / 5 (Votes 2)
  • Tags:
    amibroker, pattern

When the Triangle formed just enter the share :)

Screenshots

Indicator / Formula

Copy & Paste Friendly
_SECTION_BEGIN("Traingle 2");
function calculatePosition(array,shift)
{
result = Null;
for( i = 0; i < BarCount; i++ )
{
if (array[ i ] == 1)
{
k = i - shift[ i ];
if( k >= 0 AND k < BarCount ) result[ k ] = 1;
}
}
return result;
}
function pattern_func(PLow,bi,t1,t2,t3,AA,AABar,BB,BBBar,CC,CCBar,nbar)
{ 
pattern =
(t3 == 1) AND (t2 == 3) AND (t1 == 2) AND PLow AND
BBBar - AABar > nbar AND CCBar - BBBar > nbar;

return pattern;
}

// E.M.Pottasch, 2/21/2011
// example code triangle fill using arrays

//SetBarsRequired(sbrAll,sbrAll);
bi = BarIndex();
nbar = Param("nbar",7,2,50,1); 

// define fractals
PHigh = H > Ref(HHV(H,nbar),-1) AND Ref(HHV(H,nbar),nbar) <= H;
PHighPrice = ValueWhen(PHigh,H);
PLow = L < Ref(LLV(L,nbar),-1) AND Ref(LLV(L,nbar),nbar) >= L;
PLowPrice = ValueWhen(PLow,L); 

ll = IIf( PLow AND PLowPrice < Ref(PLowPrice, -1), 1, 0 );
hl = IIf( PLow AND PLowPrice >= Ref(PLowPrice, -1), 2, 0 ); 
lh = IIf( PHigh AND PHighPrice < Ref(PHighPrice, -1), 3, 0 ); 
hh = IIf( PHigh AND PHighPrice >= Ref(PHighPrice, -1), 4, 0 ); 

combi = ll + hl + lh + hh;

t1 = ValueWhen(combi,combi,1); 
t2 = ValueWhen(combi,combi,2); 
t3 = ValueWhen(combi,combi,3); 

AA = ValueWhen(PLow,L,2);
AABar = ValueWhen(PLow,bi,2);
BB = ValueWhen(PHigh,H,1);
BBBar = ValueWhen(PHigh,bi,1);
CC = ValueWhen(PLow,L,1);
CCBar = ValueWhen(PLow,bi,1);

// calculate the end point of the pattern => C
pattern = pattern_func(PLow,bi,t1,t2,t3,AA,AABar,BB,BBBar,CC,CCBar,nbar);

// calculate the starting point of the pattern => A
dBar = IIf(pattern,CCBar-AABar,0);
hhh1 = calculatePosition(pattern,dBar);
// calculate the middle point of the pattern => B
dBar = IIf(pattern,CCBar-BBBar,0);
hhh2 = calculatePosition(pattern,dBar);

// define x-axis range between A-C
rangeAC = Flip(hhh1,pattern);
// define x-axis range between A-B
rangeAB = Flip(hhh1,hhh2);
// define x-axis range between B-C
rangeBC = Flip(hhh2,pattern);

// extend AC
rangeAC = IIf(Ref(rangeAC,-1),Ref(rangeAC,-1),rangeAC);

// now define the legs of the triangle
// AC leg
startval1 = ValueWhen(PLow,L,1); 
endval1 = ValueWhen(PLow,L,0);
startbar1 = ValueWhen(PLow,bi,1); 
endbar1 = ValueWhen(PLow,bi,0); 
aa1 = (endval1-startval1)/(endbar1-startbar1);
bb1 = startval1;
ACLeg = aa1 * (bi - startbar1) + bb1;
ACLeg = IIf(ACLeg AND rangeAC,ACLeg,Null);

// AB leg
startval1 = ValueWhen(PLow,L,1); 
endval1 = ValueWhen(PHigh,H,0); 
startbar1 = ValueWhen(PLow,bi,1); 
endbar1 = ValueWhen(PHigh,bi,0); 
aa1 = (endval1-startval1)/(endbar1-startbar1);
bb1 = startval1;
ABLeg = aa1 * (bi - startbar1) + bb1;
ABLeg = IIf(ABLeg AND rangeAB,ABLeg,Null);

// BC leg
startval1 = ValueWhen(PHigh,H,1); 
endval1 = ValueWhen(PLow,L,0); 
startbar1 = ValueWhen(PHigh,bi,1); 
endbar1 = ValueWhen(PLow,bi,0); 
aa1 = (endval1-startval1)/(endbar1-startbar1);
bb1 = startval1;
BCLeg = aa1 * (bi - startbar1) + bb1;
BCLeg = IIf(BCLeg AND rangeBC,BCLeg,Null);

// define top and bottom array for polygon fill
topLineArray = IIf(ABLeg,ABLeg,BCLeg);
bottomLineArray = ACLeg;
topLineArray = IIf(bottomLineArray AND IsEmpty(topLineArray),bottomLineArray,topLineArray);

// chart
GraphXSpace = 5;
SetChartOptions(0, chartShowDates);
Plot( C, "\nPrice",colorBrightGreen, styleCandle );
PlotShapes(shapeSmallCircle*PLow,colorGreen,0,L,-10);
PlotShapes(shapeSmallCircle*PHigh,colorRed,0,H,10);
PlotShapes(IIf(pattern,shapeUpTriangle,shapeNone),colorBrightGreen,0,L,-25);
PlotShapes(IIf(pattern,shapeHollowUpTriangle,shapeNone),colorWhite,0,L,-25);
//Plot(ACLeg,"",colorWhite,styleLine);
//Plot(ABLeg,"",colorWhite,styleLine);
//Plot(BCLeg,"",colorWhite,styleLine);
Plot(topLineArray,"",colorWhite,styleLine);
Plot(bottomLineArray,"",colorWhite,styleLine);

fillOnOff = ParamToggle("Fill Pattern","Fill Off|Fill On",1); 
if (fillOnOff)
{
PlotOHLC(topLineArray,topLineArray,bottomLineArray,bottomLineArray,"", 
colorAqua, styleCloud | styleNoLabel ); 
SetChartBkColor( ParamColor("background",colorBlack)); 
}
_SECTION_END();

8 comments

over 10 years ago

Just VERY curious. How can comments be made on an indicator that is not approved or displayed !??

5. morgen
over 10 years ago

“over 3 years ago” and “Indicator has not been approved yet” ?!?!?!

over 10 years ago

Approved. Looks like it was missed somehow or the user edited it after it was reviewed.

7. ntadi28
over 10 years ago

Hi, can anyone please guide how to use this AFL,

is it for intra-day? if so what the best time-frame?

over 9 years ago

gives only buy signal,,,,
sir can you please write the same formula for sell signal as well?

Thankyou

Leave Comment

Please login here to leave a comment.