Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
ma_dex_Angle_MA_v3
//+------------------------------------------------------------------+
//| dex_Angle_MA_v3.mq4 |
//| GrayMan77 |
//| |
//| Èäåÿ - Akadex. |
//| |
//| Ïîñòðîåíèå íåêîåãî ïîäîáèÿ ñðåäíåé ïî ñïåöèàëüíûì óñëîâèÿì |
//| (íà ïðèìåðå äâèæåíèÿ ñðåäíåé ââåðõ): |
//| - åñëè óãîë íàêëîíà ñðåäíåé óâåëè÷èâàåòñÿ - èíäèêàòîð èäåò |
//| çà ñðåäíåé; |
//| - åñëè óãîë íàêëîíà ñðåäíåé óìåíüøàåòñÿ - èíäèêàòîð èäåò ïî |
//| ïðÿìîé ñ òàêèì æå íàêëîíîì, êàê áûë ðàíåå ó ñðåäíåé; |
//| - åñëè öåíà (Close) ïåðåñåêàåò ëèíèþ èíäèêàòîðà, èíäèêàòîð äàëåå|
//| èäåò ïî ãðîðèçîíòàëüíîé ïðÿìîé äî òåõ ïîð, ïîêà íàêëîí ñðåäíåé|
//| íå èçìåíèòñÿ íà ïðîòèâîïîëîæíûé (âíèç) |
//| |
//| Ïîñòðîåíèå èíäèêàòîðà ïðè äâèæåíèè ñðåäíåé âíèç: ïðîòèâîïîëîæíûå|
//| óñëîâèÿ. |
//| |
//| v3 - èçìåíåí àëãîðèòì. |
//| |
//+------------------------------------------------------------------+
#property copyright "Akadex & GrayMan77"
#property link ""
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Aqua
#property indicator_color3 Yellow
#property indicator_color4 White
//---- input parameters
extern int MA_Period=24;
extern int MA_Method=0;
extern int MA_Price=0;
//---- buffers
double ExtMapBuffer1[];
double red[],blue[],yellow[],white[];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//---- indicators
IndicatorBuffers(5);
SetIndexStyle(0,DRAW_LINE);
SetIndexBuffer(0,red);
SetIndexStyle(1,DRAW_LINE);
SetIndexBuffer(1,blue);
SetIndexStyle(2,DRAW_LINE);
SetIndexBuffer(2,yellow);
SetIndexStyle(3,DRAW_LINE);
SetIndexBuffer(3,white);
SetIndexStyle(4,DRAW_LINE);
SetIndexBuffer(4,ExtMapBuffer1);
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
int limit,i;
int counted_bars=IndicatorCounted();
double MA,MA1,MA2,MA3;
double delta,delta1,delta2;
double Line;
//----
//---- ïðîâåðêà íà âîçìîæíûå îøèáêè
if(counted_bars<0) return(-1);
//---- ïîñëåäíèé ïîñ÷èòàííûé áàð áóäåò ïåðåñ÷èòàí
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
if(limit>Bars-MA_Period)
{
limit=Bars-MA_Period-3;
ExtMapBuffer1[Bars-MA_Period]=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,Bars-MA_Period);
ExtMapBuffer1[Bars-MA_Period-1]=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,Bars-MA_Period-1);
ExtMapBuffer1[Bars-MA_Period-2]=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,Bars-MA_Period-2);
}
for(i=limit;i>=0;i--)
{
MA=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,i);
MA1=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,i+1);
MA2=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,i+2);
//MA3=iMA(NULL,0,MA_Period,0,MA_Method,MA_Price,i+3);
delta=MA-MA1;
delta1=MA1-MA2;
//delta2=MA2-MA3;
// Ýêñòðåìóì ÌÀ (ìàêñèìóì èëè ìèíèìóì) - âîçâðàøàåì èíäèêàòîð íà ÌÀ
if((delta>0 && delta1<=0) || (delta<0 && delta1>=0))
{
ExtMapBuffer1[i]=MA;
ExtMapBuffer1[i+1]=MA1; // ÇÄÅÑÜ ÂÎÇÌÎÆÍÀ ÏÅÐÅÐÈÑÎÂÊÀ (ÍÀ 1-Ì ÁÀÐÅ) !!!!!
white[i]=MA;
white[i+1]=MA1;
continue;
}
// Âû÷èñëèòü çíà÷åíèå êàñàòåëüíîé ê èíäèêàòîðó
Line=2*ExtMapBuffer1[i+1]-ExtMapBuffer1[i+2];
//Line=2*MA1-MA2;
// Äâèæåíèå ÌÀ ââåðõ
if(delta>=0)
{
if(MA>Line)
{ExtMapBuffer1[i]=MA; // èäåì ïî ÌÀ
white[i]=MA;
}
else
{
// åñëè 2 áàðà íàçàä èíäèêàòîð áû íèæå ñðåäíåé
if(ExtMapBuffer1[i+2]<MA2)
{ExtMapBuffer1[i]=MA; // èäåì ïî ÌÀ
white[i]=MA;
}
else
{ExtMapBuffer1[i]=2.*ExtMapBuffer1[i+1]-ExtMapBuffer1[i+2]; // èäåì ïî íàêëîííîé ïðÿìîé
if(MA1>=MA) red[i]=ExtMapBuffer1[i]; else blue[i]=ExtMapBuffer1[i];
}
}
// Ïåðåñå÷åíèå ñ öåíîé
if(Close[i+1]<ExtMapBuffer1[i+1])
{ExtMapBuffer1[i]=ExtMapBuffer1[i+1]; // íà÷èíàåì ãîðèçîíòàëüíóþ ëèíèþ
yellow[i]=ExtMapBuffer1[i];
}
}
// Äâèæåíèå ÌÀ âíèç
if(delta<0)
{
if(MA<Line) {ExtMapBuffer1[i]=MA; // èäåì ïî ÌÀ
white[i]=MA;
}
else
{
// åñëè 2 áàðà íàçàä èíäèêàòîð áû âûøå ñðåäíåé
if(ExtMapBuffer1[i+2]>MA2)
{ExtMapBuffer1[i]=MA; // èäåì ïî ÌÀ
white[i]=MA;
}
else {ExtMapBuffer1[i]=2.*ExtMapBuffer1[i+1]-ExtMapBuffer1[i+2]; // èäåì ïî íàêëîííîé ïðÿìîé
if(MA1>=MA) red[i]=ExtMapBuffer1[i]; else blue[i]=ExtMapBuffer1[i];
}
}
// Ïåðåñå÷åíèå ñ öåíîé
if(Close[i+1]>ExtMapBuffer1[i+1])
{ExtMapBuffer1[i]=ExtMapBuffer1[i+1]; // íà÷èíàåì ãîðèçîíòàëüíóþ ëèíèþ
yellow[i]=ExtMapBuffer1[i];
}
}
}
//----
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
---