wrb-hidden-gap-bt@fxsignalspot.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «wrb-hidden-gap-bt@fxsignalspot.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Данный продукт представляет собой пользовательский индикатор для платформы MetaTrader 4 на языке MQL4. Он предназначен для анализа исторических данных ценовых баров и автоматического выявления на графике баров с широким диапазоном и скрытых ценовых разрывов. Результаты анализа отображаются в виде графических объектов прямо на ценовом графике.
Индикатор использует настраиваемый период отката для сравнения диапазонов баров и определяет, образуется ли скрытый разрыв между соседними барами. Обнаруженные зоны рисуются прямоугольниками, которые могут быть как незалитыми, так и залитыми — в зависимости от настроек и последующего поведения цены.
Продукт оснащён системой уведомлений, которая срабатывает при достижении цены уровня залитого разрыва. Также на графике размещается интерактивная кнопка, позволяющая включать и выключать отображение аналитических данных одним нажатием. Состояние видимости сохраняется между сессиями с помощью глобальных переменных терминала.
Все визуальные элементы и поведение индикатора настраиваются через параметры: цвета, стили линий, размеры объектов, расположение кнопки и параметры расчётов. Индикатор работает в стандартном графиковом окне MetaTrader 4 и использует один буфер для отрисовки маркеров.
Настройки программы
| Настройка | Описание |
|---|---|
| UseWholeBars | Использовать целые бары — Переключатель метода расчёта: при включении используются полные диапазоны баров (максимум-минимум), при выключении — тело бара (открытие-закрытие). |
| WRB_LookBackBarCount | Количество баров для анализа WRB — Количество баров назад, которые сравниваются с текущим при определении бара с широким диапазоном. |
| WRB_WingDingsSymbol | Символ маркера WRB — Код символа WingDings, используемый для отрисовки маркера бара с широким диапазоном на графике. |
| HGcolor1 | Цвет скрытого разрыва 1 — Основной цвет прямоугольников скрытых разрывов на графике. |
| HGcolor2 | Цвет скрытого разрыва 2 — Альтернативный цвет, который применяется при пересечении нового скрытого разрыва с уже существующим. |
| HGstyle | Стиль линии скрытого разрыва — Стиль линии (сплошная, пунктир и т.д.) для прямоугольников скрытых разрывов. |
| StartCalculationFromBar | Начало расчёта от бара — Максимальный номер бара, с которого начинается расчёт индикатора. Позволяет ограничить глубину анализа. |
| HollowBoxes | Пустые прямоугольники — Определяет, будут ли прямоугольники скрытых разрывов залиты цветом или отображаться как пустые (только контур). |
| DoAlerts | Включить уведомления — Включает или отключает звуковые и текстовые уведомления при достижении цены уровня скрытого разрыва. |
| btn_corner | Угол размещения кнопки — Угол графика, в котором размещается кнопка управления видимостью. |
| DisplayID | Идентификатор отображения — Идентификатор, отображаемый на текстовой метке кнопки на графике. Используется для именования объектов индикатора и глобальных переменных. |
| btn_Font | Шрифт кнопки — Шрифт текста на кнопке управления видимостью на графике. |
| btn_FontSize | Размер шрифта кнопки — Размер шрифта текста на кнопке управления видимостью. |
| btn_on_color | Цвет кнопки (видно) — Цвет кнопки при отображаемых (включённых) данных индикатора. |
| btn_off_color | Цвет кнопки (скрыто) — Цвет кнопки при скрытых (выключенных) данных индикатора. |
| btn_text_color | Цвет текста кнопки — Цвет текста на кнопке управления видимостью. |
| btn_background_color | Фон кнопки — Цвет фона кнопки управления видимостью. |
| btn_border_color | Рамка кнопки — Цвет рамки кнопки управления видимостью. |
| button_x | Позиция кнопки по X — Горизонтальное расстояние кнопки от выбранного угла графика в пикселях. |
| button_y | Позиция кнопки по Y — Вертикальное расстояние кнопки от выбранного угла графика в пикселях. |
| btn_Width | Ширина кнопки — Ширина кнопки управления видимостью в пикселях. |
| btn_Height | Высота кнопки — Высота кнопки управления видимостью в пикселях. |
| button_note2 | Дополнительный текст кнопки — Дополнительный текст, отображаемый рядом с кнопкой на графике. |
Поиск по коду файла
#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 PREFIX "HG_"
extern bool UseWholeBars = true;
extern int WRB_LookBackBarCount = 3;
extern int WRB_WingDingsSymbol = 115;
extern color HGcolor1 = clrDodgerBlue;
extern color HGcolor2 = clrDodgerBlue;
extern ENUM_LINE_STYLE HGstyle = STYLE_SOLID;
extern int StartCalculationFromBar = 500;
extern bool HollowBoxes = false;
extern bool DoAlerts = false;
extern ENUM_BASE_CORNER btn_corner = CORNER_LEFT_UPPER;
extern string DisplayID = "WRB-Hidden_Gap-BT";
extern string btn_Font = "Arial";
extern int btn_FontSize = 10;
extern color btn_on_color = clrLime;
extern color btn_off_color = clrRed;
extern color btn_text_color = clrWhite;
extern color btn_background_color = clrDimGray;
extern color btn_border_color = clrBlack;
extern int button_x = 400;
extern int button_y = 0;
extern int btn_Width = 150;
extern int btn_Height = 20;
extern string button_note2 = "------------------------------";
bool show_data = true;
bool recalc = true;
double WRB[];
int totalBarCount = -1;
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 deinit2()
{
ObDeleteObjectsByPrefix(PREFIX);
SetIndexStyle(0, DRAW_NONE);
return(0);
}
int deinit()
{
deinit2();
ObjectsDeleteAll(ChartID(), IndicatorObjPrefix);
return(0);
}
void createButton(string buttonID,string buttonText,int width,int height,string font,int fontSize,color bgColor,color borderColor,color txtColor)
{
ObjectDelete (0,buttonID);
ObjectCreate (0,buttonID,OBJ_BUTTON,0,0,0);
ObjectSetInteger(0,buttonID,OBJPROP_COLOR,txtColor);
ObjectSetInteger(0,buttonID,OBJPROP_BGCOLOR,bgColor);
ObjectSetInteger(0,buttonID,OBJPROP_BORDER_COLOR,borderColor);
ObjectSetInteger(0,buttonID,OBJPROP_BORDER_TYPE,BORDER_RAISED);
ObjectSetInteger(0,buttonID,OBJPROP_XSIZE,width);
ObjectSetInteger(0,buttonID,OBJPROP_YSIZE,height);
ObjectSetString (0,buttonID,OBJPROP_FONT,font);
ObjectSetString (0,buttonID,OBJPROP_TEXT,buttonText);
ObjectSetInteger(0,buttonID,OBJPROP_FONTSIZE,fontSize);
ObjectSetInteger(0,buttonID,OBJPROP_SELECTABLE,0);
ObjectSetInteger(0,buttonID,OBJPROP_CORNER,btn_corner);
ObjectSetInteger(0,buttonID,OBJPROP_HIDDEN,1);
ObjectSetInteger(0,buttonID,OBJPROP_XDISTANCE,9999);
ObjectSetInteger(0,buttonID,OBJPROP_YDISTANCE,9999);
}
void handleButtonClicks()
{
if (ObjectGetInteger(0, buttonId, OBJPROP_STATE))
{
ObjectSetInteger(0, buttonId, OBJPROP_STATE, false);
show_data = !show_data;
GlobalVariableSet(IndicatorName + "_visibility", show_data ? 1.0 : 0.0);
recalc = true;
start();
}
}
void OnChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam)
{
handleButtonClicks();
if (id==CHARTEVENT_OBJECT_CLICK && ObjectGet(sparam,OBJPROP_TYPE)==OBJ_BUTTON)
if (show_data)
{
init();
start();
ObjectSetInteger(ChartID(),buttonId,OBJPROP_COLOR,btn_on_color);
}
else
{
ObjectSetInteger(ChartID(),buttonId,OBJPROP_COLOR,btn_off_color);
deinit2();
}
}
int start()
{
// код доступен только после оплаты
}
handleButtonClicks();
recalc = false;
int NumBar = 500;
if (DoAlerts) CheckAlert();
int begin = (NumBar>0) ? NumBar-1 : (Bars-2)/_Period;
if (begin > NumBar - WRB_LookBackBarCount) begin = NumBar - WRB_LookBackBarCount;
if (begin > StartCalculationFromBar) begin = StartCalculationFromBar;
for (int i = begin; i > 0; i--)
{
checkWRB(i);
chПоказано первые 50% кода (символов: 8383)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.