Automatic_analysis_lines_scr

Author: Roll
0 Views
0 Downloads
0 Favorites
Automatic_analysis_lines_scr
//+------------------------------------------------------------------+
//|                                 Automatic_analysis_lines_scr.mq4 |
//|                                                             Roll |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Roll"
#property link ""
#property show_inputs

extern int Quant_Bars=65;//êîëè÷ áàðîâ â èñòîðèè
extern bool Del_Objects=false;//óäàëåíèå îáúåêòîâ false/true
//--------------------------------------+
int deinit()
{if(Del_Objects)del_ob();return(0);}
//+-------script program start function--+
int start()
{int H_0,H_0_1,H_1,L_0,L_0_1,L_1,Quant_Bars1,Quant_Bars2;
 string name,name2,name3,name5,name6;
 datetime time_H_0,time_H_0_1,time_H_1; 
 datetime time_L_0,time_L_0_1,time_L_1;
 double Maximum,MaximumH_0,MaximumH_0_1,MaximumH_1;
 double Minimum,MinimumL_0,MinimumL_0_1,MinimumL_1;
 name="MyTrend"; 
 name2="MyTrend_1";
 name3="MyTrend_2";
 name5="Fibo_1";
 name6="Fibo_2";
 del_ob();
//---------------------ýêñòðåìóìû----------- 
 H_0=ArrayMaximum(High,Quant_Bars);//íîìåð áàðà ñ ìàêñèìóìîì
 L_0=ArrayMinimum(Low,Quant_Bars);//íîìåð áàðà ñ ìèíèìóìîì
 Maximum=High[H_0];Minimum=Low[L_0];
 // ===============íàêëîí ýêñòðåìàëüíîé ïðÿìîé ââåðõ=========
   //--------------------- ãëàâíûé òðåíä---------------------
   if(H_0<L_0)            
     {L_0=MIN(Quant_Bars);           //êîððåêöèÿ íà ôëýòå 
       time_L_0=iTime(0,0,L_0);
       MinimumL_0=Low[L_0];
      L_0_1=L_0-2;
       time_L_0_1=iTime(0,0,L_0_1);
       MinimumL_0_1=Low[L_0_1];
      int j=L_0_1;   
       ObjectCreate(name2,OBJ_TREND,0,time_L_0,MinimumL_0,time_L_0_1,MinimumL_0_1);//îáðàçîâàíèå òðåíäïðÿìîé(1-ÿ êîððåêöèÿ ìèíèìóìà) 
       ObjectSet(name2,OBJPROP_STYLE,STYLE_SOLID);
       ObjectSet(name2,OBJPROP_COLOR,DeepSkyBlue);
       ObjectSet(name2,OBJPROP_WIDTH,2);
       ObjectSet(name2,OBJPROP_TIMEFRAMES,0);    
    for(int i=j;i>=0;i--)                    //2-ÿ êîððåêöèÿ ìèíèìóìà
     {if(Low[i]<ObjectGetValueByShift(name2,i))
      {L_0_1=i;
       time_L_0_1=iTime(0,0,i);
       MinimumL_0_1=Low[L_0_1]; 
       ObjectMove(name2,1,time_L_0_1,MinimumL_0_1);//Ñêîëüçÿùèé ìèíèìóì
       continue;}} //êîíåö 2-é êîððåêöèè ìèíèìóìà
    //---------------òåêóùèé òðåíä-(ìàëûé)------------------  
      Quant_Bars1=H_0+1;         //íîâîå çíà÷åíèå êîëè÷ áàðîâ â èñòîðèè,íà÷èíàÿ ñ ìàêñèìóìà
       H_0=MAX(Quant_Bars1);      //êîððåêöèÿ íà ôëýòå
       time_H_0=iTime(0,0,H_0);
       MaximumH_0=High[H_0];      //íîâàÿ ìàêñèìàëüíàÿ öåíà,1êîîðä
      H_0_1=H_0-2;                //êîððåêöèÿ íà ôëýòå
       time_H_0_1=iTime(0,0,H_0_1);
       MaximumH_0_1=High[H_0_1];
      L_1=ArrayMinimum(Low,Quant_Bars1);
       L_1=MIN(Quant_Bars1);      //êîððåêöèÿ íà ôëýòå
       time_L_1=iTime(0,0,L_1);
       MinimumL_1=Low[L_1];
     int g=H_0_1; 
   ObjectCreate(name3,OBJ_TREND,0,time_H_0,MaximumH_0,time_H_0_1,MaximumH_0_1);//îáðàçîâàíèå òðåíä ïðÿìîé
       ObjectSet(name3,OBJPROP_STYLE,STYLE_SOLID);
       ObjectSet(name3,OBJPROP_COLOR,Violet);
       ObjectSet(name3,OBJPROP_WIDTH,2);
       ObjectSet(name3,OBJPROP_TIMEFRAMES,0);    
   for(int k=g;k>=0;k--)
     {if(High[k]>ObjectGetValueByShift(name3,k))
      {time_H_0_1=iTime(0,0,k);
       MaximumH_0_1=High[k]; 
       ObjectMove(name3,1,time_H_0_1,MaximumH_0_1);//íîâàÿ ìàêñèìàëüíàÿ öåíà,2êîîðä
       continue;}}  
   ObjectCreate(name5,OBJ_FIBO,0,time_L_0,MinimumL_0,time_H_0,MaximumH_0);
   ObjectCreate(name6,OBJ_FIBO,0,time_H_0,MaximumH_0,time_L_1,MinimumL_1); 
       ObjectSet(name6,OBJPROP_LEVELCOLOR,Magenta);
       ObjectSet(name6,OBJPROP_LEVELWIDTH,2);
       datetime left_rect1=time_H_0;
       datetime right_rect1=iTime(0,0,H_0-5);
       double price1_rect1=MinimumL_0+(MaximumH_0-MinimumL_0)*0.618 ;
       double price2_rect1=MinimumL_0+(MaximumH_0-MinimumL_0)*0.382;
   ObjectCreate("rect1",OBJ_RECTANGLE,0,left_rect1,price1_rect1,right_rect1,price2_rect1);
       ObjectSet("rect1",OBJPROP_COLOR,MediumBlue);
       datetime left_rect2=iTime(0,0,L_1+5);
       datetime right_rect2=time_L_1;
       double price1_rect2=MinimumL_1+(MaximumH_0-MinimumL_1)*0.618; 
       double price2_rect2=MinimumL_1+(MaximumH_0-MinimumL_1)*0.382;
   ObjectCreate("rect2",OBJ_RECTANGLE,0,left_rect2,price1_rect2,right_rect2,price2_rect2);
       ObjectSet("rect2",OBJPROP_COLOR,Crimson);}
  // ===============íàêëîí ýêñòðåìàëüíîé ïðÿìîé âíèç=========
   //--------------------- ãëàâíûé òðåíä---------------------   
    else if(H_0>L_0)
      {H_0=MAX(Quant_Bars);  //êîððåêöèÿ íà ôëýòå
       time_H_0=iTime(0,0,H_0);
       MaximumH_0=High[H_0]; //íîâàÿ ìàêñèìàëüíàÿ öåíà,1êîîðä
      H_0_1=H_0-2;
       time_H_0_1=iTime(0,0,H_0_1);
       MaximumH_0_1=High[H_0_1];
       j=H_0_1;
    ObjectCreate(name2,OBJ_TREND,0,time_H_0,MaximumH_0,time_H_0_1,MaximumH_0_1);//îáðàçîâàíèå òðåíäïðÿìîé(1-ÿ êîððåêöèÿ ìèíèìóìà) 
       ObjectSet(name2,OBJPROP_STYLE,STYLE_SOLID);
       ObjectSet(name2,OBJPROP_COLOR,Violet);
       ObjectSet(name2,OBJPROP_WIDTH,2);
       ObjectSet(name2,OBJPROP_TIMEFRAMES,0);    
    for(i=j;i>=0;i--)                             //2-ÿ êîððåêöèÿ ìèíèìóìà
     {if(High[i]>ObjectGetValueByShift(name2,i))
      {H_0_1=i;time_H_0_1=iTime(0,0,i);
       MaximumH_0_1=High[H_0_1]; 
       ObjectMove(name2,1,time_H_0_1,MaximumH_0_1);//Ñêîëüçÿùèé ìèíèìóì
       continue ;}} //êîíåö 2-é êîððåêöèè ìèíèìóìà
    //---------------òåêóùèé òðåíä-(ìàëûé)------------------  
       Quant_Bars1=L_0+1;      //íîâîå çíà÷åíèå êîëè÷ áàðîâ â èñòîðèè, íà÷èíàÿ ñ ìàêñèìóìà
       L_0=MIN(Quant_Bars1);   //êîððåêöèÿ íà ôëýòå
       time_L_0=iTime(0,0,L_0);
       MinimumL_0=Low[L_0];    //íîâàÿ ìàêñèìàëüíàÿ öåíà,1êîîðä
     L_0_1=L_0-2;              //êîððåêöèÿ íà ôëýòå
       time_L_0_1=iTime(0,0,L_0_1);
       MinimumL_0_1=Low[L_0_1];
     H_1=ArrayMaximum(Low,Quant_Bars1);
       H_1=MAX(Quant_Bars1);   //êîððåêöèÿ íà ôëýòå
       time_H_1=iTime(0,0,H_1);
       MaximumH_1=High[H_1];
     g=L_0_1;
       ObjectCreate(name3,OBJ_TREND,0,time_L_0,MinimumL_0,time_L_0_1,MinimumL_0_1);//îáðàçîâàíèå òðåíä ïðÿìîé
       ObjectSet(name3,OBJPROP_STYLE,STYLE_SOLID);
       ObjectSet(name3,OBJPROP_COLOR,DeepSkyBlue);
       ObjectSet(name3,OBJPROP_WIDTH,2);
       ObjectSet(name3,OBJPROP_TIMEFRAMES,0);    
   for(k=g;k>=0;k--)
     {if(Low[k]<ObjectGetValueByShift(name3,k))
       {time_L_0_1=iTime(0,0,k);
       MinimumL_0_1=Low[k]; 
       ObjectMove(name3,1,time_L_0_1,MinimumL_0_1);//íîâàÿ ìàêñèìàëüíàÿ öåíà,2êîîðä
       continue;}}  
       ObjectCreate(name5,OBJ_FIBO,0,time_H_0,MaximumH_0,time_L_0,MinimumL_0 );
       ObjectSet(name5,OBJPROP_LEVELCOLOR,Magenta);
       ObjectSet(name5,OBJPROP_LEVELWIDTH,2);
       ObjectCreate(name6,OBJ_FIBO,0,time_L_0,MinimumL_0,time_H_1,MaximumH_1);
       ObjectSet(name6,OBJPROP_LEVELCOLOR,Aqua);
       left_rect1=time_L_0;
       right_rect1=iTime(0,0,L_0+5);
       price1_rect1=MinimumL_0+(MaximumH_0-MinimumL_0)*0.618 ;
       price2_rect1=MinimumL_0+(MaximumH_0-MinimumL_0)*0.382;
    ObjectCreate("rect1",OBJ_RECTANGLE,0,left_rect1,price1_rect1,right_rect1,price2_rect1);
       ObjectSet("rect1",OBJPROP_COLOR,Crimson);
       left_rect2=iTime(0,0,H_1+5);
       right_rect2=time_H_1;
       price1_rect2=MinimumL_0+(MaximumH_1-MinimumL_0)*0.618 ; 
       price2_rect2=MinimumL_0+(MaximumH_1-MinimumL_0)*0.382;
    ObjectCreate("rect2",OBJ_RECTANGLE,0,left_rect2,price1_rect2,right_rect2,price2_rect2);
       ObjectSet("rect2",OBJPROP_COLOR,MediumBlue);          
  }return(0);}
//+------------------------------------------------------------------+
int MAX (int QBars) //ôóíêöèÿ äëÿ êîððåêöèè ìàêñèìóìà ïðÿìîé ïðè ôëýòå           
 {int z;int BarMaxi=ArrayMaximum(High,QBars); //íîìåð áàðà ñ ìàêñèìóìîì
  double Maxi=High[BarMaxi];                  //ìàêñèìàëüíàÿ öåíà
 for(z=BarMaxi;z>=0;z--)                     
  {if(MathAbs(Maxi-High[z])<=2*Point&& z>=4)//êîððåêöèÿ ìàêñèìóìà 
    {BarMaxi=z;continue;}}return(BarMaxi);}
int MIN(int QBarsm)  //ôóíêöèÿ äëÿ êîððåêöèè ìèíèìóìà ïðÿìîé ïðè ôëýòå 
  {int y;int BarMini=ArrayMinimum(Low,QBarsm);
   double Mini=Low[BarMini];
    for(y=BarMini;y>=0;y--)                     
     {if(MathAbs(Mini-Low[y])<=2*Point&&y>=4)                
       {BarMini=y;continue;}}return(BarMini);}
void del_ob()
 {ObjectDelete("MyTrend"); 
  ObjectDelete("MyTrend_1");
  ObjectDelete("MyTrend_2");
  ObjectDelete("Fibo_1");
  ObjectDelete("Fibo_2");
  ObjectDelete("rect1");
  ObjectDelete("rect2");
  ObjectDelete("Channel");}

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