You are on page 1of 4

SetBarsRequired(100000,100000);

symbol = Name();
ccy2= StrRight(symbol,3);
Ccy1= StrLeft(symbol,3);
decimals=IIf(ccy2 == "JPY" || Ccy1 == "XAU", 100, 10000);
Reverse = 3;//Param("Reverse",3, 1, 5, 1);

procedure pf(box)
{
global x;
global direction;
global range;
global Cl;
global Chg2;
j = 0;
Lo[0] = Box * ceil(L[0]/Box) ;
Hi[0] = Lo[0] + box;
direction = 0;
range = 0;

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


{
if(direction[j] == 0)
{
if(L[i] <= Lo[j] - Box)
{
Chg = Lo[j] - L[i];
n= floor(Chg/box);
Lo[j] = Lo[j] - n* box;
}
else
{
if(H[i] >= Lo[j] + Reverse*Box)
{
Chg = H[i] - Lo[j];
n = floor(Chg/box);
j++;
direction[j] = 1;
Hi[j] = Lo[j-1] + n* Box;
Lo[j] = Lo[j-1] + Box;
}
}
}
else
{
if(H[i] >= Hi[j] + Box)
{
Chg = H[i] - Hi[j];
n= floor(Chg/box);
Hi[j] = Hi[j] + n*box;
}
else
{
if(L[i] <= Hi[j] - Reverse * Box )
{
Chg = Hi[j] - L[i];
n= floor(Chg/box);
j++;
direction[j] = 0;
Lo[j] = Hi[j-1] - n*box;
Hi[j] = Hi[j-1] - Box;

}
}
}

}
x = BarCount - 1;
delta = x -j;
direction = Ref(direction, - delta);
Hi = Ref(Hi, -delta) + Box/2;
Lo = Ref(Lo, -delta)- Box/2;
Cl = IIf(direction == 1, Hi, Lo);
Op = IIf(direction == 1, Cl - Box, Cl + Box);
range = round((Hi-Lo)/box);
Chg2 = round(Cl - Ref(Cl, -2)/box);
}

pattern = "";
doubleTop = "";
tripleTop = "";
tripleBot = "";
AscTriangle = "";
DescTriangle = "";
doubleBot ="";
rectangle = "";
SymTriangle = "";
Catapult = "";

_SECTION_BEGIN("Exploration Settings");
fr = Param("from", 3, 3, 100,1);
to = Param("to", 50, 10, 100,1)+1;
_SECTION_END();

for (b = fr; b<to; b++)


{
Box = b/decimals;
pf(box);
btxt = NumToStr(b, 3.0);

eq2 = Cl[x] == Cl[x-2];


eq3 = eq2 && Cl[x-2] == Cl[x-4];

if(eq2)

{ if (direction[x] )
doubleTop = doubleTop + " " + btxt;
else
doubleBot = doubleBot + " " + btxt;
}

if (eq3)
{
if (direction[x] )
tripletop = tripletop + " " + btxt;
else
tripleBot = tripleBot + " " + btxt;
}

if ( eq3 == Cl[x-4]&& range[x-3] > range[x-1] && range[x-4] > 1.2*


range[x-3])
{
if(direction[x])
AscTriangle = AscTriangle + " " + btxt;
else
DescTriangle = DescTriangle + " " + btxt;
}

match = 0;
for ( num = 1; num< 5; num++)
{
if( range[x]- range[x-num]==0)
match ++;
}
if (match ==4)
rectangle = rectangle + " " + btxt;

if (range[x]- range[x-1]== range[x-1]- range[x-2] && range[x-1]- range[x-2]


== range[x-2] - range[x-3]
&& range[x]< range[x-1]&& range[x-4] > 1.2* range[x-3])
SymTriangle = SymTriangle + " " + btxt;

C1 = eq2 && Cl[x-4] == Cl[x-6];


C2 = AlmostEqual(Cl[x-2] - Cl[x-4], -box,50)&& !direction[x];
C3 = AlmostEqual(Cl[x-2] - Cl[x-4], box,50) && direction[x];
C4 = C2 || C3;
if( C1 && C2 || C1 && C3)
Catapult = Catapult + " " + btxt;
}

Filter = 1;
format = 8.0;
CellWidth = 70;
//AddTextColumn( doubleTop, "DoubleTop", format, colorBlue,
colorDefault, CellWidth);
//AddTextColumn( doublebot, "DoubleBottom", format, colorRed,
colorDefault, CellWidth);
AddTextColumn( tripleTop, "TripleTop", format, colorBlue,
colorDefault, CellWidth);
AddTextColumn( tripleBot, "TripleBottom", format, colorRed,
colorDefault, CellWidth);
AddTextColumn( AscTriangle, "AscTriangle", format, colorBlue,
colorDefault, CellWidth);
AddTextColumn( DescTriangle, "DescTriangle", format, colorRed,
colorDefault, CellWidth);
AddTextColumn( rectangle, "Range", format, colorGrey50,
colorDefault, CellWidth);
AddTextColumn( symTriangle, "SymTriangle", format, colorGrey50,
colorDefault, CellWidth);
AddTextColumn( catapult, "Catapult", format, colorGrey50,
colorDefault, CellWidth);

You might also like