Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
wave6MACD_FZRt
//+------------------------------------------------------------------+
//| wave analysis.mq4 |
//| Copyright © 2004, MetaQuotes Software Corp. |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2004, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net/"
//---- indicator settings
//#property indicator_separate_window
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Green
#property indicator_color3 Blue
#property indicator_color4 Yellow
#property indicator_width1 4
//---- indicator parameters
extern int FastEMA=12;
extern int SlowEMA=26;
extern int SignalSMA=9;
//---- indicator buffers
double wave_baza[];//ïåðâûé ÇÇ
double wave_fzr[];//âòîðîé
double wave_fzrQ[];//òðåòèé
double wave_fzrQfzr[];//÷åòâåðòûé
//---- buffers
int v01=10;
double ExCen[10];
datetime ExTime[10];
double ExCenF[10];
datetime ExTimeF[10];
double ExCenQ[10];
datetime ExTimeQ[10];
double ExCenQfzr[10];
datetime ExTimeQfzr[10];
//---
double macd[10000];
double signal[10000];
//---
int pusk,shift,InD,tip,tip01;
double EXC,predExCenF,High_or_Bid,Low_or_Bid;
datetime MomenTus,EXT,perMA;
static int prevtime,prevtime02,prevtime03;
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- drawing settings
SetIndexStyle(0,DRAW_SECTION,EMPTY,4);
SetIndexStyle(1,DRAW_SECTION,EMPTY,3);
SetIndexStyle(2,DRAW_SECTION,EMPTY,2);
SetIndexStyle(3,DRAW_SECTION,EMPTY,1);
IndicatorDigits(Digits+1);
//---- indicator buffers mapping
SetIndexBuffer(0,wave_baza);
SetIndexBuffer(1,wave_fzr);
SetIndexBuffer(2,wave_fzrQ);
SetIndexBuffer(3,wave_fzrQfzr);
//SetIndexDrawBegin(0,Bars-1000);
//SetIndexDrawBegin(1,Bars-1000);
//---- name for DataWindow and indicator subwindow label
//IndicatorShortName("wave_02("+FastEMA+","+SlowEMA+","+SignalSMA+")");
//SetIndexLabel(0,"MACD");
//SetIndexLabel(1,"Signal");
//---- initialization done
return(0);
}
//+-------------------------------------------------------------------------------------------+
//| Îïðåäåëåíèå âîëíîâîé ñòðóêòóðû ðûíêà, è ïîñëåäóþùèé åãî àíàëèç íà îñíîâå ïîëó÷åííûõ äàííûõ|
//+-------------------------------------------------------------------------------------------+
int start()
{
int i,limit;
ArraySetAsSeries(macd,true);
int counted_bars = IndicatorCounted();
if(counted_bars < 0) return(-1);
if(counted_bars > 0) counted_bars--;
limit = Bars - counted_bars;
if(counted_bars==0) limit-=1+1+v01;
//--01-- çàïîëíåíèå ìàññèâîâ ýêñòðåìóìàìè
if(Time[0]!=prevtime)
{
prevtime = Time[0];
if(pusk==0)
{
//limit=ArraySize(macd);
for(i=0; i<limit; i++)
macd[i]=(iMA(NULL,0,FastEMA,0,MODE_SMA,PRICE_OPEN,i)-iMA(NULL,0,SlowEMA,0,MODE_SMA,PRICE_OPEN,i))*1000;
for(i=0; i<limit; i++)
signal[i]=iMAOnArray(macd,limit,SignalSMA,0,MODE_SMA,i);
//ArraySetAsSeries(macd,false);
}
else
{
//limit=SignalSMA;
for(i=0; i<limit; i++)
macd[i]=(iMA(NULL,0,FastEMA,0,MODE_SMA,PRICE_OPEN,i)-iMA(NULL,0,SlowEMA,0,MODE_SMA,PRICE_OPEN,i))*1000;
signal[1]=signal[0];
double sumsig=0;
for(i=0;i<limit; i++)
{
sumsig=sumsig+macd[i];
}
signal[0]=sumsig/SignalSMA;
}
}
//----wave_baza/wave_fzr counted in the 1-st buffer
//if(pusk==1)limit=0;
for(i=limit; i>=0; i--)//
{
if(false)
{//limit==0
High_or_Bid=NormalizeDouble(Close[0],Digits);
Low_or_Bid=NormalizeDouble(Close[0],Digits);
}
else
{
High_or_Bid=NormalizeDouble(High[i+1],Digits);
Low_or_Bid=NormalizeDouble(Low[i+1],Digits);
}
//pusk=1;
if(Time[i]!=prevtime02)
{
prevtime02=Time[i];
//ðàñ÷åò wave_baza
EXC=0;
EXT=0;
if(macd[i+1]>0)
{
if(macd[i]<=0)
{
//if(perMA==Time[i])continue;
//perMA=Time[i];
//Alert("âðåìÿ1=",TimeToStr(Time[0],TIME_DATE|TIME_MINUTES));
//Alert("i=",i,"[i+1]",MacdBuffer[i+1],"[i]",MacdBuffer[i]);
if(MomenTus==0){MomenTus=Time[i];continue;}//ïåðâîå ïåðåñå÷åíèå
if(ExCen[0]==0)shift=iBarShift(NULL,0,MomenTus,FALSE)-i;//èñïîëüçóåì äî ïîÿâëåíèÿ ïåðâîãî ýêñò.
else shift=iBarShift(NULL,0,ExTime[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
//--
InD=iHighest(NULL,0,MODE_HIGH,shift,i+1);
EXC=nd(High[InD]);
EXT=Time[InD];
}
}
}
if(macd[i+1]<0)
{
if(macd[i]>=0)
{
//if(perMA==Time[i])continue;
//perMA=Time[i];
//Alert("âðåìÿ2=",TimeToStr(Time[0],TIME_DATE|TIME_MINUTES));
//Alert("i=",i,"[i+1]",MacdBuffer[i+1],"[i]",MacdBuffer[i]);
if(MomenTus==0){MomenTus=Time[i];continue;}//ïåðâîå ïåðåñå÷åíèå
if(ExCen[0]==0)shift=iBarShift(NULL,0,MomenTus,FALSE)-i;//èñïîëüçóåì äî ïîÿâëåíèÿ ïåðâîãî ýêñò.
else shift=iBarShift(NULL,0,ExTime[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
//--
InD=iLowest(NULL,0,MODE_LOW,shift,i+1);
EXC=nd(Low[InD]);
EXT=Time[InD];
}
}
}
if(EXC!=0)
{
for(int im=v01-1;im>=0;im--)//çàïîëíåíèå ìàññèâîâ íîâûìè äàííûìè
{
if(im==0){ExCen[0]=EXC;ExTime[0]=EXT;break;}
ExCen[im]=ExCen[im-1];
ExTime[im]=ExTime[im-1];
}
wave_baza[InD]=EXC;
EXC=0;
EXT=0;
//ðàñ÷åò wave_fzr
if(ExCenF[1]==0)
{
ExCenF[0]=ExCen[0];
ExCenF[1]=ExCen[1];
ExTimeF[0]=ExTime[0];
ExTimeF[1]=ExTime[1];
wave_fzr[InD]=ExCenF[0];
tip=1;
continue;
}
if(tip==1)
{
if(ExCenF[1]<ExCenF[0])
{
if(macd[i]>0)
{
shift=iBarShift(NULL,0,ExTimeF[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
InD=iLowest(NULL,0,MODE_LOW,shift,i+1);
EXC=nd(Low[InD]);
EXT=Time[InD];
}
}
}
if(ExCenF[1]>ExCenF[0])
{
if(macd[i]<0)
{
shift=iBarShift(NULL,0,ExTimeF[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
InD=iHighest(NULL,0,MODE_HIGH,shift,i+1);
EXC=nd(High[InD]);
EXT=Time[InD];
}
}
}
if(EXC!=0)
{
if(EXC!=ExCenF[0])
{
for(im=v01-1;im>=0;im--)//çàïîëíåíèå ìàññèâîâ íîâûìè äàííûìè
{
if(im==0){ExCenF[0]=EXC;ExTimeF[0]=EXT;break;}
ExCenF[im]=ExCenF[im-1];
ExTimeF[im]=ExTimeF[im-1];
}
wave_fzr[InD]=EXC;
EXC=0;
EXT=0;
tip=2;
//continue;
}
}
}
}
}
if(tip==2)
{
EXC=0;
EXT=0;
if(ExCenF[1]<ExCenF[0])
{
if(ExCenF[1]>Low_or_Bid)tip=1;
else
{
if(ExCenF[0]<High_or_Bid)
{
shift=iBarShift(NULL,0,ExTimeF[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
InD=iLowest(NULL,0,MODE_LOW,shift,i+1);
EXC=nd(Low[InD]);
EXT=Time[InD];
}
}
}
}
if(ExCenF[1]>ExCenF[0])
{
if(ExCenF[1]<High_or_Bid)tip=1;
else
{
if(ExCenF[0]>Low_or_Bid)
{
shift=iBarShift(NULL,0,ExTimeF[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
InD=iHighest(NULL,0,MODE_HIGH,shift,i+1);
EXC=nd(High[InD]);
EXT=Time[InD];
}
}
}
}
if(EXC!=0)
{
if(EXC!=ExCenF[0])
{
for(im=v01-1;im>=0;im--)//çàïîëíåíèå ìàññèâîâ íîâûìè äàííûìè
{
if(im==0){ExCenF[0]=EXC;ExTimeF[0]=EXT;break;}
ExCenF[im]=ExCenF[im-1];
ExTimeF[im]=ExTimeF[im-1];
}
wave_fzr[InD]=EXC;
EXC=0;
EXT=0;
tip=1;
}
}
}
//ðàñ÷åò wave_fzrQ
if(predExCenF!=ExCenF[0])
{
EXC=0;
EXT=0;
if(MathAbs(ExCenF[2]-ExCenF[1])<MathAbs(ExCenF[1]-ExCenF[0]))
{
if(ExCenF[1]<ExCenF[0])
{
if(ExCenF[1]>Low_or_Bid)
{
EXC=ExCenF[0];
EXT=ExTimeF[0];
}
}
else
{
if(ExCenF[1]<High_or_Bid)
{
EXC=ExCenF[0];
EXT=ExTimeF[0];
}
}
if(EXC!=0)
{
if(EXC!=ExCenQ[0])
{
for(im=v01-1;im>=0;im--)//çàïîëíåíèå ìàññèâîâ íîâûìè äàííûìè
{
if(im==0){ExCenQ[0]=EXC;ExTimeQ[0]=EXT;break;}
ExCenQ[im]=ExCenQ[im-1];
ExTimeQ[im]=ExTimeQ[im-1];
}
shift=iBarShift(NULL,0,ExTimeF[0],FALSE);
wave_fzrQ[shift]=EXC;
EXC=0;
EXT=0;
predExCenF=ExCenF[0];
}
}
}
}
//ðàñ÷åò wave_fzrQfzr
if(true)
{//ðàñ÷åò wave_fzrQfzr
EXC=0;
EXT=0;
if(ExCenQfzr[1]==0)
{
ExCenQfzr[0]=ExCenQ[0];
ExCenQfzr[1]=ExCenQ[1];
ExTimeQfzr[0]=ExTimeQ[0];
ExTimeQfzr[1]=ExTimeQ[1];
shift=iBarShift(NULL,0,ExTimeQ[0],FALSE);
wave_fzrQfzr[shift]=ExCenQfzr[0];
continue;
}
if(tip01==1)
{
if(ExCenQfzr[1]>ExCenQfzr[0])
{
if(ExCenQfzr[1]<ExCenQ[0])
{
EXC=ExCenQ[0];
EXT=ExTimeQ[0];
}
}
else
{
if(ExCenQfzr[1]>ExCenQ[0])
{
EXC=ExCenQ[0];
EXT=ExTimeQ[0];
}
}
if(EXC!=0)
{
if(EXC!=ExCenQfzr[0])
{
for(im=v01-1;im>=0;im--)//çàïîëíåíèå ìàññèâîâ íîâûìè äàííûìè
{
if(im==0){ExCenQfzr[0]=EXC;ExTimeQfzr[0]=EXT;break;}
ExCenQfzr[im]=ExCenQfzr[im-1];
ExTimeQfzr[im]=ExTimeQfzr[im-1];
}
shift=iBarShift(NULL,0,ExTimeQ[0],FALSE);
wave_fzrQfzr[shift]=EXC;
EXC=0;
EXT=0;
tip01=0;
}
}
}
if(tip01==0)
{
EXC=0;
EXT=0;
if(ExCenQfzr[1]<ExCenQfzr[0])
{
if(ExCenQfzr[1]>Low_or_Bid)tip01=1;
else
{
if(ExCenQfzr[0]<High_or_Bid)
{
shift=iBarShift(NULL,0,ExTimeQfzr[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
InD=iLowest(NULL,0,MODE_LOW,shift,i+1);
EXC=nd(Low[InD]);
EXT=Time[InD];
}
}
}
}
else
{
if(ExCenQfzr[1]<High_or_Bid)tip01=1;
else
{
if(ExCenQfzr[0]>Low_or_Bid)
{
shift=iBarShift(NULL,0,ExTimeQfzr[0],FALSE)-i-1;//èùåì î÷åðåäíîé ýêñò. îò ïðåäûäóùåãî ýêñò.
if(shift<=0)Alert("shift"," ",shift);
else
{
InD=iHighest(NULL,0,MODE_HIGH,shift,i+1);
EXC=nd(High[InD]);
EXT=Time[InD];
}
}
}
}
if(EXC!=0)
{
if(EXC!=ExCenQfzr[0])
{
for(im=v01-1;im>=0;im--)//çàïîëíåíèå ìàññèâîâ íîâûìè äàííûìè
{
if(im==0){ExCenQfzr[0]=EXC;ExTimeQfzr[0]=EXT;break;}
ExCenQfzr[im]=ExCenQfzr[im-1];
ExTimeQfzr[im]=ExTimeQfzr[im-1];
}
wave_fzrQfzr[InD]=EXC;
EXC=0;
EXT=0;
tip01=1;
}
}
}
}
//---
}
pusk=1;
//Comment("0=",TimeToStr(ExTimeF[0],TIME_DATE|TIME_MINUTES),"1=",TimeToStr(ExTimeF[1],TIME_DATE|TIME_MINUTES),"2=",TimeToStr(ExTimeF[2],TIME_DATE|TIME_MINUTES));
//---- done
return(0);
}
//+------------------------------------------------------------------+
double nd(double in_002f,string sy="")
{
if(sy=="")sy=Symbol();
return(NormalizeDouble(in_002f,MarketInfo(sy,MODE_DIGITS)));
}
//+------------------------------------------------------------------+
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
---