Indicators Used
0
Views
0
Downloads
0
Favorites
GigaChu
//+------------------------------------------------------------------+
//| GigaChu.mq4 |
//| Copyright © 2010, MetaQuotes Software Corp. |
//| http://www.metaquotes.net |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2010, MetaQuotes Software Corp."
#property link "http://www.metaquotes.net"
#property indicator_chart_window
extern int NumPlug = 0; // Íîìåð èñêîìîé âèëêè
extern int LifeTime = 0; // Âðåìÿ æèçíè âèëêè, â ÷àñàõ
extern color UpColor = Lime;
extern color DnColor = Red;
extern int UpWidth = 2;
extern int DnWidth = 2;
double fr_up[3];
int br_up[3];
double fr_dn[3];
int br_dn[3];
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int init()
{
//----
if(NumPlug<2) NumPlug=1;
DeleteUpLines();
DeleteDnLines();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
//----
DeleteUpLines();
DeleteDnLines();
//----
return(0);
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int start()
{
static int prewbar;
if(prewbar==iTime(Symbol(),0,0)) return;
prewbar= iTime(Symbol(),0,0);
//----
int j=0;
int k=1;
ArrayInitialize(fr_up, 0);
ArrayInitialize(br_up, 0);
for(int i=3; i<=Bars-1; i++)
{ fr_up[j]=iFractals(Symbol(), 0, MODE_UPPER, i);
if(fr_up[j]>0)
{ br_up[j]=i;
j++;
}
if(j>2)
{ if(CheckUpLines()<0)
{ j=0; i=br_up[1]-1;
ArrayInitialize(fr_up, 0);
ArrayInitialize(br_up, 0);
}
else
if(k==NumPlug)
{ CreateUpLines();
break;
}
else
{ j=0; i=br_up[1]-1;
ArrayInitialize(fr_up, 0);
ArrayInitialize(br_up, 0);
k++; }
}
}
j=0;
k=1;
ArrayInitialize(fr_dn, 0);
for(i=3; i<=Bars-1; i++)
{ fr_dn[j]=iFractals(Symbol(), 0, MODE_LOWER, i);
if(fr_dn[j]>0)
{ br_dn[j]=i;
j++;
}
if(j>2)
{ if(CheckDnLines()<0)
{ j=0; i=br_dn[1]-1;
ArrayInitialize(fr_dn, 0);
ArrayInitialize(br_dn, 0);
}
else
if(k==NumPlug)
{ CreateDnLines();
break;
}
else
{ j=0; i=br_dn[1]-1;
ArrayInitialize(fr_dn, 0);
ArrayInitialize(br_dn, 0);
k++; }
}
}
//----
return(0);
}
//+------------------------------------------------------------------+
int CheckUpLines()
{
double tan1=MathTan((fr_up[0]-fr_up[1])/(br_up[0]-br_up[1]));
double tan2=MathTan((fr_up[1]-fr_up[2])/(br_up[1]-br_up[2]));
if(tan1>0 && tan2>0 && tan1<tan2) return(1);
return(-1);
}
//+------------------------------------------------------------------+
int CheckDnLines()
{
double tan1=MathTan((fr_dn[0]-fr_dn[1])/(br_dn[0]-br_dn[1]));
double tan2=MathTan((fr_dn[1]-fr_dn[2])/(br_dn[1]-br_dn[2]));
if(tan1<0 && tan2<0 && tan1>tan2) return(1);
return(-1);
}
//--------------------------------------------------------------------------------
void CreateUpLines()
{
if(ObjectFind("UPCHUV2")>=0)
if(ObjectGet("UPCHUV2", OBJPROP_PRICE1)!=fr_up[2] || ObjectGet("UPCHUV2", OBJPROP_PRICE2)!=fr_up[1])
DeleteUpLines();
else
return;
if(ObjectFind("UPCHUV1")>=0)
if(ObjectGet("UPCHUV1", OBJPROP_PRICE1)!=fr_up[1] || ObjectGet("UPCHUV1", OBJPROP_PRICE2)!=fr_up[0])
DeleteUpLines();
else
return;
ObjectCreate("UPCHUV2", OBJ_TREND, 0, iTime(Symbol(), 0, br_up[2]), fr_up[2], iTime(Symbol(), 0, br_up[1]), fr_up[1]);
ObjectSet("UPCHUV2", OBJPROP_COLOR, UpColor);
ObjectSet("UPCHUV2", OBJPROP_WIDTH, UpWidth);
ObjectSet("UPCHUV2", OBJPROP_RAY, false);
ObjectCreate("UPCHUV1", OBJ_TREND, 0, iTime(Symbol(), 0, br_up[1]), fr_up[1], iTime(Symbol(), 0, br_up[0]), fr_up[0]);
ObjectSet("UPCHUV1", OBJPROP_COLOR, UpColor);
ObjectSet("UPCHUV1", OBJPROP_WIDTH, UpWidth);
ObjectSet("UPCHUV1", OBJPROP_RAY, false);
ObjectCreate("UPCHUV3", OBJ_TREND, 0, iTime(Symbol(), 0, br_up[0]), fr_up[0], iTime(Symbol(), 0, br_up[0])+LifeTime*3600, fr_up[0]);
ObjectSet("UPCHUV3", OBJPROP_COLOR, UpColor);
ObjectSet("UPCHUV3", OBJPROP_WIDTH, UpWidth);
ObjectSet("UPCHUV3", OBJPROP_RAY, false);
return;
}
//-------------------------------------------------------------------
void CreateDnLines()
{
if(ObjectFind("DNCHUV2")>=0)
if(ObjectGet("DNCHUV2", OBJPROP_PRICE1)!=fr_dn[2] || ObjectGet("DNCHUV2", OBJPROP_PRICE2)!=fr_dn[1])
DeleteDnLines();
else
return;
if(ObjectFind("DNCHUV1")>=0)
if(ObjectGet("DNCHUV1", OBJPROP_PRICE1)!=fr_dn[1] || ObjectGet("DNCHUV1", OBJPROP_PRICE2)!=fr_dn[0])
DeleteDnLines();
else
return;
ObjectCreate("DNCHUV2", OBJ_TREND, 0, iTime(Symbol(), 0, br_dn[2]), fr_dn[2], iTime(Symbol(), 0, br_dn[1]), fr_dn[1]);
ObjectSet("DNCHUV2", OBJPROP_COLOR, DnColor);
ObjectSet("DNCHUV2", OBJPROP_WIDTH, DnWidth);
ObjectSet("DNCHUV2", OBJPROP_RAY, false);
ObjectCreate("DNCHUV1", OBJ_TREND, 0, iTime(Symbol(), 0, br_dn[1]), fr_dn[1], iTime(Symbol(), 0, br_dn[0]), fr_dn[0]);
ObjectSet("DNCHUV1", OBJPROP_COLOR, DnColor);
ObjectSet("DNCHUV1", OBJPROP_WIDTH, DnWidth);
ObjectSet("DNCHUV1", OBJPROP_RAY, false);
ObjectCreate("DNCHUV3", OBJ_TREND, 0, iTime(Symbol(), 0, br_dn[0]), fr_dn[0], iTime(Symbol(), 0, br_dn[0])+LifeTime*3600, fr_dn[0]);
ObjectSet("DNCHUV3", OBJPROP_COLOR, DnColor);
ObjectSet("DNCHUV3", OBJPROP_WIDTH, DnWidth);
ObjectSet("DNCHUV3", OBJPROP_RAY, false);
return;
}
//---------------------------------------------------------------------------------
void DeleteUpLines()
{
if(ObjectFind("UPCHUV1")>=0) ObjectDelete("UPCHUV1");
if(ObjectFind("UPCHUV2")>=0) ObjectDelete("UPCHUV2");
if(ObjectFind("UPCHUV3")>=0) ObjectDelete("UPCHUV3");
}
//---------------------------------------------------------------------------------
void DeleteDnLines()
{
if(ObjectFind("DNCHUV1")>=0) ObjectDelete("DNCHUV1");
if(ObjectFind("DNCHUV2")>=0) ObjectDelete("DNCHUV2");
if(ObjectFind("DNCHUV3")>=0) ObjectDelete("DNCHUV3");
}
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
---