ElliotsTarget3

Author: Copyright � 2011, Vladimir Hlystov
Indicators Used
Fractals
0 Views
0 Downloads
0 Favorites
ElliotsTarget3
//+------------------------------------------------------------------+
//|                                                ElliotsTarget.mq4 |
//|                               Copyright © 2011, Vladimir Hlystov |
//|                                                cmillion@narod.ru |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, Vladimir Hlystov"
#property link      "http://cmillion.narod.ru"
#property indicator_chart_window
//+------------------------------------------------------------------+
extern int before = 7;     //ñêîëüêî ñâå÷åé äî ôðàêòàëà 
extern int after  = 2;     //ñêîëüêî ñâå÷åé ïîñëå ôðàêòàëà 
double Buffer[];
datetime TimeOld,TimeOldÂoëíà2;
//+------------------------------------------------------------------+
int init()
{
   Comment("ElliotsTarget","\n","Copyright © 2011, Vladimir Hlystov","\n","http://cmillion.narod.ru",
           "\n","before",before,
           "\n","after",after);
   return(0);
}
//+------------------------------------------------------------------+
int deinit()
{
   ObjectDelete("W1 ");
   ObjectDelete("W2 ");
   ObjectDelete("W3 ");
   ObjectDelete("W3 _");
   return(0);
}
//+------------------------------------------------------------------+
int start()
{
   double fr,PricednBar1,PriceupBar1,PriceÂîëíà2;
   string Name;
   datetime TimednBar1,TimeupBar1,TimeÂoëíà2;
   int Bar0,j;
   for (int i=after; i<500; i++)
   {
      if (PricednBar1!=0 && PriceupBar1!=0) break;
      if (PricednBar1==0)
      {
         fr = Fractal(MODE_LOWER,i);
         if (fr!=0) 
         {
            TimednBar1=Time[i];PricednBar1=fr;
            if (Bar0==0) 
            {
               Bar0=i;
               for (j=0; j<Bar0; j++)
               {
                  if (PriceÂîëíà2<High[j]) {PriceÂîëíà2=High[j];TimeÂoëíà2=Time[j];} //íàõîäèì ìàêñèìóì
               }
            }
         }
      }
      if (PriceupBar1==0)
      {
         fr = Fractal(MODE_UPPER,i);
         if (fr!=0) 
         {
            TimeupBar1=Time[i];PriceupBar1=fr;
            if (Bar0==0) 
            {
               Bar0=i;
               for (j=0; j<Bar0; j++)
               {
                  if (PriceÂîëíà2>Low[j] || PriceÂîëíà2==0) {PriceÂîëíà2=Low[j];TimeÂoëíà2=Time[j];} //íàõîäèì ìèíèìóì
               }
            }
         }
      }
   }
   
   double Price0,Price1;
   datetime Time0,Time1;
   if (TimeupBar1>TimednBar1) 
   {
      Time0 = TimeupBar1; 
      Time1 = TimednBar1; 
      Price0 = PriceupBar1; 
      Price1 = PricednBar1;
   } 
   else                       
   {
      Time0 = TimednBar1; 
      Time1 = TimeupBar1; 
      Price0 = PricednBar1; 
      Price1 = PriceupBar1;
   }
   if ((Time0!=TimeOld)||(TimeÂoëíà2!=TimeOldÂoëíà2))
   {
      TimeOld=Time0;
      TimeOldÂoëíà2 = TimeÂoëíà2;
      
      datetime TimeEnd1 = TimeÂoëíà2+MathAbs(TimeupBar1-TimednBar1)*0.38;
      datetime TimeEnd2 = TimeÂoëíà2+MathAbs(TimeupBar1-TimednBar1)*0.62;
      
      double Wawes1 = MathAbs(Price0-Price1);
      
      if (Wawes1*0.38<MathAbs(PriceÂîëíà2-Price0) && Wawes1*0.62>MathAbs(PriceÂîëíà2-Price0))
      {
         double PriceEnd1,PriceEnd2;

         if (TimeupBar1>TimednBar1)
         {
            PriceEnd1 = PriceÂîëíà2+Wawes1*1.00;
            PriceEnd2 = PriceÂîëíà2+Wawes1*1.62;
         }
         else
         {
            PriceEnd1 = PriceÂîëíà2-Wawes1*1.0;
            PriceEnd2 = PriceÂîëíà2-Wawes1*1.62;
         }
         
         Name = "W1 ";
         ObjectDelete(Name);
         ObjectCreate(Name, OBJ_TREND, 0,Time1,Price1,Time0,Price0);
         ObjectSet   (Name, OBJPROP_COLOR, Green);
         ObjectSet   (Name, OBJPROP_STYLE, 0);
         ObjectSet   (Name, OBJPROP_WIDTH, 2);
         ObjectSet   (Name, OBJPROP_BACK,  true);
         ObjectSet   (Name, OBJPROP_RAY,   false);
         
         Name = "W2 ";
         ObjectDelete(Name);
         ObjectCreate(Name, OBJ_TREND, 0,Time0,Price0,TimeÂoëíà2,PriceÂîëíà2);
         ObjectSet   (Name, OBJPROP_COLOR, Green);
         ObjectSet   (Name, OBJPROP_STYLE, 0);
         ObjectSet   (Name, OBJPROP_WIDTH, 0);
         ObjectSet   (Name, OBJPROP_BACK,  true);
         ObjectSet   (Name, OBJPROP_RAY,   false);

         Name = "W3 ";
         ObjectDelete(Name);
         ObjectCreate(Name, OBJ_TREND, 0,TimeÂoëíà2,PriceÂîëíà2,TimeEnd1,PriceEnd1);
         ObjectSet   (Name, OBJPROP_COLOR, Gray);
         ObjectSet   (Name, OBJPROP_STYLE, STYLE_DASH);
         ObjectSet   (Name, OBJPROP_WIDTH, 0);
         ObjectSet   (Name, OBJPROP_BACK,  true);
         ObjectSet   (Name, OBJPROP_RAY,   false);

         Name=StringConcatenate(Name,"_");
         ObjectDelete(Name);
         ObjectCreate(Name, OBJ_RECTANGLE,0,0,0,0,0);
         ObjectSet   (Name, OBJPROP_STYLE, STYLE_DASH);
         ObjectSet   (Name, OBJPROP_COLOR, Gray);
         ObjectSet   (Name, OBJPROP_BACK,  false);
         ObjectSet   (Name, OBJPROP_TIME1 ,TimeEnd1);
         ObjectSet   (Name, OBJPROP_PRICE1,PriceEnd1);
         ObjectSet   (Name, OBJPROP_TIME2 ,TimeEnd2);
         ObjectSet   (Name, OBJPROP_PRICE2,PriceEnd2);
      }
   }
   return(0);
}
//+------------------------------------------------------------------+
double Fractal(int tip,int bar)
{
   int i,n;
   double fr,fr1;
   if (tip==MODE_UPPER)
   {
      fr1 = iFractals(NULL,0,MODE_UPPER,bar);
      if (fr1==0) return(0);
      i=bar;n=0;
      while (true)
      {
         i++; 
         if (i>Bars) return(0);
         fr = High[i];
         if (fr==0) continue; else n++;
         if (n>=before) break;
         if (fr>fr1) return(0);
      }
      i=bar;n=0;
      while (true)
      {
         i--;
         if (i==0) return(0);
         fr = High[i];
         if (fr==0) continue; else n++;
         if (n>=after) break;
         if (fr>fr1) return(0);
      }
      return(fr1);
   }
   if (tip==MODE_LOWER)
   {
      fr1 = iFractals(NULL,0,MODE_LOWER,bar);
      if (fr1==0) return(0);
      i=bar;n=0;
      while (true)
      {
         i++; 
         if (i>Bars) return(0);
         fr = Low[i];
         if (fr==0) continue; else n++;
         if (n>=before) break;
         if (fr<fr1) return(0);
      }
      i=bar;n=0;
      while (true)
      {
         i--; 
         if (i==0) return(0);
         fr = Low[i];
         if (fr==0) continue; else n++;
         if (n>=after) break;
         if (fr<fr1) return(0);
      }
      return(fr1);
   }
}
//+------------------------------------------------------------------+

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