Indicators Used
Miscellaneous
0
Views
0
Downloads
0
Favorites
ExTrend
//+------------------------------------------------------------------+
//| ExTrend.mq4 |
//| Copyright © 2006, Alex Sidd (Executer) |
//| http://www.metaquotes.net/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006, Alex Sidd (Executer)"
#property link "mailto:work_st@mail.ru"
//----
#property indicator_separate_window
#property indicator_minimum -0.5
#property indicator_maximum 0.5
#property indicator_buffers 2
#property indicator_color1 Green
#property indicator_color2 Red
//----
double TrBufferUp[];
double TrBufferDn[];
//----
double FractUp1 = 0;
double FractUp2 = 0;
double FractDn1 = 0;
double FractDn2 = 0;
datetime FTimeUp1, FTimeUp2, FTimeDn1, FTimeDn2, curTime;
//+------------------------------------------------------------------+
//| ExTrend initialization function |
//+------------------------------------------------------------------+
int init()
{
string short_name;
IndicatorBuffers(2);
SetIndexStyle(0, DRAW_LINE);
SetIndexBuffer(0, TrBufferUp);
SetIndexDrawBegin(0, 1);
SetIndexStyle(1, DRAW_LINE);
SetIndexBuffer(1, TrBufferDn);
SetIndexDrawBegin(1, 1);
short_name = "ExTrend";
IndicatorShortName(short_name);
SetIndexLabel(0, "Up_Line");
SetIndexLabel(1, "Down_Line");
//----
return(0);
}
//+------------------------------------------------------------------+
//| deinitialization function |
//+------------------------------------------------------------------+
int deinit()
{
ObjectDelete("FractalLineUp");
ObjectDelete("FractalLineDn");
//----
return(0);
}
//+------------------------------------------------------------------+
//| Level Calculate Function |
//| ôóíêöèÿ âçÿòà èç FractalLines Indicator |
//+------------------------------------------------------------------+
double LevelCalculate(double Price1, double Time1, double Price2,
double Time2, double NewTime)
{
double level;
if(Time2 != Time1) // Íà âñÿêèé ñëó÷àé, ÷òîáû íå áûëî äåëåíèÿ íà 0.
level = (NewTime - Time1)*(Price2 - Price1) / (Time2-Time1) + Price1;
else
return(Price2);
return(level);
}
//+------------------------------------------------------------------+
//| Executer Trend Indicator |
//+------------------------------------------------------------------+
int start()
{
int i, counted_bars = IndicatorCounted();
i = Bars - 1;
double Fup, Fdn, positive, negative;
while(i >= 0)
{
negative = 0;
positive = 0;
Fup = iFractals(NULL, 0, MODE_UPPER, i + 3);
Fdn = iFractals(NULL, 0, MODE_LOWER, i + 3);
if(Fup > 0)
{
if(FractUp1 == 0 && FractUp2 == 0)
{
FractUp1 = Fup;
FTimeUp1 = Time[i+3];
}
if(FractUp1 != 0&&FractUp2 == 0 && FTimeUp1 != Time[i+3])
{
FractUp2 = Fup;
FTimeUp2 = Time[i+3];
}
if(FractUp1 != 0 && FractUp2 != 0 && FTimeUp2 != Time[i+3])
{
FractUp1 = FractUp2;
FTimeUp1 = FTimeUp2;
FractUp2 = Fup;
FTimeUp2 = Time[i+3];
}
}
if(Fdn > 0)
{
if(FractDn1 == 0 && FractDn2 == 0)
{
FractDn1 = Fdn;
FTimeDn1 = Time[i+3];
}
if(FractDn1 != 0 && FractDn2 == 0 && FTimeDn1 != Time[i+3])
{
FractDn2 = Fdn;
FTimeDn2 = Time[i+3];
}
if(FractDn1 != 0 && FractDn2 != 0 && FTimeDn2 != Time[i+3])
{
FractDn1 = FractDn2;
FTimeDn1 = FTimeDn2;
FractDn2 = Fdn;
FTimeDn2 = Time[i+3];
}
}
if(FractUp1 != 0 && FractUp2 != 0)
{
double lvlup = LevelCalculate(FractUp1, FTimeUp1, FractUp2, FTimeUp2, Time[i]);
ObjectCreate("FractalLineUp", OBJ_TREND, 0,FTimeUp1, FractUp1, FTimeUp2, FractUp2);
ObjectSet("FractalLineUp", OBJPROP_TIME1, FTimeUp1);
ObjectSet("FractalLineUp", OBJPROP_PRICE1, FractUp1);
ObjectSet("FractalLineUp", OBJPROP_TIME2, FTimeUp2);
ObjectSet("FractalLineUp", OBJPROP_PRICE2, FractUp2);
double y = (FTimeUp2 - FTimeUp1) / (240*60);
double x = (FractUp2 - FractUp1)*(240);
// if(x==0) x=1;
positive = MathArctan(x / y); //*180/3.14; //)
}
if(FractDn1 != 0 && FractDn2 != 0)
{
double lvldn = LevelCalculate(FractDn1, FTimeDn1, FractDn2, FTimeDn2, Time[i]);
ObjectCreate("FractalLineDn", OBJ_TREND, 0, FTimeDn1, FractDn1, FTimeDn2, FractDn2);
ObjectSet("FractalLineDn", OBJPROP_TIME1, FTimeDn1);
ObjectSet("FractalLineDn", OBJPROP_PRICE1, FractDn1);
ObjectSet("FractalLineDn", OBJPROP_TIME2, FTimeDn2);
ObjectSet("FractalLineDn", OBJPROP_PRICE2, FractDn2);
double a = (FTimeDn2 - FTimeDn1) / (240*60);
double b = (FractDn2 - FractDn1)*(240);
// if(b==0) b=1;
negative = MathArctan(b / a); //*180/3.14;
}
TrBufferUp[i+3] = positive; //+negative;
TrBufferDn[i+3] = negative;
i--;
}
return(0);
}
//+------------------------------------------------------------------+
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
---