0
Views
0
Downloads
0
Favorites
gaps_cb
//+------------------------------------------------------------------+
//| Gaps_cb.mq5 |
//| Tapochun |
//| https://login.mql5.com/ru/users/tapochun |
//+------------------------------------------------------------------+
#property copyright "Tapochun"
#property link "https://login.mql5.com/ru/users/tapochun"
#property version "1.00"
#property indicator_separate_window
#property indicator_minimum 0
//---
#property indicator_plots 1
#property indicator_buffers 2
//---
#property indicator_type1 DRAW_COLOR_HISTOGRAM
#property indicator_color1 clrLime, clrRed, clrGray
//+------------------------------------------------------------------+
//| Ãëîáàëüíûå ïåðåìåííûå |
//+------------------------------------------------------------------+
double bufValue[]; // Áóôåð çíà÷åíèé ãýïîâ
double bufValueClr[]; // Áóôåð öâåòà ãýïîâ
//+------------------------------------------------------------------+
//| Âõîäíûå ïàðàìåòðû |
//+------------------------------------------------------------------+
input int inpBigGap=0; // Ðàçìåð áîëüøîãî ãýïà (ïîäñâå÷èâàåòñÿ)
//+------------------------------------------------------------------+
//| Custom indicator initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//--- Óñòàíàâëèâàåì èíäåêñû ìàññèâîâ
SetIndexBuffer(0,bufValue);
SetIndexBuffer(1,bufValueClr,INDICATOR_COLOR_INDEX);
//--- Óñòàíàâëèâàåì òî÷íîñòü çíà÷åíèé èíäèêàòîðà
IndicatorSetInteger(INDICATOR_DIGITS,0);
//--- Óñòàíàâëèâàåì ïóñòîå çíà÷åíèå äëÿ ãðàôè÷åñêîé ñåðèè
PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,EMPTY_VALUE);
//---
if(inpBigGap>0) // Åñëè ðàçìåð ãýïà ïîëîæèòåëüíûé
{
//--- Óñòàíàâëèâàåì â ïîäîêíî óðîâåíü ìèíèìàëüíîãî ãýïà
IndicatorSetInteger(INDICATOR_LEVELS,1);
IndicatorSetDouble(INDICATOR_LEVELVALUE,0,inpBigGap);
IndicatorSetString(INDICATOR_LEVELTEXT,0,"Big Gap");
}
//--- Èìÿ â ïîäîêíå/îêíå äàííûõ
IndicatorSetString(INDICATOR_SHORTNAME,"Gap");
//---
return( INIT_SUCCEEDED );
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
const int prev_calculated,
const datetime &time[],
const double &open[],
const double &high[],
const double &low[],
const double &close[],
const long &tick_volume[],
const long &volume[],
const int &spread[])
{
//--- Åñëè íåò äàííûõ - âûõîäèì
if( rates_total <= 0 ) return( 0 );
if(prev_calculated!=0) // Åñëè íå ïåðâûé ðàñ÷åò
{
if(rates_total>prev_calculated) // Åñëè îáðàçîâàëñÿ íîâûé áàð
{
//--- Ðàñ÷åò ãýïà íà îòêðûòèè òåêóùåãî áàðà
Calculation(rates_total-1,rates_total,inpBigGap,open,close);
}
}
else // Åñëè ïåðâûé ðàñ÷åò
{
//--- Ðàñ÷åò ãýïîâ íà èñòîðèè
Calculation(1,rates_total,inpBigGap,open,close);
}
//---
return( rates_total );
}
//+------------------------------------------------------------------+
//| Ôóíêöèÿ ðàñ÷åòà |
//+------------------------------------------------------------------+
void Calculation(const int first, // Ïåðâûé áàð äëÿ ðàñ÷åòà
const int rates_total, // Êîëè÷åñòâî ïðîñ÷èòàííûõ áàðîâ íà òåêóùåì òèêå
const int bigGap, // Ðàçìåð áîëüøîãî ãýïà
const double &open[], // Ìàññèâ öåí îòêðûòèÿ áàðîâ
const double &close[] // Ìàññèâ öåí çàêðûòèÿ áàðîâ
)
{
int gap; // Ðàçìåð ãýïà
for( int i = 1; i < rates_total; i++ ) // Öèêë ïî äîñòóïíîé èñòîðèè
{
gap=int(MathRound(MathAbs(( open[i]-close[i-1])/_Point))); // Ðàçìåð ãýïà, ï
bufValue[i]=gap; // Çàíîñèì çíà÷åíèå â áóôåð
if(gap>=bigGap) // Åñëè ðàçìåð ãýïà íå ìåíüøå áîëüøîãî
{ // Ðàñêðàøèâàåì ñòîëáèê
if( open[ i ] > close[ i-1 ] ) // Åñëè ãýï ââåðõ
bufValueClr[i]=1; // Öâåò - êðàñíûé
else // Åñëè âíèç
bufValueClr[i]=0; // Öâåò - çåëåíûé
}
else bufValueClr[i]=2; // Åñëè ðàçìåð ãýïà ìåíüøå ìèíèìàëüíîãî - öâåò ñòîëáöà ãèñòîãðàììû íåéòðàëüíûé
}
}
//+------------------------------------------------------------------+
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
---