Miscellaneous
0
Views
0
Downloads
0
Favorites
StreamAmpZZ
//+--------------------------------------------------------------------------------+
//| ang_Amp_ZZ |
//| StreamAmpZZ.mq4 |
//| Copyright © 2005, ANG3110 |
//| ANG3110@latchess.com |
//| ìàëåíüêàÿ äîðàáîòêà Titan |
//+--------------------------------------------------------------------------------+
#property copyright "Copyright © 2005, ANG3110"
#property link "ANG3110@latchess.com"
//----
#property indicator_chart_window
#property indicator_buffers 7
#property indicator_color1 CornflowerBlue
#property indicator_color2 Orange
#property indicator_color3 Orange
#property indicator_color4 SteelBlue
#property indicator_color5 SteelBlue
#property indicator_color6 MediumSeaGreen
#property indicator_color7 Red
//---- input parameters
extern double Depth =12.5;
extern int Smooth =6;
extern int ñntBars =600;
//---- Âêë/âûêë
extern bool Sound =false;
//---- buffers
double zz[], ha[], la[], hs[], ls[], hx[], lx[];
double tmp_ha[], tmp_la[];
//---- parameters
double hi, li, hm, lm;
int f=0, f1, f0, ai, bi, aibar, bibar;
int wait=0; //øîá íå òðåçâîíèëà íà òåêóùåé ñâå÷å
//+--------------------------------------------------------------------------------+
//| Custom indicator initialization function |
//+--------------------------------------------------------------------------------+
int init()
{
Depth*=Point;
//---- Óñòàíàâëèâàåì íîâûé ðàçìåð ìàññèâîâ
ArrayResize(tmp_ha, ñntBars);
ArrayResize(tmp_la, ñntBars);
//---- Óñòàíîâêà ôîðìàòà òî÷íîñòè äëÿ âèçóàëèçàöèè èíäèêàòîðà
IndicatorDigits(4);
//---- 7 additional buffers are used for counting.
IndicatorBuffers(7);
//---- indicator buffers
SetIndexBuffer(0, zz);
SetIndexBuffer(1, ha);
SetIndexBuffer(2, la);
SetIndexBuffer(3, hs);
SetIndexBuffer(4, ls);
SetIndexBuffer(5, hx);
SetIndexBuffer(6, lx);
//---- indicator lines
SetIndexStyle(0, DRAW_LINE, STYLE_SOLID, 2);
SetIndexStyle(1, DRAW_LINE);
SetIndexStyle(2, DRAW_LINE);
SetIndexStyle(3, DRAW_LINE, STYLE_DOT);
SetIndexStyle(4, DRAW_LINE, STYLE_DOT);
SetIndexStyle(5, DRAW_ARROW, 0, 2);
SetIndexStyle(6, DRAW_ARROW, 0, 2);
//----
SetIndexEmptyValue(5, EMPTY_VALUE);
SetIndexEmptyValue(6, EMPTY_VALUE);
//----
SetIndexArrow(5, 251);
SetIndexArrow(6, 251);
// Wingdings symbols:
// ------------------
// 4 - ÷åðòî÷êà
// 119 - ðîìáèê
// 158 - òî÷êà
// 159 - æèðíàÿ òî÷êà
// 167 - êâàäðàòèê
// 169 - çâåçäà òðèóãîëüíàÿ
// 170 - ïëþñ
// 251 - êðåñòèê
//---- name for DataWindow and indicator subwindow label
IndicatorShortName("StreamAmpZZ");
SetIndexLabel(0, "ZZ");
SetIndexLabel(1, "HA");
SetIndexLabel(2, "LA");
SetIndexLabel(3, "ZZHA");
SetIndexLabel(4, "ZZLA");
SetIndexLabel(5, "Upper");
SetIndexLabel(6, "Lower");
//----
int draw=Bars - ñntBars;
SetIndexDrawBegin(0, draw);
SetIndexDrawBegin(1, draw + Smooth);
SetIndexDrawBegin(2, draw + Smooth);
SetIndexDrawBegin(3, draw);
SetIndexDrawBegin(4, draw);
SetIndexDrawBegin(5, draw);
SetIndexDrawBegin(6, draw);
//----
return(0);
}
//+--------------------------------------------------------------------------------+
//| StreamAmpZZ |
//+--------------------------------------------------------------------------------+
int start()
{
double cum, sum;
int bars =Bars - IndicatorCounted(), i, j;
if (bars > 1) bars=ñntBars; //ïåðåðèñîâêà ïî âñåì ñntBars ïðè êàæäîì íîâîì áàðå
//----
for(i=bars-1; i>=0; i--)
{
if (i>=ñntBars) {hi=High[i]; li=Low[i];}
if (Low [i] > hi) {hi=Low [i]; if (hi>=li+Depth) li=hi - Depth;}
if (High[i] < li) {li=High[i]; if (li<=hi-Depth) hi=li + Depth;}
//----
if (High[i] > hi && Low[i] < li) if (High[i]-hi > li-Low[i]) f1=1; else f1=2; else f1=0;
//----
if (f==0)
{
if (High[i] > hi) {hm=High[i]; ai=i; f=1;}
if (Low [i] < li) {lm=Low [i]; bi=i; f=2;}
}
//----
if (f1!=2)
{
if (f==2 && High[i] > hi)
{
hm=High[i]; f=1; f0=0;
if (ai!=bi) for(j=ai; j>=bi; j--) zz[j]=High[ai]*(j - bi)/(ai - bi) + Low[bi]*(j - ai)/(bi - ai);
ai=i;
}
if (f==1 && High[i] > hm) {hm=High[i]; ai=i; f0=0;}
}
//----
if (f1!=1)
{
if (f==1 && Low[i] < li)
{
lm=Low[i]; f=2; f0=0;
if (ai!=bi) for(j=bi; j>=ai; j--) zz[j]=High[ai]*(j - bi)/(ai - bi) + Low[bi]*(j - ai)/(bi - ai);
bi=i;
}
if (f==2 && Low[i] < lm) {lm=Low[i]; bi=i; f0=0;}
}
//----
if (f0==0 && i==0) {aibar=Bars - ai; bibar=Bars - bi; f0=1;}
if (f0==1) {ai=Bars - aibar; bi=Bars - bibar;}
//----
if (i==0)
{
if (ai > bi) for(j=ai; j>=bi; j--) zz[j]=High[ai]*(j - bi)/(ai - bi) + Low[bi]*(j - ai)/(bi - ai);
if (ai < bi) for(j=bi; j>=ai; j--) zz[j]=High[ai]*(j - bi)/(ai - bi) + Low[bi]*(j - ai)/(bi - ai);
//----
if (f ==1 && ai!=0) for(j=ai; j>=0; j--) zz[j]=Close[0]*(j - ai)/(0 - ai) + High[ai]*(j - 0)/(ai - 0);
if (f ==2 && bi!=0) for(j=bi; j>=0; j--) zz[j]=Close[0]*(j - bi)/(0 - bi) + Low [bi]*(j - 0)/(bi - 0);
if (bi==0 && ai!=0) for(j=ai; j>=0; j--) zz[j]=Low [0]*(j - ai)/(0 - ai) + High[ai]*(j - 0)/(ai - 0);
if (ai==0 && bi!=0) for(j=bi; j>=0; j--) zz[j]=High [0]*(j - bi)/(0 - bi) + Low [bi]*(j - 0)/(bi - 0);
}
//----
tmp_ha[i]=hi;
tmp_la[i]=li;
//Ñãëàæèâàíèå (çàìåäëåíèå)
if (i<=ñntBars-Smooth && Smooth > 1)
{
for(j=i, cum=0, sum=0; j<i+Smooth; j++) {cum+=tmp_ha[j]; sum+=tmp_la[j];}
ha[i]=cum/Smooth;
la[i]=sum/Smooth;
}
else {ha[i]=tmp_ha[i]; la[i]=tmp_la[i];}
}
//---- Ñðåäíÿÿ ìåæäó zz è ha/la
for(i=bars-1; i>=0; i--)
{
hs[i]=(zz[i] + ha[i])/2;
ls[i]=(zz[i] + la[i])/2;
}
//---- Ýêñòðåìóìû
if (bars>=Bars) bars=ñntBars - 1;
for(i=bars; i>0; i--)
{
hx[i]=EMPTY_VALUE;
lx[i]=EMPTY_VALUE;
//----
if (zz[i-1] < zz[i] && zz[i] > zz[i+1]) {hx[i]=zz[i]; if (wait!=Time[0] && i==1 && Sound) {PlaySound("alert.wav"); wait=Time[0];}}
if (zz[i-1] > zz[i] && zz[i] < zz[i+1]) {lx[i]=zz[i]; if (wait!=Time[0] && i==1 && Sound) {PlaySound("alert2.wav"); wait=Time[0];}}
}
//----
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
---