Indicators Used
Miscellaneous
2
Views
0
Downloads
0
Favorites
signallength
//+------------------------------------------------------------------+
//| signallength.mq4 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2009, Õëûñòîâ Âëàäèìð"
#property link "ñmillion@narod.ru"
extern color ÖÂÅÒ_ñîïðîòèâëåíèÿ = Orange;
extern color ÖÂÅÒ_ïîääåðæêè = Aqua;
extern int Óñòàâêà=4,
âðåìÿ_óñòàâêè=10;
int X1u,X2u,X3u,X1d,X2d,X3d,bar_1u,bar_2u,bar_3u,bar_1d,bar_2d,bar_3d,âðåìÿ_ïåð,
X1g,X2g,per;
double Y1vg,Y2vg,Y1ng,Y2ng,Y1u,Y2u,Y3u,Y1d,Y2d,Y3d;
double øèðèíà_êàíàëà;
extern bool óäàëÿòü_îòðåçêè = true;//óäàëÿòü_îòðåçêè_ïðè_ñìåíå_ïåðèîäà
#property indicator_chart_window
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
int init()
{
per=Period();
return(0);
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
int deinit()
{
ObjectDelete("Ëèíèÿ ñîïðîòèâëåíèÿ");
ObjectDelete("Ëèíèÿ ïîääåðæêè");
del("Ïåðåñå÷åíèå ");
if (óäàëÿòü_îòðåçêè==true) del("ãðàíèöà");
return(0);
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
int start()
{
while(true)
{
if (âðåìÿ_ïåð!=Time[0])
{
if (bar_3u != ïîèñê_ôðàêòàëà(0, 1) || (ObjectFind("Ëèíèÿ ñîïðîòèâëåíèÿ")!=0))
{
bar_3u = ïîèñê_ôðàêòàëà(0, 1);
bar_2u = ïîèñê_ôðàêòàëà(bar_3u,-1);
bar_1u = ïîèñê_ôðàêòàëà(bar_2u, 1);
X1u=Time[bar_1u];Y1u=High[bar_1u];X2u=Time[bar_3u];Y2u=High[bar_3u];
ObjectDelete("Ëèíèÿ ñîïðîòèâëåíèÿ");
ObjectCreate("Ëèíèÿ ñîïðîòèâëåíèÿ", OBJ_TREND, 0,X1u,Y1u,X2u,Y2u);
ObjectSet ("Ëèíèÿ ñîïðîòèâëåíèÿ", OBJPROP_COLOR, ÖÂÅÒ_ñîïðîòèâëåíèÿ);
ObjectSet ("Ëèíèÿ ñîïðîòèâëåíèÿ", OBJPROP_STYLE, STYLE_DASH);
ObjectSet ("Ëèíèÿ ñîïðîòèâëåíèÿ", OBJPROP_WIDTH, 0);
ObjectSet ("Ëèíèÿ ñîïðîòèâëåíèÿ", OBJPROP_BACK, true);
ObjectSet ("Ëèíèÿ ñîïðîòèâëåíèÿ", OBJPROP_RAY, true);
ðèñóåì_ãðàíèöû(ÖÂÅÒ_ñîïðîòèâëåíèÿ,X1u,Y1u,X2u,Y2u);
}
//-----------------------------------------------------------------------
if (bar_3d != ïîèñê_ôðàêòàëà(0,-1) || (ObjectFind("Ëèíèÿ ïîääåðæêè")!=0))
{
bar_3d = ïîèñê_ôðàêòàëà(0, -1);
bar_2d = ïîèñê_ôðàêòàëà(bar_3d, 1);
bar_1d = ïîèñê_ôðàêòàëà(bar_2d,-1);
X1d=Time[bar_1d];Y1d=Low[bar_1d];X2d=Time[bar_3d];Y2d=Low[bar_3d];
ObjectDelete("Ëèíèÿ ïîääåðæêè");
ObjectCreate("Ëèíèÿ ïîääåðæêè", OBJ_TREND, 0,X1d,Y1d,X2d,Y2d);
ObjectSet ("Ëèíèÿ ïîääåðæêè", OBJPROP_COLOR, ÖÂÅÒ_ïîääåðæêè);
ObjectSet ("Ëèíèÿ ïîääåðæêè", OBJPROP_STYLE, STYLE_DASH);
ObjectSet ("Ëèíèÿ ïîääåðæêè", OBJPROP_WIDTH, 0);
ObjectSet ("Ëèíèÿ ïîääåðæêè", OBJPROP_BACK, true);
ObjectSet ("Ëèíèÿ ïîääåðæêè", OBJPROP_RAY, true);
ðèñóåì_ãðàíèöû(ÖÂÅÒ_ïîääåðæêè,X1d,Y1d,X2d,Y2d);
}
//-----------------------------------------------------------------------
int d=0;
int X_1,X_2;
double Y_1,Y_2;
color ÖÂÅÒ;
for(int n=ObjectsTotal()-1; n>=0; n--)
{
string Obj_N=ObjectName(n);
if (StringFind(Obj_N,"ãðàíèöà",0)!=-1 && ObjectType(Obj_N)==OBJ_TREND)//íàéäåí îáüåêò-òðåíä ê êîòîðîìó âû÷èñëÿåòñÿ ïðèáëèæåíèå
{
X_1 = ObjectGet(Obj_N, OBJPROP_TIME1);
X_2 = ObjectGet(Obj_N, OBJPROP_TIME2);
if (X_1==X_2) {ObjectDelete(Obj_N);continue;}
Y_1 = ObjectGet(Obj_N, OBJPROP_PRICE1);
Y_2 = ObjectGet(Obj_N, OBJPROP_PRICE2);
ÖÂÅÒ= ObjectGet(Obj_N, OBJPROP_COLOR);
//ðèñóåì_çîíó_êîíòðîëÿ(Obj_N,ÖÂÅÒ, X_1,Y_1,X_2,Y_2);
if (X_1<=Time[0] && X_2>=Time[0])//ïîïàäàåò âî âðåìåííîé äèàïàçîí
{
X3d=Time[0];Y3d=Y_1+(Y_2-Y_1)*(X3d-X_1)/(X_2-X_1);//óðàâíåíèå ïðÿìîé
//Comment((Y3d-Bid)/Point);
if (MathAbs(Y3d-Bid)/Point < Óñòàâêà)
{
if (ÖÂÅÒ==ÖÂÅÒ_ñîïðîòèâëåíèÿ)//íèæíÿÿ ãðàíèöà
{d=-1;break;}
else {d= 1;break;}
}
}
}
}
//-----------------------------------------------------------------------
if (d!=0)
{
ObjectCreate("Ïåðåñå÷åíèå "+Obj_N+" "+Time[0], OBJ_ARROW,0,Time[0],Bid,0,0,0,0);
ObjectSet ("Ïåðåñå÷åíèå "+Obj_N+" "+Time[0], OBJPROP_WIDTH, 0);
if (d==1)
{
ObjectSet ("Ïåðåñå÷åíèå "+Obj_N+" "+Time[0], OBJPROP_ARROWCODE,233);
ObjectSet ("Ïåðåñå÷åíèå "+Obj_N+" "+Time[0], OBJPROP_COLOR, ÖÂÅÒ_ïîääåðæêè); // Öâåò
Alert(Symbol()+"Ïåðåñå÷åíèå ãðàíèöû ïîääåðæêè "+Obj_N);
}
else
{
ObjectSet ("Ïåðåñå÷åíèå "+Obj_N+" "+Time[0], OBJPROP_ARROWCODE,234);
ObjectSet ("Ïåðåñå÷åíèå "+Obj_N+" "+Time[0], OBJPROP_COLOR, ÖÂÅÒ_ñîïðîòèâëåíèÿ); // Öâåò
Alert(Symbol()+"Ïåðåñå÷åíèå ãðàíèöû ñîïðîòèâëåíèÿ "+Obj_N);
}
âðåìÿ_ïåð=Time[0];
}
}
if ((ObjectFind("Íèæíÿÿ ãðàíèöà "+string_ïåð(per))==0)&&(ObjectFind("Âåðõíÿÿ ãðàíèöà "+string_ïåð(per))==0))
return(0);
else
{
ObjectDelete("Ëèíèÿ ñîïðîòèâëåíèÿ");
ObjectDelete("Ëèíèÿ ïîääåðæêè");
âðåìÿ_ïåð=Time[1];
}
}
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//////////////////////////////////////////////////////////////////////
int ïîèñê_ôðàêòàëà(int bar, int UP_DN)
{
while(true)//èùåì 1 ôðàêòàë ïîñëå bar
{
bar++;
if (UP_DN == 1 && iFractals(NULL, 0, MODE_UPPER, bar) != 0) return(bar);
if (UP_DN ==-1 && iFractals(NULL, 0, MODE_LOWER, bar) != 0) return(bar);
}
return(0);
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
int del(string Ob)
{
for(int n=ObjectsTotal()-1; n>=0; n--)
{
string Obj_Name=ObjectName(n);
if (StringFind(Obj_Name,Ob,0) != -1) ObjectDelete(Obj_Name);
}
return;
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
string string_ïåð(int p)
{ switch(p)
{ case 1 : return("M_1"); break; //1 ìèíóòà
case 5 : return("M_5"); break; //5 ìèíóò
case 15 : return("M15"); break; //15 ìèíóò
case 30 : return("M30"); break; //30 ìèíóò
case 60 : return("H 1"); break; //1 ÷àñ
case 240 : return("H_4"); break; //4 ÷àñà
case 1440 : return("D_1"); break; //1 äåíü
case 10080: return("W_1"); break; //1 íåäåëÿ
case 43200: return("MN1"); break; //1 ìåñÿö
}return("îøèáêà ïåðèîäà");
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
//*////////////////////////////////////////////////////////////////*//
int ðèñóåì_ãðàíèöû(color öâåò,int X1,double Y1,int X2,double Y2)
{
string Name = "ãðàíèöà "+string_ïåð(per);
if (öâåò==ÖÂÅÒ_ñîïðîòèâëåíèÿ) Name = "Âåðõíÿÿ "+Name;
if (öâåò==ÖÂÅÒ_ïîääåðæêè) Name = "Íèæíÿÿ " +Name;
if (ObjectFind(Name)==0) return; //Åñëè îáüåêò ñóùåñòâóåò
X1g=Time[0];X2g=Time[0]+per*60*âðåìÿ_óñòàâêè;
if (öâåò==ÖÂÅÒ_ñîïðîòèâëåíèÿ) {Y1vg=Y1+(Y2-Y1)*(X1g-X1)/(X2-X1);Y2vg=Y1+(Y2-Y1)*(X2g-X1)/(X2-X1);
ObjectCreate(Name, OBJ_TREND, 0,X1g,Y1vg,X2g,Y2vg);}
if (öâåò==ÖÂÅÒ_ïîääåðæêè) {Y1ng=Y1+(Y2-Y1)*(X1g-X1)/(X2-X1);Y2ng=Y1+(Y2-Y1)*(X2g-X1)/(X2-X1);
ObjectCreate(Name, OBJ_TREND, 0,X1g,Y1ng,X2g,Y2ng);}
ObjectSet (Name, OBJPROP_COLOR, öâåò);
ObjectSet (Name, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet (Name, OBJPROP_WIDTH, 4);
ObjectSet (Name, OBJPROP_BACK, false);
ObjectSet (Name, OBJPROP_RAY, false);
return;
}
//*////////////////////////////////////////////////////////////////*//
//æææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææææ
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
---