Indicators Used
0
Views
0
Downloads
0
Favorites
TrendlessAG
//+------------------------------------------------------------------+
//| TrendlessAG.mq4 |
//| Copyright © 2012, Barmaley |
//|Îñöèëëÿòîð Áåñòðåíäîâîñòè íàïèñàí â ñîîòâåòñòâèè ñ îïèñàíèåì, |
//|ïðèâåä¸ííûì â êíèãå Äæî ÄèÍàïîëè "Òîðãîâëÿ ñ ïðèìåíåíèåì óðîâíåé |
//|ÄèÍàïîëè" |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2012, Barmaley"
#property indicator_separate_window //â îòäåëüíîì îêíå
#property indicator_buffers 1 //÷èñëî áóôåðîâ èíäèêàòîðà
//---- âõîäíûå ïàðàìåòðû
extern int SMAPeriod=7; //ïåðèîä ïðîñòîé ñêîëüçÿùåé ñðåäíåé â ôîðìóëå îñöèëëÿòîðà
extern int PointsCount=600; //êîëè÷åñòâî òî÷åê äëÿ ðàñ÷åòà èíäèêàòîðà. Ôîðåêñ-êëóá ðåêîìåíäóåò ìåñÿö äëÿ ÷àñîâîê. Íó ãäå-òî òàê è âîçüìåì.
extern int In100=90; // Ñêîëüêî % òî÷åê èíäèêàòîðà äîëæíû âõîäèòü â èíòåðâàë +-100%
//---- ïðèñîåíèå öâåòà
#property indicator_color1 Yellow //öâåò ëèíèè èíäèêàòîðà
//---- áóôåðû èíäèêàòîðà
double Buf[]; //áóôåð ðàñ÷¸òà èíäèêàòîðà
double BufX[]; // Âñïîìîãàòåëüíûé ìàññèâ
//+------------------------------------------------------------------+
//| Èíèöèàëèçàöèÿ. Ôóíêöèÿ init |
//+------------------------------------------------------------------+
int init()
{
//---- óñòàíîâêà áàðà, ñ êîòîðîãî íà÷èíàåòñÿ îòðèñîâêà èíäèêàòîðà
SetIndexDrawBegin(0,PointsCount);
IndicatorDigits(1);
//---- ðàçìåòêà áóôåðîâ
SetIndexBuffer(0,Buf); //áóôåð ãðàôèêà èíäèêàòîðà
//---- íàçâàíèå îêíà äàííûõ è îêíà èíäèêàòîðà
string short_name="TrendlessAG ("+SMAPeriod+")"; //â íàçâàíèè îòîáðàæàåòñÿ òîëüêî ïåðèîä SMA
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//---- Óñòàíîâêà óðîâíåé
SetLevelValue(1,100.0); //óðîâåíü 100% ïåðåêóïëåííîñòè
SetLevelValue(2,80.0); //óðîâåíü 80% ïåðåêóïëåííîñòè
SetLevelValue(3,60.0); //óðîâåíü 60% ïåðåêóïëåííîñòè
SetLevelValue(4,0.0); //óðîâåíü 0
SetLevelValue(5,-60.0); //óðîâåíü 60% ïåðåïðîäàííîñòè
SetLevelValue(6,-80.0); //óðîâåíü 80% ïåðåïðîäàííîñòè
SetLevelValue(7,-100.0); //óðîâåíü 100% ïåðåïðîäàííîñòè
//---- ñòèëü óðîâíåé
SetLevelStyle(STYLE_DOT,1,Silver); //ñòèëü îòîáðàæåíèÿ óðîâíåé
//---- êîíåö èíèöèàëèçàöèè
return(0);
}
//+------------------------------------------------------------------+
//| TrendlessAG |
//+------------------------------------------------------------------+
int start()
{
// int limit=PointsCount; // À çà÷åì áîëüøå òî ñ÷èòàòü?
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+In100/100;
ArrayResize(BufX,ArraySize(Buf));
if(limit<SMAPeriod)return;
for(int i=0; i<limit; i++)
{
Buf[i]=Close[i]-iMA(Symbol(),Period(),SMAPeriod,0,MODE_SMA,PRICE_CLOSE,i); // ðàññ÷èòûâàåì Close-SMA íà çàäàííîì êîëè÷åñòâå òî÷åê
BufX[i]=MathAbs(Buf[i]); // À ýòî àáñîëþòíûå çíà÷åíèÿ Close-SMA
}
ArraySort(BufX); // Ñîðòèðóåì àáñîëþòíûå çíà÷åíèÿ ïî âîçðàñòàíèþ
double level_100=BufX[limit*In100/100]; // îïðåäåëÿåì óðîâåíü +-100%. In100=90% çíà÷åíèé èíäèêàòîðà - âíóòðè ýòîãî ïðîìåæóòêà.
for(i=0; i<limit; i++)
{
if(level_100!=0)
Buf[i]=Buf[i]/level_100*100; //Íîðìèðóåì èñõîäíûé áóôåð îòíîñèòåëüíî 100%-ãî óðîâíÿ.
else Buf[i]=EMPTY_VALUE;
}
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
---