|
ZigZag
#418229
02/22/13 11:39
02/22/13 11:39
|
Joined: Nov 2012
Posts: 209
SFF
OP
Member
|
OP
Member
Joined: Nov 2012
Posts: 209
|
It says an error which is: syntax error < case 1: // look for peak > . I don't know why this happen while cace 0 is fine?.
function run(){
BarPeriod = 15;
LookBack = 500;
StartDate = 20120201;
NumDays = 1;
set(TICKS);
int ExtDepth=12;
int ExtDeviation=5;
int ExtBackstep=3;
int whatlookfor;
var curlow;
var curhigh;
var lastlow;
var lasthigh;
int lasthighpos;
int lastlowpos;
var res;
vars ZigzagBuffer= series(0.0);
vars LowMapBuffer=series(0.0);
vars HighMapBuffer=series(0.0);
var val=LL(ExtDepth);
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((priceLow()-val)>(ExtDeviation*PIP)) val=0.0;
else
{
int back;
for(back=1; back<=ExtBackstep; back++)
{
res=LowMapBuffer[0+back];
if((res!=0)&&(res>val)) LowMapBuffer[0+back]=0.0;
}
}
}
if (priceLow()==val) LowMapBuffer[0]=val; else LowMapBuffer[0]=0.0;
val=HH(ExtDepth);
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-priceHigh())>(ExtDeviation*PIP)) val=0.0;
else
{
int back;
for(back=1; back<=ExtBackstep; back++)
{
res=HighMapBuffer[0+back];
if((res!=0)&&(res<val)) HighMapBuffer[0+back]=0.0;
}
}
}
if (priceHigh()==val) HighMapBuffer[0]=val; else HighMapBuffer[0]=0.0;
if (whatlookfor==0)
{
lastlow=0;
lasthigh=0;
}
else
{
lastlow=curlow;
lasthigh=curhigh;
}
res=0.0;
switch(whatlookfor)
{
case 0:
if (lastlow==0 && lasthigh==0)
{
if (HighMapBuffer[0]!=0)
{
lasthigh=priceHigh();
lasthighpos=0;
whatlookfor=-1;
ZigzagBuffer[0]=lasthigh;
res=1;
}
if (LowMapBuffer[0]!=0)
{
lastlow=priceLow();
lastlowpos=0;
whatlookfor=1;
ZigzagBuffer[0]=lastlow;
res=1;
}
}
break;
case 1:
if (LowMapBuffer[0]!=0.0 && LowMapBuffer[0]<lastlow && HighMapBuffer[0]==0.0)
{
ZigzagBuffer[lastlowpos]=0.0;
lastlowpos=0;
lastlow=LowMapBuffer[0];
ZigzagBuffer[0]=lastlow;
res=1;
}
if (HighMapBuffer[0]!=0.0 && LowMapBuffer[0]==0.0)
{
lasthigh=HighMapBuffer[0];
lasthighpos=0;
ZigzagBuffer[0]=lasthigh;
whatlookfor=-1;
res=1;
}
break;
case -1: // look for lawn
if (HighMapBuffer[0]!=0.0 && HighMapBuffer[0]>lasthigh && LowMapBuffer[0]==0.0)
{
ZigzagBuffer[lasthighpos]=0.0;
lasthighpos=0;
lasthigh=HighMapBuffer[0];
ZigzagBuffer[0]=lasthigh;
}
if (LowMapBuffer[0]!=0.0 && HighMapBuffer[0]==0.0)
{
lastlow=LowMapBuffer[0];
lastlowpos=0;
ZigzagBuffer[0]=lastlow;
whatlookfor=1;
}
break;
default: return;
}
plot("Signal", HighMapBuffer[0], 0, RED);
plot("Signal2", LowMapBuffer[0], 0, RED);
}
Last edited by SFF; 02/23/13 00:55.
|
|
|
Re: ZigZag
[Re: jcl]
#419099
03/06/13 10:02
03/06/13 10:02
|
Joined: Nov 2012
Posts: 209
SFF
OP
Member
|
OP
Member
Joined: Nov 2012
Posts: 209
|
Thanks. The updated code is here but the plot looks right but the line is ugly in Zorro. How Can I plot the zigzag line like in MT4? The original version is a MT4 zigzag.
int ExtDepth=12;
int ExtDeviation=5;
int ExtBackstep=3;
int whatlookfor;
var curlow;
var curhigh;
var lastlow;
var lasthigh;
int lasthighpos;
int lastlowpos;
var res;
function run(){
set(PLOTPRICE+PLOTNOW);
BarPeriod = 15;
LookBack = 500;
StartDate = 20120201;
NumDays = 1;
set(TICKS);
vars ZigzagBuffer= series(0.0);
vars LowMapBuffer=series(0.0);
vars HighMapBuffer=series(0.0);
var val=LL(ExtDepth);
if(val==lastlow) val=0.0;
else
{
lastlow=val;
if((priceLow()-val)>(ExtDeviation*PIP)) val=0.0;
else
{
int back;
for(back=1; back<=ExtBackstep; back++)
{
res=LowMapBuffer[0+back];
if((res!=0)&&(res>val)) LowMapBuffer[0+back]=0.0;
}
}
}
if (priceLow()==val) LowMapBuffer[0]=val; else LowMapBuffer[0]=0.0;
val=HH(ExtDepth);
if(val==lasthigh) val=0.0;
else
{
lasthigh=val;
if((val-priceHigh())>(ExtDeviation*PIP)) val=0.0;
else
{
int back;
for(back=1; back<=ExtBackstep; back++)
{
res=HighMapBuffer[0+back];
if((res!=0)&&(res<val)) HighMapBuffer[0+back]=0.0;
}
}
}
if (priceHigh()==val) HighMapBuffer[0]=val; else HighMapBuffer[0]=0.0;
if (whatlookfor==0)
{
lastlow=0;
lasthigh=0;
}
else
{
lastlow=curlow;
lasthigh=curhigh;
}
res=0.0;
switch(whatlookfor)
{
case 0:
if (lastlow==0 && lasthigh==0)
{
if (HighMapBuffer[0]!=0)
{
lasthigh=priceHigh();
lasthighpos=0;
whatlookfor=-1;
ZigzagBuffer[0]=lasthigh;
res=1;
}
if (LowMapBuffer[0]!=0)
{
lastlow=priceLow();
lastlowpos=0;
whatlookfor=1;
ZigzagBuffer[0]=lastlow;
res=1;
}
}
break;
case 1:
if (LowMapBuffer[0]!=0.0 && LowMapBuffer[0]<lastlow && HighMapBuffer[0]==0.0)
{
ZigzagBuffer[lastlowpos]=0.0;
lastlowpos=0;
lastlow=LowMapBuffer[0];
ZigzagBuffer[0]=lastlow;
res=1;
}
if (HighMapBuffer[0]!=0.0 && LowMapBuffer[0]==0.0)
{
lasthigh=HighMapBuffer[0];
lasthighpos=0;
ZigzagBuffer[0]=lasthigh;
whatlookfor=-1;
res=1;
}
break;
case -1: // look for lawn
if (HighMapBuffer[0]!=0.0 && HighMapBuffer[0]>lasthigh && LowMapBuffer[0]==0.0)
{
ZigzagBuffer[lasthighpos]=0.0;
lasthighpos=0;
lasthigh=HighMapBuffer[0];
ZigzagBuffer[0]=lasthigh;
}
if (LowMapBuffer[0]!=0.0 && HighMapBuffer[0]==0.0)
{
lastlow=LowMapBuffer[0];
lastlowpos=0;
ZigzagBuffer[0]=lastlow;
whatlookfor=1;
}
break;
default: return;
}
plot("Signal", HighMapBuffer[0], 0, RED);
plot("Signal2", LowMapBuffer[0], 0, BLUE);
plot("Signal2", ZigzagBuffer[0], 0, RED);
}
Last edited by SFF; 03/06/13 10:04.
|
|
|
|