Automatic_analysis_lines

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

extern int Quant_Bars=55;//êîëè÷ áàðîâ äëÿ ðàñ÷åòà
extern bool show_canal=false;//ïîêàçàòü êàíàë
//+------------------------------------------------------------------+
int init(){return(0);}
int deinit(){del_ob();return(0);}
//+------------------------------------------------------------------+
int start()
 { int H_0,H_0_1,H_1;
   int L_0,L_0_1,L_1;
   int Quant_Bars1,Quant_Bars2;
   string name,name2,name3,name5,name6,name7;
   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";
   color Channel_Color=LightGreen;
   bool Channel_as_Ray=true;
   int Line_Width=2;
   del_ob();
//-----------ãëàâíûå ýêñòðåìóìû----------- 
   H_0=ArrayMaximum(High,Quant_Bars);//íîìåð áàðà ñ ìàêñèìóìîì
   L_0=ArrayMinimum(Low,Quant_Bars);//íîìåð áàðà ñ ìèíèìóìîì
// ===============íàêëîí ýêñòðåìàëüíîé ïðÿìîé ââåðõ=========
   //--------------------- ãëàâíûé òðåíä---------------------
  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);
 if(show_canal)
  {if(ObjectFind("Channel")!=0)
   {ObjectCreate("Channel",OBJ_CHANNEL,0,time_L_0,MinimumL_0,time_L_0_1,MinimumL_0_1,time_H_0,MaximumH_0); 
    ObjectSet("Channel",OBJPROP_COLOR,Channel_Color); 
    ObjectSet("Channel",OBJPROP_WIDTH,Line_Width); 
    ObjectSet("Channel",OBJPROP_RAY,Channel_as_Ray);
    ObjectSet("Channel",OBJPROP_STYLE,STYLE_SOLID);}
  else
   {ObjectMove("Channel",0,time_L_0,MinimumL_0); 
	 ObjectMove("Channel",1,time_L_0_1,MinimumL_0_1);
	 ObjectMove("Channel",2,time_H_0,MaximumH_0);}}}
 // ===============íàêëîí ýêñòðåìàëüíîé ïðÿìîé âíèç=========
 //--------------------- ãëàâíûé òðåíä---------------------   
   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=H_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);
  if(show_canal)
   {if(ObjectFind("Channel")!=0)
    {ObjectCreate("Channel",OBJ_CHANNEL,0,time_H_0,MaximumH_0,time_H_0_1,MaximumH_0_1,time_L_0,MinimumL_0); 
     ObjectSet("Channel",OBJPROP_COLOR,Channel_Color); 
     ObjectSet("Channel",OBJPROP_WIDTH,Line_Width); 
     ObjectSet("Channel",OBJPROP_RAY,Channel_as_Ray);
     ObjectSet("Channel",OBJPROP_STYLE,STYLE_SOLID);}
	else
	 {ObjectMove("Channel",0,time_H_0,MaximumH_0);
	  ObjectMove("Channel",1,time_H_0_1,MaximumH_0_1);
	  ObjectMove("Channel",2,time_L_0,MinimumL_0);}}}
  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 ---