i-divergencebar

Author: Copyright � 2010, D.Zhebrak aka Necron
i-divergencebar
Indicators Used
Bill Williams Alligator
Miscellaneous
Implements a curve of type %1
2 Views
0 Downloads
0 Favorites
i-divergencebar
//+******************************************************************+
//|                                              i-DivergenceBar.mq4 |
//|                      Copyright © 2010, Dmitry Zhebrak aka Necron |
//|                                                  www.mqlcoder.ru |
//+------------------------------------------------------------------+
//|Äàííûé ïðîäóêò ïðåäíàçíà÷åí äëÿ íåêîìåð÷åñêîãî                    |
//|èñïîëüçîâàíèÿ. Ïóáëèêàöèÿ ðàçðåøåíà òîëüêî ïðè óêàçàíèè èìåíè     |
//|àâòîðà ( Necron ). Ðåäàêòèðîâàíèå èñõîäíîãî ðàçðåøàåòñÿ òîëüêî ïðè|
//|óñëîâèè ñîõðàíåíèÿ äàííîãî òåêñòà, ññûëîê è èìåíè àâòîðà. Ïðîäàæà |
//|èíäèêàòîðà èëè îòäåëüíûõ åãî ÷àñòåé ÇÀÏÐÅÙÅÍÀ.                    |
//|Àâòîð íå íåñåò îòâåòñòâåííîñòè çà âîçìîæíûå óáûòêè, ïîëó÷åííûå â  |
//|ðåçóëüòàòå èñïîëüçîâàíèÿ èíäèêàòîðà.                              |
//|Ïî âñåì âîïðîñàì, ñâÿçàííûìè ñ ðàáîòîé èíäèêàòîðà èëè             |
//|èëè ïðåäëîæåíèÿìè ïî åãî äîðàáîòêå îáðàùàòüñÿ íà email:           |
//|mqlcoder@yandex.ru                                                |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, D.Zhebrak aka Necron"
#property link      "www.mqlcoder.ru"
#property link      "mailto: mqlcoder@yandex.ru"
//---
#define   version   "1.0.0.0"
//---- ïîäêëþ÷àåì ÿäðî ñèñòåìû Profitunity_MT4
//---- íàñòðîéêè öâåòîâ äëÿ îòîáðàæåíèÿ
#property indicator_chart_window
#property indicator_buffers 4
#property indicator_color1 Red
#property indicator_color2 Red
#property indicator_color3 Lime
#property indicator_color4 Lime
//---- âíåøíèå íàñòðîéêè èíäèêàòîðà
extern int     BarsToProcess=200;   //ìàêñèìàëüíîå êîëëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà (-1 âñå)
extern int width=2;                 //òîëùèíà îòîáðàæåíèÿ òåëà ðàçâðîòíîãî áàðà 
//---- áóôåðû äëÿ îòîáðàæåíèÿ èíäèêàòîðà
double   UpBuffer1[],
         DnBuffer1[],
         UpBuffer2[],
         DnBuffer2[];
//+------------------------------------------------------------------+
//| Èíöèàëèçàöèÿ èíäèêàòîðà                                          |
//+------------------------------------------------------------------+
int init()
  {
//---- íà÷àëî èíöèàëèçàöèè èíäèêàòîðà  
//---- ñâÿçûâàåì ìàññèâ ñ áóôåðîì èíäèêàòîðà   
   SetIndexBuffer(0,UpBuffer1);
   SetIndexBuffer(1,DnBuffer1);
   SetIndexBuffer(2,UpBuffer2);
   SetIndexBuffer(3,DnBuffer2);
//---- óñòàíîâèì ñòèëü îòîáðàæåíèÿ ëèíèé
   SetIndexStyle(0,DRAW_HISTOGRAM,0,width);
   SetIndexStyle(1,DRAW_HISTOGRAM,0,width);
   SetIndexStyle(2,DRAW_HISTOGRAM,0,width);
   SetIndexStyle(3,DRAW_HISTOGRAM,0,width);
//---- óñòàíîâèì êîðîòêîå èìÿ èíäèêàòîðà è êàæäîé ëèíèè â îòäåëüíîñòè
   IndicatorShortName("i-DiverBar");
   SetIndexLabel(0,NULL);
   SetIndexLabel(1,NULL);
   SetIndexLabel(2,NULL);
   SetIndexLabel(3,NULL);
   SetIndexLabel(4,NULL);
   SetIndexLabel(5,NULL);
//---- èíèöèàëèçàöèÿ çàâåðøåíà
   return(0);
  }
//+------------------------------------------------------------------+
//| Äåèíèöèàëèçàöèÿ èíäèêàòîðà                                       |
//+------------------------------------------------------------------+   
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+ 
//| Ðàñ÷åò èíäèêàòîðà                                                | 
//+------------------------------------------------------------------+   
int start()
  {
   int  i,counted_bars=IndicatorCounted(),limit;
   double lips,teeth,jaw,up,dn;
//---- ïðîâåðêà íà âîçìîæíûå îøèáêè
   if(counted_bars<0) return(-1);
//---- ïðîâåðêà íàëè÷èÿ èñòîðèè  
   if(iBars(Symbol(),Period())<14)
     {
      Print("Íåäîñòàòî÷íî áàðîâ äëÿ ðàñ÷åòà èíäèêàòîðà!");
      return(-1);
     }
//---- íàéäåì êîëè÷åñòâî áàðîâ äëÿ ðàñ÷åòà èíäèêàòîðà    
   limit=Bars-counted_bars-1;
   if(Bars-counted_bars>2) limit=Bars-35;
   if(limit>BarsToProcess && BarsToProcess>0) limit=BarsToProcess;
//---- îòîáðàçèì èíäèêàòîð 
   for(i=limit;i>=0;i--)
     {
      UpBuffer1[i] =EMPTY;
      UpBuffer2[i] =EMPTY;
      //---
      DnBuffer1[i] =EMPTY;
      DnBuffer2[i] =EMPTY;
      //---
      lips=iAlligator(Symbol(),Period(),13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORLIPS,i);
      teeth=iAlligator(Symbol(),Period(),13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORTEETH,i);
      jaw=iAlligator(Symbol(),Period(),13,8,8,5,5,3,MODE_SMMA,PRICE_MEDIAN,MODE_GATORJAW,i);
      //---
      up=MathMax(lips,MathMax(teeth,jaw));
      dn=MathMin(lips,MathMin(teeth,jaw));
      //---
      if(High[i]>High[i+1] && Close[i]<High[i]-0.5*(High[i]-Low[i]) && Low[i]>up)
        {
         UpBuffer1[i] = Low[i]+(High[i]-Low[i])/2+(High[i]-Low[i])/10;
         DnBuffer1[i] = Low[i]+(High[i]-Low[i])/2-(High[i]-Low[i])/10;
        }
      else
      if(Low[i]<Low[i+1] && Close[i]>Low[i]+0.5*(High[i]-Low[i]) && High[i]<dn)
        {
         UpBuffer2[i] = Low[i]+(High[i]-Low[i])/2+(High[i]-Low[i])/10;
         DnBuffer2[i] = Low[i]+(High[i]-Low[i])/2-(High[i]-Low[i])/10;
        }
     }
   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 ---