0
Views
0
Downloads
0
Favorites
level_sensor_116
//+------------------------------------------------------------------+
//| Level Sensor.mq4 |
//| Copyright © 2005, Sfen. |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2005, Sfen"
#property indicator_chart_window
// input parameters
extern int MAX_HISTORY = 500;
extern int STEP = 1;
//----
string OBJECT_PREFIX = "LEVELS";
int ObjectId = 0;
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int init()
{
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double CSH(int shift)
{
return (MathMax(Open[shift], Close[shift]));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
double CSL(int shift)
{
return (MathMin(Open[shift],Close[shift]));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
string IntToStr(int X)
{
return (DoubleToStr(X, 0));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
string ObGetUniqueName(string Prefix)
{
ObjectId++;
return (Prefix+" "+IntToStr(ObjectId));
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
void ObDeleteObjectsByPrefix(string Prefix)
{
int L = StringLen(Prefix);
int i = 0;
while(i < ObjectsTotal())
{
string ObjName = ObjectName(i);
if(StringSubstr(ObjName, 0, L) != Prefix)
{
i++;
continue;
}
ObjectDelete(ObjName);
}
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int deinit()
{
ObDeleteObjectsByPrefix(OBJECT_PREFIX);
return(0);
}
//+------------------------------------------------------------------+
//| |
//+------------------------------------------------------------------+
int start()
{
string S;
ObDeleteObjectsByPrefix(OBJECT_PREFIX);
double HH = 0;
double LL = 1000000;
int History = MathMin(Bars,MAX_HISTORY);
int i, j, k;
for(i = 1; i < History; i++)
{
HH = MathMax(HH, CSH(i));
LL = MathMin(LL, CSL(i));
}
int NumberOfPoints = (HH - LL) / (1.0*Point*STEP) + 1;
int Count[];
ArrayResize(Count, NumberOfPoints);
for(i = 0; i < NumberOfPoints; i++)
Count[i] = 0;
for(i = 1; i < History; i++)
{
double C = CSL(i);
while(C < CSH(i))
{
int Index = (C-LL) / (1.0*Point*STEP);
Count[Index]++;
C += 1.0*Point*STEP;
}
}
for(i = 0; i < NumberOfPoints; i++)
{
double StartX = Time[5];
double StartY = LL + 1.0*Point*STEP*i;
double EndX = Time[5+Count[i]];
double EndY = StartY;
string ObjName = ObGetUniqueName(OBJECT_PREFIX);
ObjectDelete(ObjName);
ObjectCreate(ObjName, OBJ_TREND, 0, StartX, StartY, EndX, EndY);
ObjectSet(ObjName, OBJPROP_RAY, 0);
ObjectSet(ObjName, OBJPROP_COLOR, Red);
}
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
---