Miscellaneous
0
Views
0
Downloads
0
Favorites
ZigZagc
// ÈÍÄÈÊÀÒÎÐ //
#property indicator_chart_window
#property indicator_buffers 8
#property indicator_color1 Red
#property indicator_color2 DarkSlateGray
#property indicator_color3 DarkSlateGray
#property indicator_color4 Silver
#property indicator_color5 DimGray
#property indicator_color6 DimGray
#property indicator_color7 DarkGreen
#property indicator_color8 SaddleBrown
//---- indicator parameters
extern int ExtDepth=12;
//---- indicator buffers
double LowBuffer[515];
double HighBuffer[515];
double ZgMas[];
double LwMas[];
double HgMas[];
double SrdMas[];
double Lw[];
double Hg[];
double Rd[];
double Gr[];
//====
double wp,wp1,wp2,lastlow,lasthigh;
int sl,sh,sk,sk2,ysh,ysl,ci,ps,pz,
ps1,ps2,ps3,psa,pd,ska,knl,c,histori=500,time;
//====
int init()
{
//---- indicators
IndicatorBuffers(8);
SetIndexStyle(0,DRAW_SECTION);
SetIndexStyle(1,DRAW_SECTION);
SetIndexStyle(2,DRAW_SECTION);
SetIndexStyle(3,DRAW_SECTION);
SetIndexStyle(4,DRAW_SECTION);
SetIndexStyle(5,DRAW_SECTION);
SetIndexStyle(6,DRAW_SECTION);
SetIndexStyle(7,DRAW_SECTION);
SetIndexBuffer(0,ZgMas);
SetIndexBuffer(1,LwMas);
SetIndexBuffer(2,HgMas);
SetIndexBuffer(3,SrdMas);
SetIndexBuffer(4,Lw);
SetIndexBuffer(5,Hg);
SetIndexBuffer(6,Gr);
SetIndexBuffer(7,Rd);
SetIndexEmptyValue(0,0.0);
SetIndexEmptyValue(1,0.0);
SetIndexEmptyValue(2,0.0);
SetIndexEmptyValue(3,0.0);
SetIndexEmptyValue(4,0.0);
SetIndexEmptyValue(5,0.0);
SetIndexEmptyValue(6,0.0);
SetIndexEmptyValue(7,0.0);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int i,y,vl;
double val,kl,kh;
//==============================================//
if(Bars-c>1)c=0;
if(c==0){
ArrayInitialize(LowBuffer,0.0);
ArrayInitialize(HighBuffer,0.0);
ArrayInitialize(SrdMas,0.0);
ArrayInitialize(ZgMas,0.0);
ArrayInitialize(Lw,0.0);
ArrayInitialize(Hg,0.0);
ska=0;psa=0;ysl=0;ysh=0;}
//==============================================//
if(c==0)i=histori; else i=Bars-c; c=Bars;
//==============================================//
if(i==1){sl++;sh++;pd++;ps++;ps1++;ps2++;ps3++;psa++;ysl++;ysh++;pz++;
for(y=histori;y>=-1;y--)
{LowBuffer[y+1]=LowBuffer[y];HighBuffer[y+1]=HighBuffer[y];}}
for(y=i;y>=0;y--) {vl=0;
//==============================//
val=Low[iLowest(NULL,0,MODE_LOW,ExtDepth,y)];
if(val!=lastlow&&val==Low[y]&&HighBuffer[y]==0)
{lastlow=val;if(sk==1){LowBuffer[y]=val; sl=y; sk=-1;vl=-1;}
else{if(val<LowBuffer[sl]){LowBuffer[sl]=0;
LowBuffer[y]=val;sl=y;sk=-1;vl=-1;}}
}
//==================\\\=========//
val=High[iHighest(NULL,0,MODE_HIGH,ExtDepth,y)];
if(val!=lasthigh&&val==High[y]&&LowBuffer[y]==0)
{lasthigh=val;if(sk==-1){HighBuffer[y]=val; sh=y; sk=1;vl=1;}
else{if(val>HighBuffer[sh]){HighBuffer[sh]=0;
HighBuffer[y]=val;sh=y;sk=1;vl=1;}}
}
//====================================================//
if(sk2!=sk){ps3=ps2;ps2=ps1;ps1=ps;wp2=wp1;wp1=wp; sk2=sk;}
if(vl!=0){ps=y; if(sk==1)val=HighBuffer[ps]-HighBuffer[ps2];
if(sk==-1)val=LowBuffer[ps]-LowBuffer[ps2] ; wp=val/(ps2-ps);}
}
//===================================================//
if(ska!=sk)knl=0; if(sk==1&&wp>=wp1&&knl==0) knl=1;
if(sk==-1&&wp<=wp1&&knl==0)knl=-1;
if(ska!=sk||i==1){ArrayCopy(LwMas,LowBuffer);ArrayCopy(HgMas,HighBuffer);}
//============================================//
if((vl!=0&&knl!=0)||i==1||ska!=sk){if(ska==0)pd=ps;
if(sk==1) if(wp<wp1)val=wp1; else val=wp;
if(sk==-1)if(wp>wp1)val=wp1; else val=wp;
if(sk==1) {if(wp<=wp1&&ps!=0)HgMas[ps]=0;if(wp>=wp1&&ps==0&&pd!=0)HgMas[pd]=0;}
if(sk==-1){if(wp>=wp1&&ps!=0)LwMas[ps]=0;if(wp<=wp1&&ps==0&&pd!=0)LwMas[pd]=0;}
if(sk==1) {LwMas[0]=LwMas[ps1]+val*ps1; HgMas[0]=HgMas[ps2]+val*ps2;}
if(sk==-1) {LwMas[0]=LwMas[ps2]+val*ps2; HgMas[0]=HgMas[ps1]+val*ps1;}
pd=ps;}
//===================================================//
if(vl!=0||ska==0){y=0;if(ska==0)y=histori;if(ska==0)pz=ps;
while(y>=0&&ska==0){
if(HighBuffer[y]!=0)ZgMas[y]=HighBuffer[y];
if(LowBuffer[y]!=0) ZgMas[y]=LowBuffer[y];
y--;}
if(ska!=0){if(vl==1)ZgMas[0]=HighBuffer[0];
if(vl==-1)ZgMas[0]=LowBuffer[0];
if(vl==1&&pz!=0&&ska==sk) ZgMas[pz]=0;
if(vl==-1&&pz!=0&&ska==sk)ZgMas[pz]=0;
pz=0;}}
//======================================================//
if((knl!=0&&vl!=0)||i==1||ska!=sk){y=0;if(ska==0)y=histori;
while(y>0){
if(HgMas[y]!=0)
{kh=HgMas[y]-(HgMas[y]-HgMas[ysh])*(ysl-y)/(ysh-y);kl=LwMas[ysl];
SrdMas[ysl]=(kl+kh)/2; ysh=y;}
if(LwMas[y]!=0)
{kl=LwMas[y]-(LwMas[y]-LwMas[ysl])*(ysh-y)/(ysl-y);kh=HgMas[ysh];
SrdMas[ysh]=(kl+kh)/2; ysl=y;}
y--;}
//=========================================================//
if(HgMas[1]==0&&LwMas[1]==0)SrdMas[1]=0;
SrdMas[0]=(HgMas[0]+LwMas[0])/2;
if((knl!=0&&vl!=0)||ska!=sk){
if(ps==0&&psa!=0&&ska==sk)SrdMas[psa]=0;
val=HgMas[0]-LwMas[0];
if(LwMas[ps1]!=0)SrdMas[ps1]=LwMas[ps1]+val/2;
if(HgMas[ps1]!=0)SrdMas[ps1]=HgMas[ps1]-val/2;
if(HgMas[ps]!=0&&ps!=0){SrdMas[ps]=HgMas[ps]-val/2;}
if(LwMas[ps]!=0&&ps!=0){SrdMas[ps]=LwMas[ps]+val/2;}
if(ska!=sk&&ska!=0&&sk==1)
{kl=LwMas[ps1]-(LwMas[ps1]-LwMas[ps3])*(ps2-ps1)/(ps3-ps1);
SrdMas[ps2]=(HgMas[ps2]+kl)/2;}
if(ska!=sk&&ska!=0&&sk==-1)
{kh=HgMas[ps1]-(HgMas[ps1]-HgMas[ps3])*(ps2-ps1)/(ps3-ps1);
SrdMas[ps2]=(LwMas[ps2]+kh)/2;}
psa=ps;}}
//============================================================//
if(ska!=sk){ArrayInitialize(Lw,0.0);ArrayInitialize(Hg,0.0);
ArrayInitialize(Rd,0.0);ArrayInitialize(Gr,0.0);}
if((ska!=sk||i==1)&&((sk==1&&wp>wp1)||(sk==-1&&wp<wp1))){
if(sk==1) {Hg[ps2]=HgMas[ps2];Hg[0]=HgMas[ps2]+wp1*ps2;
Lw[ps1]=LwMas[ps1];Lw[0]=LwMas[ps1]+wp1*ps1;}
if(sk==-1){Hg[ps1]=HgMas[ps1];Hg[0]=HgMas[ps1]+wp1*ps1;
Lw[ps2]=LwMas[ps2];Lw[0]=LwMas[ps2]+wp1*ps2;}}
//=====================// red green //=========================//
/* if(ska!=sk||i==1){
if(sk==1){Rd[ps2]=HgMas[ps2];Rd[0]=HgMas[ps2]+wp2*ps2;
Gr[ps2]=HgMas[ps2];Gr[0]=HgMas[ps2]+(2*wp1-wp2)*ps2;}
if(sk==-1){Rd[ps2]=LwMas[ps2];Rd[0]=LwMas[ps2]+wp2*ps2;
Gr[ps2]=LwMas[ps2];Gr[0]=LwMas[ps2]+(2*wp1-wp2)*ps2;}}*/
//==============================================//
ska=sk;
Comment("vol=",(HgMas[0]-LwMas[0])*10000);
//==============================================//
//----
return(0);
}
//+------------------------------------------------------------------+
Comments
Markdown Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---