0 Views
0 Downloads
0 Favorites
KillGap
//+------------------------------------------------------------------+
//|                                                      ProjectName |
//|                                      Copyright 2012, CompanyName |
//|                                       http://www.companyname.net |
//+------------------------------------------------------------------+
/*
âûçîâ èç êîäîâ 
iCustom(
   string symbol,       // ñèìâîëüíîå èìÿ èíñòðóìåíòà (NULL- òåêóùèé)
   int timeframe,       // òàéì-ôðåéì (0- òåêóùèé)
   "KillGap",           // èìÿ ýòîãî èíäèêàòîðà
   //
   int GapPoints,       // ïîðîã èäåíòèôèêàöèè ãýïà â ïï.; <0 - áåç àçïîëíåíèÿ 1-ãî áóôåðà - ñìåùåíèÿ
   int GapHours,        // ïîðîã ïî âðåìåíè ìåæäó ñìåæíûìè áàðàìè 
                           // >0 - â ÷àñàõ 
                           // <0 - â ìèíóòàõ
   int applied_price,   // òèï öåíû:
                           // 0 - PRICE_CLOSE - öåíà çàêðûòèÿ 
                           // 1 - PRICE_OPEN - öåíà îòêðûòèÿ
                           // 2 - PRICE_HIGH - ìàêñ.öåíà
                           // 3 - PRICE_LOW - ìèí.öåíà
                           // 4 - PRICE_MEDIAN - ñðåäíÿÿ öåíà,(high+low)/2
                           // 5 - PRICE_TYPICAL - òèïè÷íàÿ öåíà,(high+low+close)/3
                           // 6 - PRICE_WEIGHTED - âçâåøåííàÿ öåíà çàêðûòèÿ,(high+low+close+close)/4
                           // 7 - îáúåì
   //
   int mode,            // mode - íîìåð áóôåðà èíäèêàòîðà:
                           // 0- áóôåð áåçãýïîâûõ êîòèðîâîê
                           // 1- áóôåð ñìåùåíèÿ - íàêîïèòåëüíàÿ ðàçíèöà ãýïîâ
   int shift            // ñäâèã
  );

==============

iCustom(NULL,0,"KillGap",GapPoints,GapHours,Price, 0,i); // êîòèðîâêè
iCustom(NULL,0,"KillGap",GapPoints,GapHours,Price, 1,i); // ñìåùåíèå
*/

#property indicator_chart_window
#property  indicator_buffers 2
// âõîäíûå ïàðàìåòðû
extern int GapPoints=33; // ïîðîã èäåíòèôèêàöèè ãýïà â ïï.
double gp; // ïîðîã èäåíòèôèêàöèè ãýïà â öåíàõ
bool kg=0; // 1- óáèâàòü ãýï
bool ZeroBase=1; // 0 - áåç ñìåùåíèÿ; áóôåð base[] çàïîëíÿåòñÿ íóëÿìè
extern int GapHours=24; // ïîðîã ïî âðåìåíè ñìåæíûõ áàðîâ â ÷àñàõ (>0) èëè ìèíóòàõ (<0)
int gt; // ïîðîã ïî âðåìåíè â ñåêóíäàõ
extern int Price=0; // òèï öåíû
                    // èíä.áóôåðû
double   price[],// áóôåð áåçãýïîâûõ êîòèðîâîê
base[]; // áóôåð ñìåùåíèÿ
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void init() 
  {
   if(GapPoints<0) {kg=1; GapPoints=-GapPoints; ZeroBase=0;} // 0 - áåç ñìåùåíèÿ
   if(GapPoints>0) {kg=1; gp=GapPoints*Point;} // ïîðîã èäåíòèôèêàöèè ãýïà â öåíàõ
   if(GapHours>0) gt=GapHours*3600; else gt=-GapHours*60; // ïîðîã ïî âðåìåíè â ñåêóíäàõ
   SetIndexBuffer(0,price); // áóôåð áåçãýïîâûõ êîòèðîâîê
   SetIndexLabel(0,"Price "+GapPoints+"p.");
   SetIndexBuffer(1,base); // áóôåð ñìåùåíèÿ
   SetIndexLabel(1,"Base "+GapHours+"h.");
   IndicatorDigits(5);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void start() 
  {
// ãðàíèöà ïåðåñ÷åòà
   static datetime gtime; // âðåìÿ ãýïà
                          //   int limit=Bars-IndicatorCounted()-1;  
//   if(limit>1) {limit=Bars-1; gtime=0;}
   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+1;
// çàïîëíåíèå ìàññèâà áåçãýïîâûìè êîòèðîâêàìè
   for(int i=limit; i>=0; i--) 
     {
      if(kg*(gtime!=Time[i])) 
        {
         static double base_i; // ñìåùåíèå, êîððåêòèðóþùåå ãýï
         double gap=Close[i+1]-Open[i]; // âåëè÷èíà ãýïà â öåíàõ
         if((MathAbs(gap)>=gp)*(Time[i]-Time[i+1]>gt)) 
           {
            base_i+=gap; // âû÷èñëåíèå ñìåùåíèÿ
            gtime=Time[i]; // âðåìÿ ãýïà
           }
        }
      if(i==limit && i>1) base_i=0; // èíèöèàëèçàöèÿ
      base[i]=ZeroBase*base_i; // ñìåùåíèå
                               // âûáîð öåíû
      switch(Price) 
        {
         case 0: double p=Close[i]; break;
         case 1: p=Open[i]; break;
         case 2: p=High[i]; break;
         case 20: p=(2*High[i]+Low[i]+Close[i])/4; break; // Weighted High
         case 3: p=Low[i]; break;
         case 30: p=(High[i]+2*Low[i]+Close[i])/4; break; // Weighted Low
         case 4: p=(High[i]+Low[i])/2; break; // Middle
         case 5: p=(High[i]+Low[i]+Close[i])/3; break; // Typical
         case 6: p=(High[i]+Low[i]+2*Close[i])/4; break; // Weighted
         case 7: p=Volume[i]-base_i; break;
         default: p=Close[i];
        }
      price[i]=p+base_i; // êîòèðîâêè
     }
  }
//+------------------------------------------------------------------+

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 ---