TrendlessOS

Author: Copyright � 2010, LenIFCHIK
Indicators Used
Moving average indicator
Miscellaneous
Implements a curve of type %1
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 supported. Formatting help

Markdown Formatting Guide

Element Markdown Syntax
Heading # H1
## H2
### H3
Bold **bold text**
Italic *italicized text*
Link [title](https://www.example.com)
Image ![alt text](image.jpg)
Code `code`
Code Block ```
code block
```
Quote > blockquote
Unordered List - Item 1
- Item 2
Ordered List 1. First item
2. Second item
Horizontal Rule ---