Author: Copyright � 2006, maloma.
1-3-6
0 Views
0 Downloads
0 Favorites
1-3-6
//+------------------------------------------------------------------+
//|                                        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 ---