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 Formatting Guide
# H1
## H2
### H3
**bold text**
*italicized text*
[title](https://www.example.com)

`code`
```
code block
```
> blockquote
- Item 1
- Item 2
1. First item
2. Second item
---