Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
TrendlessOS
//+------------------------------------------------------------------+
//| TrendlessOS Histogram.mq4 |
//| Copyright © 2010, LenIFCHIK |
//|Îñöèëëÿòîð Áåñòðåíäîâîñòè íàïèñàí â ñîîòâåòñòâèè ñ îïèñàíèåì, |
//|ïðèâåä¸ííûì â êíèãå Äæî ÄèÍàïîëè "Òîðãîâëÿ ñ ïðèìåíåíèåì óðîâíåé |
//|ÄèÍàïîëè" |
//|Èíäèêàòîð îòîáðàæàåòñÿ â âèäå ãèñòîãðàììû, ñòîëáèêè êîòîðîé |
//|èçìåíÿþò öâåò, êîãäà çíà÷åíèå èíäèêàòîðà áîëüøå èëè ðàâíî óðîâíþ |
//|ïåðåêóïëåííîñòè è ìåíüøå èëè ðàâíî óðîâíþ ïåðåïðîäàííîñòè. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, LenIFCHIK"
#property indicator_separate_window //â îòäåëüíîì îêíå
#property indicator_buffers 5 //÷èñëî áóôåðîâ èíäèêàòîðà
//---- âõîäíûå ïàðàìåòðû
extern int SMAPeriod=7; //ïåðèîä ïðîñòîé ñêîëüçÿùåé ñðåäíåé â ôîðìóëå îñöèëëÿòîðà
extern double OBLevel=0.0047; //ãðàíèöà óðîâíÿ ïåðåêóïëåííîñòè
extern double OSLevel=-0.00473; //ãðàíèöà óðîâíÿ ïåðåïðîäàííîñòè
extern string Note_for_Display_mode="1 - line, 2 - colored histogram";
extern int Display_mode=2; //ïåðåêëþ÷åíèå ðåæèìà îòîáðàæåíèÿ (îäíîöâåòíàÿ ëèíèÿ/ìíîãîöâåòíàÿ ãèñòîãðàììà)
//---- ïðèñîåíèå öâåòà
#property indicator_color1 Navy //öâåò ëèíèè èíäèêàòîðà
#property indicator_color2 DimGray //öâåò ãðàôèêà èíäèêàòîðà (-60;60)
#property indicator_color3 Lime //öâåò ãðàôèêà èíäèêàòîðà (-80;-60]||[60;80)
#property indicator_color4 Blue //öâåò ãðàôèêà èíäèêàòîðà (-100;-80]||[80;100)
#property indicator_color5 Red //öâåò ãðàôèêà èíäèêàòîðà (--;-100]||[100;++)
//---- áóôåðû èíäèêàòîðà
double TrendlessOSBuffer[]; //áóôåð ðàñ÷¸òà èíäèêàòîðà
double ExtBuffer1[]; //áóôåð ãðàôèêà èíäèêàòîðà (-60;60)
double ExtBuffer2[]; //áóôåð ãðàôèêà èíäèêàòîðà (-80;-60]||[60;80)
double ExtBuffer3[]; //áóôåð ãðàôèêà èíäèêàòîðà (-100;-80]||[80;100)
double ExtBuffer4[]; //áóôåð ãðàôèêà èíäèêàòîðà (--;-100]||[100;++)
//+------------------------------------------------------------------+
//| Èíèöèàëèçàöèÿ. Ôóíêöèÿ init |
//+------------------------------------------------------------------+
int init()
{
string short_name;
double EightyOBlvl=0.8*OBLevel; //ìåòîäèêà ðàñ÷¸òà 80% ïåðåêóïëåííîñòè
double EightyOSlvl=0.8*OSLevel; //ìåòîäèêà ðàñ÷¸òà 80% ïåðåïðîäàííîñòè
double SixtyOBlvl=0.6*OBLevel; //ìåòîäèêà ðàñ÷¸òà 60% ïåðåêóïëåííîñòè
double SixtyOSlvl=0.6*OSLevel; //ìåòîäèêà ðàñ÷¸òà 60% ïåðåïðîäàííîñòè
//---- ñòèëü îòðèñîâêè
switch(Display_mode) //ïåðåêëþ÷åíèå ìåæäó ðåæèìàìè ëèíèè è ãèñòîãðàììû
{
case 1 : //ÎÄÍÎÖÂÅÒÍÀß ËÈÍÈß
SetIndexStyle(0,DRAW_LINE,STYLE_SOLID,1); //ñòèëü ëèíèè èíäèêàòîðà (â ðåæèìå ìíîãîöâåòíîé ãèñòîãðàììû íå îòîáðàæàåòñÿ)
SetIndexStyle(1,DRAW_NONE); //áóôåð ãðàôèêà èíäèêàòîðà (-60;60)
SetIndexStyle(2,DRAW_NONE); //áóôåð ãðàôèêà èíäèêàòîðà (-80;-60]||[60;80)
SetIndexStyle(3,DRAW_NONE); //áóôåð ãðàôèêà èíäèêàòîðà (-100;-80]||[80;100)
SetIndexStyle(4,DRAW_NONE); //áóôåð ãðàôèêà èíäèêàòîðà (--;-100]||[100;++)
break;
case 2 : //ÌÍÎÃÎÖÂÅÒÍÀß ÃÈÑÒÎÃÐÀÌÌÀ
SetIndexStyle(0,DRAW_NONE); //ñòèëü ëèíèè èíäèêàòîðà (â ðåæèìå ìíîãîöâåòíîé ãèñòîãðàììû íå îòîáðàæàåòñÿ)
SetIndexStyle(1,DRAW_HISTOGRAM,STYLE_SOLID,1); //áóôåð ãðàôèêà èíäèêàòîðà (-60;60)
SetIndexStyle(2,DRAW_HISTOGRAM,STYLE_SOLID,2); //áóôåð ãðàôèêà èíäèêàòîðà (-80;-60]||[60;80)
SetIndexStyle(3,DRAW_HISTOGRAM,STYLE_SOLID,2); //áóôåð ãðàôèêà èíäèêàòîðà (-100;-80]||[80;100)
SetIndexStyle(4,DRAW_HISTOGRAM,STYLE_SOLID,2); //áóôåð ãðàôèêà èíäèêàòîðà (--;-100]||[100;++)
break;
default :
Display_mode=2; //ïî óìîë÷àíèþ - ìíîãîöâåòíàÿ ãèñòîãðàììà
}
//---- óñòàíîâêà áàðà, ñ êîòîðîãî íà÷èíàåòñÿ îòðèñîâêà èíäèêàòîðà
SetIndexDrawBegin(0,SMAPeriod);
SetIndexDrawBegin(1,SMAPeriod);
SetIndexDrawBegin(2,SMAPeriod);
SetIndexDrawBegin(3,SMAPeriod);
SetIndexDrawBegin(4,SMAPeriod);
//---- ðàçìåòêà áóôåðîâ
SetIndexBuffer(0,TrendlessOSBuffer); //áóôåð ãðàôèêà èíäèêàòîðà
SetIndexBuffer(1,ExtBuffer1); //áóôåð ãðàôèêà èíäèêàòîðà (-60;60)
SetIndexBuffer(2,ExtBuffer2); //áóôåð ãðàôèêà èíäèêàòîðà (-80;-60]||[60;80)
SetIndexBuffer(3,ExtBuffer3); //áóôåð ãðàôèêà èíäèêàòîðà (-100;-80]||[80;100)
SetIndexBuffer(4,ExtBuffer4); //áóôåð ãðàôèêà èíäèêàòîðà (--;-100]||[100;++)
//---- íàçâàíèå îêíà äàííûõ è îêíà èíäèêàòîðà
short_name="TrendlessOS Histogramm("+SMAPeriod+")"; //â íàçâàíèè îòîáðàæàåòñÿ òîëüêî ïåðèîä SMA
IndicatorShortName(short_name);
SetIndexLabel(0,short_name);
//---- îïðåäåëåíèå óðîâíåé
SetLevelValue(1,OBLevel); //óðîâåíü 100% ïåðåêóïëåííîñòè
SetLevelValue(2,OSLevel); //óðîâåíü 100% ïåðåïðîäàííîñòè
SetLevelValue(3,EightyOBlvl); //óðîâåíü 80% ïåðåêóïëåííîñòè
SetLevelValue(4,EightyOSlvl); //óðîâåíü 80% ïåðåïðîäàííîñòè
SetLevelValue(5,SixtyOBlvl); //óðîâåíü 60% ïåðåêóïëåííîñòè
SetLevelValue(6,SixtyOSlvl); //óðîâåíü 60% ïåðåïðîäàííîñòè
//---- ñòèëü óðîâíåé
SetLevelStyle(STYLE_DOT,1,Silver); //ñòèëü îòîáðàæåíèÿ óðîâíåé
//---- êîíåö èíèöèàëèçàöèè
return(0);
}
//+------------------------------------------------------------------+
//| TrendlessOS Histogram |
//+------------------------------------------------------------------+
int start()
{
int limit;
int counted_bars=IndicatorCounted();
double current;
//---- ïåðåñ÷¸ò ïîñëåäíåãî áàðà
if(counted_bars>0) counted_bars--;
limit=Bars-counted_bars;
//---- ðàñ÷¸ò èíäèêàòîðà
for(int i=0; i<limit; i++)
TrendlessOSBuffer[i]=Close[i]-iMA(NULL,0,SMAPeriod,0,MODE_SMA,PRICE_CLOSE,i);
//---- ðàçáèåíèå çíà÷åíèé èíäèêàòîðà íà 2 èíòåðâàëà è ðàñïðåäåëåíèå îòîáðàæåíèÿ ïî 2 áóôåðàì
for(i=limit-1; i>=0; i--)
{
current=TrendlessOSBuffer[i];
if(current>0.6*OSLevel && current<0.6*OBLevel) //åñëè çíà÷íèå èíäèêàòîðà íàõîäèòñÿ â äèàïàçîíå (-60%;60%)
{
ExtBuffer1[i]=current; //òî îòîáðàæàåòñÿ ãèñòîãðàììà ExtBuffer1[]
ExtBuffer2[i]=0.0;
ExtBuffer3[i]=0.0;
ExtBuffer4[i]=0.0;
}
else //åñëè çíà÷åíèå èíäèêàòîðà íå âõîäèò â äèàïàçîí (-60%;60%), òî ïðîâåðÿåòñÿ ñëåäóþùåå óñëîâèå
{
if((current>0.8*OSLevel && current<=0.6*OSLevel) || (current>=0.6*OBLevel && current<0.8*OBLevel)) //åñëè çíà÷åíèå èíäèêàòîðà â äèàïàçîíå (-80%;-60%] èëè [60%;80%)
{
ExtBuffer1[i]=0.0;
ExtBuffer2[i]=current; //òî îòîáðàæàåòñÿ ãèñòîãðàììà ExtBuffer2[]
ExtBuffer3[i]=0.0;
ExtBuffer4[i]=0.0;
}
else //åñëè çíà÷åíèå èíäèêàòîðà íå âõîäèò è â äèàïàçîí (-80%;-60%]||[60%;80%), òî ïðîâåðÿåòñÿ ñëåäóþùåå óñëîâèå
{
if((current>OSLevel && current<=0.8*OSLevel) || (current>=0.8*OBLevel && current<OBLevel)) //åñëè çíà÷åíèå èíäèêàòîðà â äèàïàçîíå (-100%;-80%] èëè [80%;100%)
{
ExtBuffer1[i]=0.0;
ExtBuffer2[i]=0.0;
ExtBuffer3[i]=current; //òî îòîáðàæàåòñÿ ExtBuffer3[]
ExtBuffer4[i]=0.0;
}
else //åñëè çíà÷åíèå èíäèêàòîðà íå âõîäèò è â äèàïàçîí (-100%;-80%]||[80%;100%), òî ïðîâåðÿåòñÿ ñëåäóþùåå óñëîâèå
{
if(current<=OSLevel || current>=OBLevel) //åñëè çíà÷åíèå èíäèêàòîðà âõîäèò â äèàïàçîí (--;-100%]||[100%;++)
{
ExtBuffer1[i]=0.0;
ExtBuffer2[i]=0.0;
ExtBuffer3[i]=0.0;
ExtBuffer4[i]=current; //òî îòîáðàæàåòñÿ ExtBuffer4[]
}
}
}
}
}
//---- êîíåö
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
---