wrb-hidden-gap-improved-2.1 bt.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wrb-hidden-gap-improved-2.1 bt.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор предназначен для идентификации широких диапазонных баров (WRB) и скрытых разрывов (HG) на ценовых графиках. Он сравнивает размеры тел баров в заданном периоде откатов и отмечает широкие бары специальными символами на графике.
При обнаружении WRB-бара индикатор проверяет формирование скрытого разрыва — ценового промежутка между последующими барами. Незаполненные разрывы отображаются прямоугольниками, а при их заполнении ценой заменяются залитыми прямоугольниками с разделительной линией.
Индикатор оснащён кнопкой-переключателем для скрытия и отображения объектов разрывов, а также системой уведомлений, которая срабатывает при достижении цены уровня незаполненного прямоугольника. Расчёт можно ограничить заданным количеством баров от текущего бара.
Настройки программы
| Настройка | Описание |
|---|---|
| TimeFrame | Таймфрейм — Таймфрейм, на котором производится расчёт индикатора |
| UseWholeBars | Использовать целые бары — При включении для расчёта размера бара используется разница между максимумом и минимумом, иначе — абсолютное значение разницы между ценами открытия и закрытия |
| WRB_LookBackBarCount | Количество баров откатов WRB — Количество баров в прошлом, сравниваемых с текущим для определения широкого диапазонного бара |
| WRB_WingDingsSymbol | Символ маркера WRB — Код символа крыльев (WingDings), используемый для отображения маркера широкого диапазонного бара на графике |
| HGcolor1 | Основной цвет разрыва — Основной цвет прямоугольников незаполненных скрытых разрывов |
| HGcolor2 | Альтернативный цвет разрыва — Альтернативный цвет прямоугольников при пересечении со старым разрывом |
| HGLcolor | Цвет линии разрыва — Цвет разделительной линии внутри прямоугольника скрытого разрыва |
| HGstyle | Стиль разрыва — Стиль линий прямоугольников скрытых разрывов |
| StartCalculationFromBar | Начальный бар расчёта — Максимальный номер бара от текущего, начиная с которого производится расчёт индикатора |
| HollowBoxes | Пустые прямоугольники — Если включено, прямоугольники скрытых разрывов отображаются как пустые (не залитые) |
| DoAlerts | Включить уведомления — Включает или отключает уведомления при пробое прямоугольников скрытых разрывов ценой |
| Button_Settings | Кнопка настроек — Текстовая метка разделителя в группе настроек кнопки |
| btn_corner | Угол кнопки — Угол графика, к которому привязывается кнопка-переключатель |
| btn_Font | Шрифт кнопки — Шрифт текста на кнопке-переключателе |
| btn_FontSize | Размер шрифта кнопки — Размер шрифта текста на кнопке-переключателе |
| btn_text_ON_color | Цвет текста кнопки включена — Цвет текста кнопки в активном состоянии |
| btn_text_OFF_color | Цвет текста кнопки выключена — Цвет текста кнопки в неактивном состоянии |
| btn_pressed | Текст кнопки выключена — Текст кнопки в неактивном состоянии (индикатор выключен) |
| btn_unpressed | Текст кнопки включена — Текст кнопки в активном состоянии (индикатор включён) |
| btn_background_color | Цвет фона кнопки — Цвет фона кнопки-переключателя |
| btn_border_color | Цвет рамки кнопки — Цвет рамки кнопки-переключателя |
| button_x | Позиция кнопки по X — Горизонтальное расстояние кнопки-переключателя от указанного угла графика в пикселях |
| button_y | Позиция кнопки по Y — Вертикальное расстояние кнопки-переключателя от указанного угла графика в пикселях |
| btn_Width | Ширина кнопки — Ширина кнопки-переключателя в пикселях |
| btn_Height | Высота кнопки — Высота кнопки-переключателя в пикселях |
| soundBT | Звук кнопки — Имя звукового файла, воспроизводимого при нажатии кнопки-переключателя |
Поиск по коду файла
???//+------------------------------------------------------------------+
#property version "1.00"
#property description "Identifies Wide Range Bars and Hidden Gaps."
#property description "WRB and HG definitions are taken from the WRB Analysis Tutorial-1"
#property description "by M.A.Perry from TheStrategyLab.com."
#property description "Alerts and optimization by Andriy Moraru."
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_color1 clrAqua // WRB symbol
#property indicator_width1 1
#define UNFILLED_PREFIX "HG_UNFILLED_"
#define FILLED_PREFIX "HG_FILLED_"
#define LINE_PREFIX "HG_LINE_"
#define PREFIX "HG_"
extern ENUM_TIMEFRAMES TimeFrame = PERIOD_CURRENT;
extern bool UseWholeBars = false;
extern int WRB_LookBackBarCount = 3;
extern int WRB_WingDingsSymbol = 115;
extern color HGcolor1 = clrDodgerBlue;
extern color HGcolor2 = clrBlue;
extern color HGLcolor = clrWhite;
extern ENUM_LINE_STYLE HGstyle = STYLE_SOLID;
extern int StartCalculationFromBar = 100;
extern bool HollowBoxes = false;
extern bool DoAlerts = false;
extern string Button_Settings = "=====================";
extern ENUM_BASE_CORNER btn_corner = CORNER_LEFT_UPPER;
extern string btn_Font = "Arial";
extern int btn_FontSize = 10;
extern color btn_text_ON_color = clrLime;
extern color btn_text_OFF_color = clrRed;
extern string btn_pressed = "WRB OFF";
extern string btn_unpressed = "WRB ON";
extern color btn_background_color = clrDimGray;
extern color btn_border_color = clrBlack;
extern int button_x = 850;
extern int button_y = 0;
extern int btn_Width = 120;
extern int btn_Height = 20;
extern string soundBT = "tick.wav";
bool show_data = true;
bool recalc = true;
double WRB[];
int totalBarCount = -1;
bool ButtonState = false;
string sButtonName = "Button WRB";
string IndicatorName, IndicatorObjPrefix ,buttonId;
string GenerateIndicatorName(const string target)
{
string name = target;
int try = 2;
while (WindowFind(name) != -1)
{
name = target + " #" + IntegerToString(try++);
}
return name;
}
int init()
{
// код доступен только после оплаты
}
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 intersect(double H1, double L1, double H2, double L2)
{
if ( (L1>H2) || (H1<L2) ) return (0);
if ( (H1>=H2) && (L1>=L2) ) return (1);
if ( (H1<=H2) && (L1<=L2) ) return (2);
if ( (H1>=H2) && (L1<=L2) ) return (3);
if ( (H1<=H2) && (L1>=L2) ) return (4);
return(0);
}
void checkHGFilled(int barNumber)
{
int j, i;
string ObjectText;
string Prefix = UNFILLED_PREFIX;
double box_H, box_L;
double HGFillPA_H, HGFillPA_L;
datetime startTime;
color objectColor;
int L = StringLen(Prefix);
i = 0;
while(i < ObjectsTotal()) // loop over all unfilled boxes
{
string ObjName = ObjectName(i);
if(StringSubstr(ObjName, 0, L) != Prefix)
{
i++;
continue;
}
box_H=ObjectGet(ObjName, OBJPROP_PRICE1); // get HG high and low values
box_L=ObjectGet(ObjName, OBJPROP_PRICE2);
objectColor=ObjectGet(ObjName, OBJPROP_COLOR);
startTime=ObjectGet(ObjName, OBJPROP_TIME1);
HGFillPA_H = iHigh(NULL, TimeFrame, barNumber);
HGFillPA_L = iLow(NULL, TimeFrame, barNumber);
j = 0;
while ( (intersect(iHigh(NULL, TimeFrame, barNumber+j), iLow(NULL, TimeFrame, barNumber+j), box_H, box_L)!=0) && (barNumber+j<Bars) && (startTime<iTime(NULL, TimeFrame, barNumber+j)))
{
if (iHigh(NULL, TimeFrame, barNumber+j) > HGFillPA_H) HGFillPA_H = iHigh(NULL, TimeFrame, barNumber+j);
if (iLow(NULL, TimeFrame, barNumber+j) < HGFillPA_L) HGFillPA_L = iLow(NULL, TimeFrame, barNumber+j);
if ( (HGFillPA_H>box_H) && (HGFillPA_L<box_L) )
{
ObjectDelete(ObjName);
StringReplace(ObjName, UNFILLED_PREFIX, LINE_PREFIX);
ObjectDelete(ObjName);
ObjectText = FILLED_PREFIX + TimeToStr(startTime,TIME_DATE|TIME_MINUTES);
ObjectCreate(ObjectText, OBJ_RECTANGLE, 0, startTime, box_H, iTime(NULL, TimeFrame, barNumber), box_L);
ObjectSet(ObjectText, OBJPROP_STYLE, HGstyle);
ObjectSet(ObjectText, OBJPROP_COLOR, objectColor);
ObjectSet(ObjectText, OBJPROP_BACK, !HollowBoxes);
double line = (box_H + box_L) / 2.0;
ObjectText = LINE_PREFIX + TimeToStr(startTime,TIME_DATE|TIME_MINUTES);
ObjectCreate(ObjectText, OBJ_RECTANGLE, 0, startTime, line, iTime(NULL, TimeFrame, barNumber), line);
ObjectSet(ObjectText, OBJPROP_STYLE, HGstyle);
ObjectSet(ObjectText, OBJPROP_COLOR, HGLcolor);
ObjectSet(ObjectText, OBJPROP_BACK, false);
break;
}
j++;
}
i++;
}
}
bool checkWRB(int i)
{
int j;
bool WRB_test;
double body, bodyPrior;
WRB_test = true;
if (UseWholeBars) body = iHigh(NULL, TimeFrame, i) - iLow(NULL, TimeFrame, i);
else body = MathAbs(iOpen(NULL, TimeFrame, i) - iClose(NULL, TimeFrame, i));
for (j = 1;j <= WRB_LookBackBarCount; j++)
{
if (UseWholeBars) bodyPrior = iHigh(NULL, TimeFrame, i + j) - iLow(NULL, TimeFrame, i + j);
else bodyPrior = MathAbs(iOpen(NULL, TimeFrame, i+j)-iClose(NULL, TimeFrame, i+j));
if (bodyPrior>body)
{
WRB_test = false;
break;
}
}
if (WRB_test)
{
if (UseWholeBars) WRB[i] = (iHigh(NULL, TimeFrame, i) + iLow(NULL, TimeFrame, i)) / 2;
else WRB[i] = (iOpen(NULL, TimeFrame, i) + iClose(NULL, TimeFrame, i)) / 2;
}
else WRB[i] = EMPTY_VALUE;
retПоказано первые 50% кода (символов: 9649)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.