Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
MACD_full
//+------------------------------------------------------------------+
//| MACD full.mq4 |
//|Èíäèêàòîð ñîñòîèò èç: |
//| - ñòàíäàðòíîãî MACD (FastEMA[12]-SlowEMA[26] è SignalISMA[9]); |
//| - ãèñòîãðàììû MACD ñ ïðèìåíåíèåì ïÿòèïåðèîäíîãî SMA â êà÷åñòâå |
//| ñèãíàëüíîé ëèíèè (MACD[12,26]- SignalISMA[9] è SignSMA[5]). |
//| |
//|Âõîäíûå ïàðàìåòðû, ïðåäëàãàåìûå Metatrader 4: |
//| - FastEMA=12; |
//| - SlowEMA=26; |
//| - SignalSMA=9; |
//|Äëÿ ìåòîäèêè ÄèÍàïîëè ïåðâûå òðè çíà÷åíèÿ çàìåíåíû íà 8 |
//|(îêðóãë¸ííîå 8,3897), 18 (îêðóãë¸ííîå 17,5185) è 9 (îêðóãë¸ííîå |
//|9,0503) ñîîòâåòñòâåííî. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, LenIFCHIK"
//---- íàñòðîéêè èíäèêàòîðà
#property indicator_separate_window //â îòäåëüíîì îêíå
#property indicator_buffers 8 //èçïîëüçóåòñÿ 6 áóôåðîâ
//---- öâåòîâàÿ ïàëèòðà
//---- ãèñòîãðàììà MACD
#define COL_1 RoyalBlue //öâåò âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
#define COL_2 FireBrick //öâåò íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
#define COL_3 MidnightBlue //öâåò ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
#define COL_4 LightSteelBlue //öâåò âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
#define COL_5 CornflowerBlue //öâåò íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
#define COL_6 C'86,138,235' //öâåò "îáâîäêè" ãèñòîãðàììû MACD
#define COL_7 Red //ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
//---- MACD
#define COL_8 LightGray //öâåò âîñõîäÿùåé MACD
#define COL_9 DarkGray //öâåò íèñõîäÿùåé MACD
#define COL_10 DarkSlateGray //öâåò "îáâîäêè" MACD
#define COL_11 Red //öâåò ñèãíàëüíîé ëèíèè MACD
//---- ïàðàìåòðû èíäèêàòîðà
extern int FastEMA=8; //ïåðèîä áûñòðîãî EMA
extern int SlowEMA=18; //ïåðèîä ìåäëåííîãî EMA
extern int SignalSMA=9; //ïåðèîä ñèãíàëüíîé ëèíèè MACD
extern int SignSMA=5; //ïåðèîä ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
extern string MACD_Hist_display_mode="0 - nothing, 1 - line, 2 - histogram";
extern int MACD_Hist_disp=0; //ðåæèì îòîáðàæåíèÿ ãèñòîãðàììû MACD (0-íå îòîáðàæàåòñÿ, 1-îòîáðàæàåòñÿ)
extern string MACD_display_mode="0 - nothing, 1 - line, 2 - histogram";
extern int MACD_disp=2; //ðåæèì îòîáðàæåíèÿ MACD (0-íå îòîáðàæàåòñÿ, 1-îòîáðàæàåòñÿ)
//---- áóôåðû èíäèêàòîðà:
//---- áóôåðû ãèñòîãðàììû MACD
double ExtBuffer1[]; //áóôåð âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
double ExtBuffer2[]; //áóôåð íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
double OsmaBuffer[]; //áóôåð ãèñòîãðàììû MACD
double SignSMABuffer[]; //áóôåð ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
//---- áóôåðû MACD
double ExtBuffer3[]; //áóôåð âîñõîäÿùåãî MACD
double ExtBuffer4[]; //áóôåð íèñõîäÿùåãî MACD
double MacdBuffer[]; //áóôåð MACD
double SignalBuffer[]; //áóôåð ñèãíàëüíîé ëèíèè MACD
//+------------------------------------------------------------------+
//| Èíèöèàëèçàöèÿ. Ôóíêöèÿ init |
//+------------------------------------------------------------------+
int init()
{
//---- 2 äîïîëíèòåëüíûõ áóôåðà èñïîëüçóþòñÿ äëÿ âû÷èñëåíèé
IndicatorBuffers(8); //÷èñëî áóôåðîâ èíäèêàòîðà
//---- ïàðàìåòðû îòðèñîâêè:
//---- ãèñòîãðàììû MACD
switch(MACD_Hist_disp) //ðåæèì îòîáðàæåíèÿ ãèñòîãðàììû MACD
{
case 0 : //ÍÅ ÎÒÎÁÐÀÆÀÅÒÑß
SetIndexStyle(0,DRAW_NONE); //ñòèëü âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(1,DRAW_NONE); //ñòèëü íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(2,DRAW_NONE); //ñòèëü îñíîâíîé ãèñòîãðàììû MACD
SetIndexStyle(3,DRAW_NONE); //ñòèëü ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
break;
case 1 : //ÎÒÎÁÐÀÆÀÅÒÑß Â ÂÈÄÅ ËÈÍÈÉ
SetIndexStyle(0,DRAW_LINE, STYLE_SOLID,1,COL_1); //ñòèëü âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(1,DRAW_LINE, STYLE_SOLID,1,COL_2); //ñòèëü íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(2,DRAW_NONE, STYLE_SOLID,1,NULL); //ñòèëü îñíîâíîé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(3,DRAW_LINE, STYLE_SOLID,1,COL_3); //ñòèëü ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
break;
case 2 : //ÎÒÎÁÐÀÆÀÅÒÑß Â ÂÈÄÅ ÃÈÑÒÎÃÐÀÌÌÛ Ñ ÑÈÃÍÀËÜÍÎÉ ËÈÍÈÅÉ
SetIndexStyle(0,DRAW_HISTOGRAM, STYLE_SOLID,1,COL_4); //ñòèëü âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(1,DRAW_HISTOGRAM, STYLE_SOLID,1,COL_5); //ñòèëü íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexStyle(2,DRAW_LINE, STYLE_SOLID,1,COL_6); //ñòèëü "îáâîäêè" ãèñòîãðàììû MACD
SetIndexStyle(3,DRAW_LINE, STYLE_SOLID,1,COL_7); //ñòèëü ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
default :
MACD_Hist_disp=0; //ïî óìîë÷àíèþ ÍÅ ÎÒÎÁÐÀÆÀÅÒÑß
}
//---- MACD
switch(MACD_disp) //ðåæèì îòîáðàæåíèÿ MACD
{
case 0 : //ÍÅ ÎÒÎÁÐÀÆÀÅÒÑß
SetIndexStyle(4,DRAW_NONE); //ñòèëü âîñõîäÿùåé MACD
SetIndexStyle(5,DRAW_NONE); //ñòèëü íèñõîäÿùåé MACD
SetIndexStyle(6,DRAW_NONE); //ñòèëü "îáâîäêè" MACD
SetIndexStyle(7,DRAW_NONE); //ñòèëü ñèãíàëüíîé ëèíèè MACD
break;
case 1 : //ÎÒÎÁÐÀÆÀÅÒÑß Â ÂÈÄÅ ËÈÍÈÉ
SetIndexStyle(4,DRAW_NONE); //ñòèëü âîñõîäÿùåé MACD
SetIndexStyle(5,DRAW_NONE); //ñòèëü íèñõîäÿùåé MACD
SetIndexStyle(6,DRAW_LINE, STYLE_SOLID,1,COL_10); //ñòèëü ëèíèè MACD
SetIndexStyle(7,DRAW_LINE, STYLE_SOLID,1,COL_11); //ñòèëü ñèãíàëüíîé ëèíèè MACD
break;
case 2 : //ÎÒÎÁÐÀÆÀÅÒÑß Â ÂÈÄÅ ÃÈÑÒÎÃÐÀÌÌÛ Ñ ÑÈÃÍÀËÜÍÎÉ ËÈÍÈÅÉ
SetIndexStyle(4,DRAW_HISTOGRAM, STYLE_SOLID,1,COL_8); //ñòèëü âîñõîäÿùåé MACD
SetIndexStyle(5,DRAW_HISTOGRAM, STYLE_SOLID,1,COL_9); //ñòèëü íèñõîäÿùåé MACD
SetIndexStyle(6,DRAW_LINE, STYLE_SOLID,1,COL_10); //ñòèëü "îáâîäêè" MACD
SetIndexStyle(7,DRAW_LINE, STYLE_SOLID,1,COL_11); //ñòèëü ñèãíàëüíîé ëèíèè MACD
break;
default :
MACD_disp=2; //ïî óìîë÷àíèþ ÎÒÎÁÐÀÆÀÅÒÑß ÃÈÑÒÎÃÐÀÌÌÀ Ñ ÑÈÃÍÀËÜÍÎÉ ËÈÍÈÅÉ
}
//---- êîîðäèíàòû íà÷àëà îòðèñîâêè:
//---- ãèñòîãðàììû MACD
SetIndexDrawBegin(0,SlowEMA); //áàð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexDrawBegin(1,SlowEMA); //áàð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexDrawBegin(2,SlowEMA); //áàð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà ãèñòîãðàììû MACD
SetIndexDrawBegin(3,SlowEMA); //áàð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
//---- MACD
SetIndexDrawBegin(4,SlowEMA); //àð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà âîñõîäÿùåé MACD
SetIndexDrawBegin(5,SlowEMA); //àð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà íèñõîäÿùåé MACD
SetIndexDrawBegin(6,SlowEMA); //áàð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà MACD
SetIndexDrawBegin(7,SlowEMA); //áàð, ñ êîòîðîãî íà÷í¸òñÿ îòðèñîâêà ñèãíàëüíîé ëèíèè MACD
//---- ïàðàìåòðû îêðóãëåíèÿ
IndicatorDigits(Digits); //îêðóãëåíèå äî ïàðàìàòðîâ îêðóãëåíèÿ öåíû
//---- ðàçìåòêà áóôåðîâ:
//---- ãèñòîãðàììû MACD
SetIndexBuffer(0,ExtBuffer1); //áóôåð âîñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexBuffer(1,ExtBuffer2); //áóôåð íèñõîäÿùåé ëèíèè ãèñòîãðàììû MACD
SetIndexBuffer(2,OsmaBuffer); //áóôåð ãèñòîãðàììû MACD
SetIndexBuffer(3,SignSMABuffer); //áóôåð ñèãíàëüíîé ëèíèè ãèñòîãðàììû MACD
//---- MACD
SetIndexBuffer(4,ExtBuffer3); //áóôåð âîñõîäÿùåé MACD
SetIndexBuffer(5,ExtBuffer4); //áóôåð íèñõîäÿùåé MACD
SetIndexBuffer(6,MacdBuffer); //áóôåð MACD
SetIndexBuffer(7,SignalBuffer); //áóôåð ñèãíàëüíîé ëèíèè MACD
//---- íàçàíèå îêíà äàííûõ è îêíà èíäèêàòîðà
IndicatorShortName("MACD full("+FastEMA+","+SlowEMA+","+SignalSMA+","+SignSMA+")");
//---- êîíåö èíèöèàëèçàöèè
return(0);
}
//+------------------------------------------------------------------+
//| MACD è ãèñòîãðàììà MACD |
//+------------------------------------------------------------------+
int start()
{
double current, current1, prev, prev1;
//---- ïåðåñ÷¸ò ïîñëåäíåãî ðàñ÷èòàííîãî áàðà
int counted_bars=IndicatorCounted();
if(counted_bars<0) return(-1);
if(counted_bars>0) counted_bars--;
int limit=Bars-counted_bars;
if(counted_bars==0) limit-=1+2;
//---- ðàñ÷¸ò MACD
for(int i=0; i<limit; i++)
MacdBuffer[i]=iMA(NULL,0,FastEMA,0,MODE_EMA,PRICE_CLOSE,i)-iMA(NULL,0,SlowEMA,0,MODE_EMA,PRICE_CLOSE,i);
//---- ðàñ÷¸ò ñèãíàëüíîé ëèíèè MACD
for(i=0; i<limit; i++)
SignalBuffer[i]=iMAOnArray(MacdBuffer,Bars,SignalSMA,0,MODE_SMA,i);
//---- ðàñ÷¸ò ãèñòîãðàììû MACD
for(i=0; i<limit; i++)
OsmaBuffer[i]=MacdBuffer[i]-SignalBuffer[i];
//---- ðàñ÷¸ò ñèãíàëüíîé ëèíèè äëÿ ãèñòîãðàììû MACD
for(i=0; i<limit; i++)
SignSMABuffer[i]=iMAOnArray(OsmaBuffer,Bars,SignSMA,0,MODE_SMA,i);
//---- ðàçáèåíèå çíà÷åíèé íà âîñõîäÿùèå è íèñõîäÿùèå è ðàñïðåäåëåíèå ïî áóôåðàì
for(i=limit-1; i>=0; i--)
{
current=OsmaBuffer[i]; //òåêóùåå çíà÷åíèå ãèñòîãðàììû MACD
prev=OsmaBuffer[i+1]; //ïðåäûäóùåå çíà÷åíèå ãèñòîãðàììû MACD
current1=MacdBuffer[i]; //òåêóùåå çíà÷åíèå MACD
prev1=MacdBuffer[i+1]; //ïðåäûäóùåå çíà÷åíèå MACD
//---- äëÿ ãèñòîãðàììû MACD
if(current>=prev) //åñëè òåêóùåå çíà÷åíèå ãèñòîãðàììû MACD ðàâíî èëè ïðåâûøàåò ïðåäûäóùåå, òî...
{
ExtBuffer1[i]=current; //...îòîáðàæàåòñÿ áóôåð âîñõîäÿùåé ãèñòîãðàììû MACD,
ExtBuffer2[i]=EMPTY_VALUE; //áóôåð íèñõîäÿùåé ãèñòîãðàììû MACD íå îòîáðàæàåòñÿ
}
else //â èíîì ñëó÷àå...
{
ExtBuffer1[i]=current; //...îòîáðàæàåòñÿ áóôåð íèñõîäÿùåé ãèñòîãðàììû MACD,
ExtBuffer2[i]=current; //è áóôåð íèñõîäÿùåé (÷òîáû ëèíèÿ îòðèñîâûâàëàñü áåç ðàçðûâîâ)
}
//---- äëÿ MACD
if(current1>=prev1) //åñëè òåêóùåå çíà÷åíèå MACD ðàâíî èëè ïðåâûøàåò ïðåäûäóùåå, òî...
{
ExtBuffer3[i]=current1; //...îòîáðàæàåòñÿ áóôåð âîñõîäÿùåãî MACD,
ExtBuffer4[i]=EMPTY_VALUE; //áóôåð íèñõîäÿùåãî MACD íå îòîáðàæàåòñÿ
}
else //â èíîì ñëó÷àå...
{
ExtBuffer4[i]=current1; //...îòîáðàæàåòñÿ áóôåð íèñõîäÿùåãî MACD,
ExtBuffer3[i]=EMPTY_VALUE; //áóôåð âîñõîäÿùåãî MACD íå îòîáðàæàåòñÿ
{
}
//---- êîíåö
}
}
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
---