Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
_iGDR_ZZ_v1
// Indicators Pack - Green Digger Reseach
//+------------------------------------------------------------------+
//| [IP-GDR] ZigZag color |
//| Copyright © 2008-2009, GreenDog, Russia |
//| krot@inbox.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2008-2009, GreenDog"
#property link "krot@inbox.ru"
#property indicator_chart_window
#property indicator_buffers 3
#property indicator_color1 Gold
#property indicator_color2 DarkGreen
#property indicator_color3 Red
#property indicator_width1 1
#property indicator_width2 2
#property indicator_width3 2
extern double extHL = 4.8; // êîýô äëÿ ñðåäíåãî HL, îïðåäåëÿþùåãî ïóòü â ïóíêòàõ, ïðè êîòîðîì âåðøèíà ñ÷èòàåòñÿ óñòàíîâëåííîé
extern int extFlat = 48; // êîëè÷åñòâî áàðîâ ôëåòà, êîãäà âåðøèíà ðèñóåòñÿ ïðèíóäèòåëüíî
extern int sBars = 480; // show bars
double aUP[],aDW[],aMA[];
double lastHL,aLv[3];
bool Go = true, first = true;
int trend,lastLow,lastHigh;
int init(){
IndicatorBuffers(3);
SetIndexBuffer(0,aMA);
SetIndexBuffer(1,aUP);
SetIndexBuffer(2,aDW);
SetIndexStyle(0,DRAW_ARROW); SetIndexArrow(0,250);
SetIndexStyle(1,DRAW_LINE);
SetIndexStyle(2,DRAW_LINE);
SetIndexEmptyValue(0,EMPTY_VALUE);
SetIndexEmptyValue(1,EMPTY_VALUE);
SetIndexEmptyValue(2,EMPTY_VALUE);
IndicatorDigits(Digits+1);
if (sBars!=0 && sBars<2) { Go=false; return(-1); }
if (sBars==0) sBars=10000;
return(0);
}
int deinit(){
Comment("");
}
int start(){
int lastBars,count;
if (!Go) { Comment("Íåêîððåêòíûå ïàðàìåòðû èíäèêàòîðà!"); return(-1); }
if (Bars<sBars+extFlat) { Comment("Íåäîñòàòî÷íî áàðîâ íà ãðàôèêå!"); return(0); }
else Comment("");
// if (Bars==lastBars) return(0); // åñëè ìåäëåííûé, ñ÷èòàåì òîêà â íà÷àëå áàðà
if (Bars-lastBars<=1){
if (Bars-lastBars==1){ lastHigh++; lastLow++; calcHL(); }
count=Bars-lastBars;
}
else {
ArrayInitialize(aMA,EMPTY_VALUE); ArrayInitialize(aUP,EMPTY_VALUE); ArrayInitialize(aDW,EMPTY_VALUE); first=true;
}
lastBars=Bars;
if (first){ // ïðè ïåðâîì çàïóñêå îïðåäåëÿåì ñðåäíåå õë
calcHL();
// îïðåäåëÿåì ïåðâóþ òî÷êó
double min=iLowest(NULL,0,MODE_LOW,extFlat,sBars);
double max=iHighest(NULL,0,MODE_HIGH,extFlat,sBars);
if (max<min){ // åñëè ïîñëåäíÿÿ âåðøèíà high
lastLow=min; pushHigh(max); count=max;
}
else { // åñëè ïîñëåäíÿÿ âåðøèíà low
lastHigh=max; pushLow(min); count=min;
}
first=false;
}
// îñíîâíîé öèêë
for(int i=count;i>=0;i--){
if (trend==OP_BUY){ // ëó÷ ââåðõ
if (High[i]>aLv[1]) pushHigh(i); // åñëè îáíîâëåíèå õàé
else if (Low[i]<aLv[2] || Low[i]<aLv[0]) pushLow(i); // çàäåëè óðîâíè îòñòàþùåãî èëè ïðåäûäóùåãî ëîó
else if (lastHigh-i>extFlat) pushLow(iLowest(NULL,0,MODE_LOW,extFlat,i)); // íå ïîðà ëè ñìåíèòü òðåíä
}
else { // ëó÷ âíèç
if (Low[i]<aLv[1]) pushLow(i); // åñëè îáíîâëåíèå low
else if (High[i]>aLv[2] || High[i]>aLv[0]) pushHigh(i); // çàäåëè óðîâíè îòñòàþùåãî èëè ïðåäûäóùåãî õàé
else if (lastLow-i>extFlat) pushHigh(iHighest(NULL,0,MODE_HIGH,extFlat,i)); // íå ïîðà ëè ñìåíèòü òðåíä
}
}
return(0);
}
void calcHL(){
double HL=0;
for(int i=Bars-1;i>=0;i--) { HL=HL+High[i]-Low[i]; if (i==sBars) lastHL=HL; }
lastHL=NormalizeDouble(extHL*(MathSqrt(HL/Bars*(HL-lastHL)/sBars)),Digits);
// lastHL=NormalizeDouble(extHL*(HL/Bars+(HL-lastHL)/sBars)/2,Digits);
// lastHL=NormalizeDouble(extHL*HL/Bars,Digits);
return(0);
}
void pushHigh(int sh){
lastHigh=sh; trend=OP_BUY; aMA[sh]=High[sh];
aLv[0]=Low[lastLow]; aLv[1]=High[lastHigh]; aLv[2]=aLv[1]-lastHL;
int count=lastLow-lastHigh; // ïðîðèñîâêà è çàïîëíåíèå áóôåðîâ
for(int i=0;i<=count;i++) aUP[lastLow-i]=Low[lastLow]+i*(High[sh]-Low[lastLow])/count;
return(0);
}
void pushLow(int sh){
lastLow=sh; trend=OP_SELL; aMA[sh]=Low[sh];
aLv[0]=High[lastHigh]; aLv[1]=Low[lastLow]; aLv[2]=aLv[1]+lastHL;
int count=lastHigh-lastLow; // ïðîðèñîâêà è çàïîëíåíèå áóôåðîâ
for(int i=0;i<=count;i++) aDW[lastHigh-i]=High[lastHigh]-i*(High[lastHigh]-Low[sh])/count;
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
---