Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
_Channel@MA
#property indicator_chart_window // â îêíå èíñòðóìåíòà
#property indicator_buffers 5
#property indicator_color1 Magenta // çèãçàã
#property indicator_color3 Green // âåðõí. ãð. êàíàëà
#property indicator_color4 Red // íèæí. ãð. êàíàëà
#property indicator_color5 Blue // MA
// âõîäíûå ïàðàìåòðû
extern double Sensitivity=5; // ïîðîã ÷óâñòâ. â ï.ï.
extern int ma_period=5; // ïåðèîä MA
extern int ma_method=0; // 0-SMA, 1-EMA, 2-SMMA, 3-LWMA
extern int applied_price=0; // 0-CLOSE, 1-OPEN, 2-HIGH, 3-LOW, 4-MEDIAN, 5-TYPICAL, 6-WEIGHTED
extern int ShowChannel=2; // ïîêàçàòü 1 - ïî ìåñòó ýêñòðåìóìîâ, 2 - ïî âðåìåíè îïðåäåëåíèÿ
extern int ShowZigZag=0; // ïîêàçàòü 1 - ïî ìåñòó ýêñòðåìóìîâ, 2 - ïî âðåìåíè îïðåäåëåíèÿ
// èíä.áóôåðû
double ZZpeak[], // ïèê
ZZtrough[], // âïàäèíà
ChTop[], // âåðõí. ãð. êàíàëà
ChBot[], // íèæí. ãð. êàíàëà
MA[]; // MA
// îáùèå ïåðåìåííûå
double sens; // ÷óâñòâ. â öåíàõ
bool dir;
double tx,px,bot,top;
int jDn,jUp; // ñ÷åò÷èêè ðàññòîÿíèÿ ìåæäó ýêñòðåìóìàìè
bool count=1; // íàïðàâëåíèå ïîèñêà öåíîâîãî ýêñòðåìóìà; 1 - îò ñòàðøèõ áàðîâ ê ìëàäøèì
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
if(ShowZigZag<0 || ShowChannel<0) count=0;
ShowZigZag=MathAbs(ShowZigZag); ShowChannel=MathAbs(ShowChannel);
sens=Sensitivity*Point; // ÷óâñòâ. â öåíàõ
//---- indicators
SetIndexBuffer(0,ZZpeak);
SetIndexEmptyValue(0,0.0);
SetIndexLabel(0,"Peak");
SetIndexBuffer(1,ZZtrough);
SetIndexEmptyValue(1,0.0);
SetIndexLabel(1,"Trough");
if(ShowZigZag>0) {
SetIndexStyle(0,DRAW_ZIGZAG);
SetIndexStyle(1,DRAW_ZIGZAG);
}
else {
SetIndexStyle(0,DRAW_NONE);
SetIndexStyle(1,DRAW_NONE);
}
SetIndexBuffer(2,ChTop);
SetIndexEmptyValue(2,0.0);
SetIndexStyle(2,DRAW_LINE);
SetIndexLabel(2,"ChTop");
SetIndexBuffer(3,ChBot);
SetIndexEmptyValue(3,0.0);
SetIndexStyle(3,DRAW_LINE);
SetIndexLabel(3,"ChBot");
if(ShowChannel>0) {
SetIndexStyle(2,DRAW_LINE);
SetIndexStyle(3,DRAW_LINE);
}
else {
SetIndexStyle(2,DRAW_NONE);
SetIndexStyle(3,DRAW_NONE);
}
SetIndexBuffer(4,MA);
SetIndexStyle(4,DRAW_LINE);
string _ma="MA("+ma_period+") "+ma_method+", "+applied_price;
SetIndexLabel(4,_ma);
//----
IndicatorShortName("ZZ@MA");
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int ic=IndicatorCounted();
if(Bars-ic-1>1) ic=reinit();
int limit=Bars-ic-1; // êîë-âî ïåðåñ÷åòîâ
for(int i=limit; i>=0; i--) MA[i]=iMA(NULL,0,ma_period,0,ma_method,applied_price, i);
for(i=limit; i>0; i--)
{
double c=MA[i];
jDn++; jUp++; // ñ÷åò÷èêè ðàññòîÿíèÿ ìåæäó ýêñòðåìóìàìè
//------------- Ëîâëÿ âïàäèíû -------------------------------------------
if(dir) // Åñëè ôëàã=1, òî ëîâèì âïàäèíó
{
// if(l>Low[i]) {l=Low[i]; jt=0;}
tx=MathMin(tx,c);
if(c >= tx+sens) // Åñëè öåíà ñòàëà áîëüøå ïîñëåäíåãî ìèíèìóìà çà ïîðîã, òî
{
double l=High[i]*100;
if(count) {for(int k=jUp; k>=0; k--) if(Low[i+k]<l) {int sh=i+k;l=Low[i+k];}}
else {for(k=0; k<=jUp; k++) if(Low[i+k]<l) {sh=i+k;l=Low[i+k];}}
bot=Low[sh];
if(ShowZigZag==1) ZZtrough[sh]=bot; else ZZtrough[i]=bot;
if(ShowChannel==1) for(k=sh; k>i; k--) ChBot[k]=bot;
px=c;
dir=0; // ôëàã óñòàíîâëåí "ïîéìàíà âïàäèíà"
jDn=-2;
}
}
//------------- Ëîâëÿ ïèêà -----------------------------------------
else // Åñëè ôëàã=0, òî ëîâèì ïèê
{
px=MathMax(px,c);
if(c <= px-sens) // Åñëè öåíà ñòàëà ìåíüøå ïîñëåäíåãî ìàêñèìóìà çà ïîðîã, òî
{
tx=c;
double h=0;
if(count) {for(k=jDn; k>=0; k--) if(High[i+k]>h) {sh=i+k; h=High[i+k];}}
else {for(k=0; k<=jDn; k++) if(High[i+k]>h) {sh=i+k; h=High[i+k];}}
top=High[sh];
if(ShowZigZag==1) ZZpeak[sh]=top; else ZZpeak[i]=top;
if(ShowChannel==1) for(k=sh; k>i; k--) ChTop[k]=top;
dir=1; // ôëàã "ïîéìàí ïèê"
jUp=-2;
}
}
//--------------------------------------------------------------------
for(k=0; k<2; k++) {ChTop[i-k]=top; ChBot[i-k]=bot;}
}
return(0);
}
// ô-ÿ äîïîëíèòåëüíîé èíèöèàëèçàöèè
int reinit()
{
ArrayInitialize(ZZpeak,0.0);
ArrayInitialize(ZZtrough,0.0);
ArrayInitialize(ChTop,0.0);
ArrayInitialize(ChBot,0.0);
ArrayInitialize(MA,0.0);
dir=0; tx=0;px=0;top=0;bot=0;jUp=0;jDn=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
---