Price Data Components
Miscellaneous
0
Views
0
Downloads
0
Favorites
VolumesHist
//+------------------------------------------------------------------+
//| Volumes Hist.mq4 |
//| Copyright © Vadim Shumilov (DrShumiloff) |
//| shumiloff@mail.ru |
//| ICQ 84796634 |
//+------------------------------------------------------------------+
#property copyright "Vadim Shumilov (DrShumiloff)"
#property link "shumiloff@mail.ru"
//----
#property indicator_chart_window
extern int MinutesCount = 5000; // 3000 - 10000 ;
extern int Amplitude = 20; // 10 .. 100
extern int RefreshPeriod = 1; // 1 .. 60
extern color HistColor = SteelBlue;
extern double PricePoint = 0.0002;
// For the next versions
// extern int Method = 0; // 0 - SMA, 1 - EMA, 2 - SMMA, 3 - LWMA, 4 - LRMA
// extern int VolumePeriod = 21;
double Hist[];
datetime OpenTime = 0;
int init()
{
return(0);
}
int deinit()
{
DeleteObjects();
return(0);
}
int DeleteObjects()
{
for (int i = 0; i< 3000; i++) ObjectDelete("VH"+i);
}
int DrawLine(int n, double price, int vol, int max)
{
vol = MathRound(Amplitude * vol / max );
if (vol > 0)
{
int first = WindowFirstVisibleBar();
datetime dt1 = iTime(NULL, Period(), first);
datetime dt2 = iTime(NULL, Period(), first-vol);
ObjectCreate("VH"+n, OBJ_RECTANGLE, 0, dt1, price, dt2, price+PricePoint);
ObjectSet("VH"+n, OBJPROP_STYLE, DRAW_HISTOGRAM);
ObjectSet("VH"+n, OBJPROP_COLOR, HistColor);
ObjectSet("VH"+n, OBJPROP_BACK, true);
}
return (0);
}
int start()
{
if (OpenTime != iOpen(Symbol(), PERIOD_M1, 0))
{
OpenTime = iOpen(Symbol(), PERIOD_M1, 0);
int n, MaxVolume;
double max = iHigh(Symbol(), PERIOD_M1, iHighest(Symbol(), PERIOD_M1, MODE_HIGH, MinutesCount, 0));
double min = iLow(Symbol(), PERIOD_M1, iLowest(Symbol(), PERIOD_M1, MODE_LOW, MinutesCount, 0));
int items = MathRound((max - min) / PricePoint);
if (max == 0)
{
Alert("There is no minutes data. Please download M1.");
return (0);
}
ArrayResize(Hist, items);
ArrayInitialize(Hist, 0);
for (int i = 1; i <= MinutesCount; i++)
{
n = MathRound((iClose(Symbol(), PERIOD_M1, i) - min) / PricePoint);
Hist[n] += iVolume(Symbol(), PERIOD_M1, i);
}
MaxVolume = Hist[ArrayMaximum(Hist)];
DeleteObjects();
for (i = 0; i <= items; i++)
{
DrawLine(i, min + i*PricePoint, Hist[i], MaxVolume);
}
}
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
---