Author: Copyright � 2006, maloma.
1-3-6_v1
0 Views
0 Downloads
0 Favorites
1-3-6_v1
//+------------------------------------------------------------------+
//|                                        maloma 4 vicont 1-2-3.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, maloma."
#property  indicator_chart_window
//----
extern double level_1=1.2971;//1.2937;//1.2937;
extern double level_2=1.2694;//1.2725;//1.2630;
extern double level_3=1.2978;//1.2874;//1.2829;
/*
extern double level_1=1.2764;//1.2483;//1.2937;
extern double level_2=1.2668;//1.2641;//1.2630;
extern double level_3=1.2714;//1.2524;//1.2829;
*/
extern bool Show_etalon=true;
extern bool Show_target=true;
extern bool Show_true=true;
//----
double level_4=0; double level_5=0; double level_6=0; double level_t=0;
double etalon_4=0; double etalon_5=0; double etalon_6=0;
double true_4=0; double true_5=0; double true_6=0;
int index_1=0; int index_2=0; int index_3=0; int index_4=0; int index_5=0; int index_6=0;
int p2d=0; int p3d=0;
bool get_4=false; bool get_5=false; bool get_6=false;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int init()
  {
   int i=0;
   if (level_3>level_2 && level_1>level_2) {p3d=1; p2d=-1;}
   if (level_3<level_2 && level_1<level_2) {p3d=-1; p2d=1;}
   if (p3d==1)
     {
      while(index_3==0 && i<Bars)
        {
         if (High[i]==level_3) index_3=Time[i];
        i++;}
      while(index_2==0 && i<Bars)
        {
         if (Low[i]==level_2) index_2=Time[i];
        i++;}
        while(index_1==0 && i<Bars){
         if (High[i]==level_1) index_1=Time[i];
        i++;}
     } else
      if (p3d==-1)
        {
           while(index_3==0 && i<Bars){
            if (Low[i]==level_3) index_3=Time[i];
           i++;}
         while(index_2==0 && i<Bars)
           {
            if (High[i]==level_2) index_2=Time[i];
           i++;}
         while(index_1==0 && i<Bars)
           {
            if (Low[i]==level_1) index_1=Time[i];
           i++;}
        }
   CreateText("Point_3","3",index_3,level_3+50*Point*p3d,FireBrick);
   CreateText("Point_2","2",index_2,level_2+50*Point*p2d,FireBrick);
   CreateText("Point_1","1",index_1,level_1+50*Point*p3d,FireBrick);
   //----
   etalon_4=(level_3-(level_3-level_2)*1.62);
   etalon_5=((level_3-(level_3-(level_3-(level_3-level_2)*1.62))/2)-(level_2-(level_3-(level_3-(level_3-(level_3-level_2)*1.62))/2)));
   etalon_6=(((level_3-(level_3-level_2)*1.62)-((level_3-(level_3-level_2)*1.62)-((level_3-(level_3-(level_3-(level_3-level_2)*1.62))/2)-(level_2-(level_3-(level_3-(level_3-(level_3-level_2)*1.62))/2))))/2)-(level_1-((level_3-(level_3-level_2)*1.62)-((level_3-(level_3-level_2)*1.62)-((level_3-(level_3-(level_3-(level_3-level_2)*1.62))/2)-(level_2-(level_3-(level_3-(level_3-(level_3-level_2)*1.62))/2))))/2)));
   //----
   if (Show_etalon) CreateObj("Etalon_4",OBJ_HLINE,Time[0],etalon_4,SaddleBrown,STYLE_DASHDOT);
   if (Show_etalon) CreateObj("Etalon_5",OBJ_HLINE,Time[0],etalon_5,Teal,STYLE_DASHDOT);
   if (Show_etalon) CreateObj("Etalon_6",OBJ_HLINE,Time[0],etalon_6,Purple,STYLE_DASHDOT);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int deinit()
  {
   if (ObjectFind("Point_1")==0) ObjectDelete("Point_1");
   if (ObjectFind("Point_2")==0) ObjectDelete("Point_2");
   if (ObjectFind("Point_3")==0) ObjectDelete("Point_3");
   if (ObjectFind("Point_4")==0) ObjectDelete("Point_4");
   if (ObjectFind("Point_5")==0) ObjectDelete("Point_5");
   if (ObjectFind("Point_6")==0) ObjectDelete("Point_6");
   if (ObjectFind("Etalon_4")==0) ObjectDelete("Etalon_4");
   if (ObjectFind("Etalon_5")==0) ObjectDelete("Etalon_5");
   if (ObjectFind("Etalon_6")==0) ObjectDelete("Etalon_6");
   if (ObjectFind("Level_4")==0) ObjectDelete("Level_4");
   if (ObjectFind("Level_5")==0) ObjectDelete("Level_5");
   if (ObjectFind("Level_6")==0) ObjectDelete("Level_6");
   if (ObjectFind("True_4")==0) ObjectDelete("True_4");
   if (ObjectFind("True_5")==0) ObjectDelete("True_5");
   if (ObjectFind("True_6")==0) ObjectDelete("True_6");
   Comment ("");
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void find_4(int index, int dir)
  {
   int tBar=iBarShift(Symbol(),0,index,false)-1;
   if (tBar<0) return(0);
   level_4=(level_3-(level_3-level_2)*1.62);
   if (Show_target) CreateObj("Level_4",OBJ_HLINE,Time[0],level_4,Gold,STYLE_DOT);
   for(int cb=tBar;cb>=0;cb--)
     {
      if (dir==-1)
        {
         if (true_4==0) double level=level_4; else level=true_4;
         if (Low[cb]<=level && get_4==false)
           {
            true_4=Low[cb];
            index_4=Time[cb];
            if (Show_true) CreateObj("True_4",OBJ_HLINE,Time[0],true_4,Gold,STYLE_DASH);
            CreateText("Point_4","4",index_4,true_4+50*Point*p2d,Gold);
            level_5=(level_3-(level_3-true_4)/2)-(level_2-(level_3-(level_3-true_4)/2));
            if (Show_target) CreateObj("Level_5",OBJ_HLINE,Time[0],level_5,Aqua,STYLE_DOT);
           }
         if (true_4!=0 && cb>0)
            if (level_5<=High[cb-1])
              {
               get_4=true;
               find_5(index_4,p3d);
              }
        }
      if (dir==1)
        {
         if (true_4==0) level=level_4; else level=true_4;
         if (High[cb]>=level && get_4==false)
           {
            true_4=High[cb];
            index_4=Time[cb];
            if (Show_true) CreateObj("True_4",OBJ_HLINE,Time[0],true_4,Gold,STYLE_DASH);
            CreateText("Point_4","4",index_4,true_4+50*Point*p2d,Gold);
            level_5=(level_3-(level_3-true_4)/2)-(level_2-(level_3-(level_3-true_4)/2));
            if (Show_target) CreateObj("Level_5",OBJ_HLINE,Time[0],level_5,Aqua,STYLE_DOT);
           }
         if (true_4!=0 && cb>0)
            if (level_5>=Low[cb-1])
              {
               get_4=true;
               find_5(index_4,p3d);
              }
        }
     }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void find_5(int index, int dir)
  {
   int tBar=iBarShift(Symbol(),0,index,false)-1;
   if (tBar<0) return(0);
   for(int cb=tBar;cb>=0;cb--)
     {
        if (dir==-1) {
         if (true_5==0) double level=level_5; else level=true_5;
         if (Low[cb]<=level && get_5==false)
           {
            true_5=Low[cb];
            index_5=Time[cb];
            if (Show_true) CreateObj("True_5",OBJ_HLINE,Time[0],true_5,Aqua,STYLE_DASH);
            CreateText("Point_5","5",index_5,true_5+50*Point*p3d,Aqua);
            level_6=(true_4-(true_4-true_5)/2)-(level_1-(true_4-(true_4-true_5)/2));
            if (Show_target) CreateObj("Level_6",OBJ_HLINE,Time[0],level_6,Magenta,STYLE_DOT);
           }
         if (true_5!=0 && cb>0)
            if (level_6<=High[cb-1])
              {
               get_5=true;
               find_6(index_5,p2d);
              }
        }
      if (dir==1)
        {
         if (true_5==0) level=level_5; else level=true_5;
         if (High[cb]>=level && get_5==false)
           {
            true_5=High[cb];
            index_5=Time[cb];
            if (Show_true) CreateObj("True_5",OBJ_HLINE,Time[0],true_5,Aqua,STYLE_DASH);
            CreateText("Point_5","5",index_5,true_5+50*Point*p3d,Aqua);
            level_6=(true_4-(true_4-true_5)/2)-(level_1-(true_4-(true_4-true_5)/2));
            if (Show_target) CreateObj("Level_6",OBJ_HLINE,Time[0],level_6,Magenta,STYLE_DOT);
           }
         if (true_5!=0 && cb>0)
            if (level_6>=Low[cb-1])
              {
               get_5=true;
               find_6(index_5,p2d);
              }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void find_6(int index, int dir)
  {
   int tBar=iBarShift(Symbol(),0,index,false)-1;
   if (tBar<0) return(0);
   for(int cb=tBar;cb>=0;cb--)
     {
      if (dir==-1)
        {
         if (true_6==0) double level=level_6; else level=true_6;
         if (Low[cb]<=level && get_6==false)
           {
            true_6=Low[cb];
            index_6=Time[cb];
            if (Show_true) CreateObj("True_6",OBJ_HLINE,Time[0],true_6,Magenta,STYLE_DASH);
            CreateText("Point_6","6",index_6,true_6+50*Point*p2d,Magenta);
           }
        }
      if (dir==1)
        {
         if (true_6==0) level=level_6; else level=true_6;
         if (High[cb]>=level && get_6==false)
           {
            true_6=High[cb];
            index_6=Time[cb];
            if (Show_true) CreateObj("True_6",OBJ_HLINE,Time[0],true_6,Magenta,STYLE_DASH);
            CreateText("Point_6","6",index_6,true_6+50*Point*p2d,Magenta);
           }
        }
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void CreateText(string name, string text, int index, double level, color col)
  {
   if (ObjectFind(name)==-1)
     {
      ObjectCreate (name,OBJ_TEXT,0,index,level,0,0,0,0);
      ObjectSetText(name, text, 14, "Times New Roman", col);
     }
   else
     {
      ObjectMove(name, 0, index,level);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  void CreateObj(string name, int type, int index, double level, color col, int style)
  {
   if (ObjectFind(name)==-1)
     {
      ObjectCreate (name,type,0,index,level,0,0,0,0);
      ObjectSet    (name, OBJPROP_COLOR, col);
      ObjectSet    (name, OBJPROP_STYLE, style);
     }
   else
     {
      ObjectMove(name, 0, index,level);
     }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
  int start()
  {
   int i=0; int j=0; int k=0;
   find_4(index_3,p2d);
   Comment("1: óðîâåíü=",level_1,"; äàòà=",TimeToStr(index_1,TIME_DATE),"\n",
           "2: óðîâåíü=",level_2,"; äàòà=",TimeToStr(index_2,TIME_DATE),"\n",
           "3: óðîâåíü=",level_3,"; äàòà=",TimeToStr(index_3,TIME_DATE),"\n",
           "4: ýòàëîí=",etalon_4,"; öåëåâîé=",level_4,"; äîñòèãëè=",true_4,"; äàòà=",TimeToStr(index_4,TIME_DATE),"\n",
           "5: ýòàëîí=",etalon_5,"; öåëåâîé=",level_5,"; äîñòèãëè=",true_5,"; äàòà=",TimeToStr(index_5,TIME_DATE),"\n",
           "6: ýòàëîí=",etalon_6,"; öåëåâîé=",level_6,"; äîñòèãëè=",true_6,"; äàòà=",TimeToStr(index_6,TIME_DATE));
   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 ---