ZigZagOnFractals

Author: Scriptong
ZigZagOnFractals
0 Views
0 Downloads
0 Favorites
ZigZagOnFractals
//+------------------------------------------------------------------+
//|                                             ZigZagOnFractals.mq4 |
//|                                                        Scriptong |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Scriptong"
#property link      "http://fortrader.ru/"

#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 Red
//---- buffers
double Buf[];
int LastZZ;
double FUp, FDn;
datetime LastBar, ZeroBarBit;
//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
//---- indicators
   SetIndexStyle(0,DRAW_SECTION);
   SetIndexBuffer(0,Buf);
   SetIndexEmptyValue(0,0.0);
   LastBar = 0;
   ZeroBarBit = 0;
//----
   return(0);
  }

//+------------------------------------------------------------------+
//| Ïîèñê ïîñëåäíèõ äâóõ ôðàêòàëîâ (îäèí Up- è îäèí Down-ôðàêòàë)    |
//+------------------------------------------------------------------+ 
void Fract(int Num)
{
 FUp = 0; FDn = 0;
 for(int i = Num+1; i <= LastZZ; i++)
   {
    double F = iFractals(Symbol(), 0, MODE_UPPER, i);
    if(F != 0 && FUp == 0)
      FUp = F;
    F = iFractals(Symbol(), 0, MODE_LOWER, i);
    if(F != 0 && FDn == 0)
      FDn = F;
    if(FUp != 0 && FDn != 0)
      return;  
   }
}  
 
//+------------------------------------------------------------------+
//| Íîðìàëèçàöèÿ çíà÷åíèé äî òî÷íîñòè êîòèðîâîê äàííîé âàëþòû        |
//+------------------------------------------------------------------+  
double ND(double A)
{
 return(NormalizeDouble(A, Digits));
}  
  
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
  {
//----
   if(LastBar != Time[0])
     {
      ArrayInitialize(Buf, 0.0);
      LastZZ = Bars-2;
      for(int i = Bars-3; i > 0; i--)
        {
         Fract(i);  //  ïåðåìåííûå FUp è FDn çàíîñèì çíà÷åíèÿ ïîñëåäíèõ äâóõ ôðàêòàëîâ
         // Åñëè áûëî ïðîáèòèå Up-ôðàêòàëà, òî íàõîäèì ñàìóþ íèæíþþ òî÷êó îò òåêóùåãî ìîìåíòà äî ïðåäûäóùåé âåðøèíû
         // Ýòî è áóäåò ëîêàëüíûé ìèíèìóì
         if(ND(High[i]) > ND(FUp) && ND(FUp) != 0 && ND(Buf[LastZZ]) != ND(Low[LastZZ]))
            if(LastZZ-i-1 > 0)
              {
               int Ext = iLowest(Symbol(), 0, MODE_LOW, LastZZ-i-1, i+1);
               Buf[Ext] = Low[Ext];
               LastZZ = Ext;
               continue;
              }
         // Åñëè áûëî ïðîáèòèå Down-ôðàêòàëà, òî íàõîäèì ñàìóþ âûñøóþ òî÷êó îò òåêóùåãî ìîìåíòà äî ïðåäûäóùåé âïàäèíû
         // Ýòî è áóäåò ëîêàëüíûé ìàêñèìóì
         if(ND(Low[i]) < ND(FDn) && ND(FDn) != 0 && ND(Buf[LastZZ]) != ND(High[LastZZ]))
            if(LastZZ-i-1 > 0)
              { 
               Ext = iHighest(Symbol(), 0, MODE_HIGH, LastZZ-i-1, i+1);
               Buf[Ext] = High[Ext];
               LastZZ = Ext;
              }
        }
     }
   
   // Îòñëåæèâàåì ïðîáèòèå íà íóëåâîì áàðå
   if(ZeroBarBit != Time[0])
     {
      Fract(2);
      if(ND(High[0]) > ND(FUp) && ND(FUp) != 0 && ND(Buf[LastZZ]) != ND(Low[LastZZ]))
        {
         Ext = iLowest(Symbol(), 0, MODE_LOW, LastZZ-1, 1);
         Buf[Ext] = Low[Ext];
         ZeroBarBit = Time[0];
         return(0);
        } 
      if(ND(Low[0]) < ND(FDn) && ND(FDn) != 0 && ND(Buf[LastZZ]) != ND(High[LastZZ]))
        {
         Ext = iHighest(Symbol(), 0, MODE_HIGH, LastZZ-1, 1);
         Buf[Ext] = High[Ext];
         ZeroBarBit = Time[0];
        }  
     }
   // ------------------------------------
//   Print("i = ",i, ", FUp = ", FUp, ", FDn = ", FDn, ", LastZZ = ", LastZZ);
     
   LastBar = Time[0];  
//----
   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 ---