breakout_box_5_asian_session_hlbox_screen_text_indicator.mq5
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «breakout_box_5_asian_session_hlbox_screen_text_indicator.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Это пользовательский индикатор для MetaTrader 5, который отображает на графике ценовые диапазоны торговых сессий за заданное число прошедших дней. Индикатор рисует прямоугольники и линии, соответствующие периодам A и B, а также дополнительные зоны пробоя и текстовые метки с ценами. Настройки позволяют выбрать, какие именно диапазоны отображать: по максимуму и минимуму или по ценам открытия и закрытия.
Индикатор работает в окне графика, автоматически удаляет свои объекты при инициализации и деинициализации, а затем создаёт их заново для каждого из указанного количества дней. Для каждого дня строятся прямоугольники периодов A и B, а также дополнительные прямоугольники и линии, обозначающие зоны пробоя и уровни оповещений. Текстовые метки выводят значения цен на график.
Все параметры задаются пользователем: уникальный идентификатор для возможности использования нескольких копий индикатора, количество дней, время начала и окончания периодов, смещение на следующий день, цвета и стили отображения, а также переключатели для выбора типа отображаемых данных и включения оповещений. Индикатор не выполняет торговых операций и не даёт гарантий прибыли.
Настройки программы
| Настройка | Описание |
|---|---|
| Server Time --- GMT+2 --- (UniqueID) | Уникальный идентификатор — Уникальный идентификатор индикатора, добавляемый к именам объектов, что позволяет запускать несколько копий на одном графике. |
| NumberOfDays | Количество дней — Количество прошедших дней, для которых строятся прямоугольники и линии периодов. |
| Day0 Sydney Open (periodA_begin) | Начало периода A — Время начала периода A в формате ЧЧ:ММ (серверное время). |
| Day0 Frankfurt Open (periodA_end) | Окончание периода A — Время окончания периода A в формате ЧЧ:ММ (серверное время). |
| Set to zero if periodA_begin and periodA_end are on the same day. (nextDayA) | Следующий день для периода A — Сдвиг окончания периода A на следующий день: 0 — тот же день, 1 — следующий день. |
| Day0 New York Open (periodB_end) | Окончание периода B — Время окончания периода B в формате ЧЧ:ММ (серверное время). |
| Set to zero if periodA_begin and periodB_end are on the same day. (nextDayB) | Следующий день для периода B — Сдвиг окончания периода B на следующий день: 0 — тот же день, 1 — следующий день. |
| rectAB_color1 | Цвет 1 прямоугольника A+B — Основной цвет прямоугольника периода A и B. |
| second rectangle color to indicate relative position of Open/Close (rectAB_color2) | Цвет 2 прямоугольника A+B — Дополнительный цвет прямоугольника периода A и B, используемый для индикации взаимного расположения цен открытия и закрытия. |
| true - filled solid; false - outline (rectAB_background) | Фон прямоугольника A+B — Если true — прямоугольник периода A и B залит сплошным цветом; если false — отображается только контур. |
| rectA_color | Цвет прямоугольника периода A — Цвет прямоугольника периода A. |
| true - filled solid; false - outline (rectA_background) | Фон прямоугольника периода A — Если true — прямоугольник периода A залит сплошным цветом; если false — отображается только контур. |
| rectB1_color | Цвет прямоугольника периода B — Цвет прямоугольника периода B. |
| true - filled solid; false - outline (rectB1_background) | Фон прямоугольника периода B — Если true — прямоугольник периода B залит сплошным цветом; если false — отображается только контур. |
| Box Break-Out Band for the Period B rectangle (rectB1_band) | Полоса пробоя периода B — Ширина полосы пробоя для прямоугольника периода B в пунктах. |
| rectsB2_color | Цвет прямоугольников зон пробоя — Цвет верхнего и нижнего прямоугольников зон пробоя. |
| true - filled solid, false - outline (rectsB2_background) | Фон прямоугольников зон пробоя — Если true — верхний и нижний прямоугольники зон пробоя залиты сплошным цветом; если false — отображается только контур. |
| Box Break-Out Band for the two upper and lower rectangles (rectsB2_band) | Полоса пробоя прямоугольников зон пробоя — Ширина полосы пробоя для верхнего и нижнего прямоугольников зон пробоя в пунктах. |
| false - High/Low boxes; true - Open/Close boxes (OpenClose) | Тип прямоугольников — Если false — прямоугольники строятся по максимуму и минимуму периода; если true — по ценам открытия и закрытия. |
| false - period A close indication line begins at end of period A; true - period A close line is draw (rectA_close_begin) | Начало линии закрытия периода A — Если false — линия закрытия периода A начинается от конца периода A; если true — линия проводится от начала периода A. |
| Alerts are set on the upper and lower sides of the upper and lower rectangles - rectsB2 (periodB_ALERTS) | Оповещения для периода B — Если true — на верхней и нижней границах прямоугольников зон пробоя создаются линии оповещений с текстовыми метками. |
Поиск по коду файла
#property indicator_chart_window // Configuration for Asian Session
extern string UniqueID = "Asian Session"; // --- Server Time --- GMT+2 ---
extern int NumberOfDays = 50;
extern string periodA_begin = "05:00"; // Day0 Sydney Open
extern string periodA_end = "09:00"; // Day0 Frankfurt Open
extern int nextDayA = 0; // Set to zero if periodA_begin and periodA_end are on the same day.
extern string periodB_end = "15:00"; // Day0 New York Open
extern int nextDayB = 0; // Set to zero if periodA_begin and periodB_end are on the same day.
extern color rectAB_color1 = PowderBlue;
extern color rectAB_color2 = LightCoral; // second rectangle color to indicate relative position of Open/Close
extern bool rectAB_background = true; // true - filled solid; false - outline
extern color rectA_color = Crimson;
extern bool rectA_background = false; // true - filled solid; false - outline
extern color rectB1_color = Orange;
extern bool rectB1_background = false; // true - filled solid; false - outline
extern int rectB1_band = 0; // Box Break-Out Band for the Period B rectangle
extern color rectsB2_color = SkyBlue;
extern bool rectsB2_background = true; // true - filled solid, false - outline
extern int rectsB2_band = 5; // Box Break-Out Band for the two upper and lower rectangles
extern bool OpenClose = false; // false - High/Low boxes; true - Open/Close boxes
extern bool rectA_close_begin = true; // false - period A close indication line begins at end of period A; true - period A close line is drawn from beginning of period A
extern bool periodB_ALERTS = false; // Alerts are set on the upper and lower sides of the upper and lower rectangles - rectsB2
void init() {
// код доступен только после оплаты
}
void deinit() {
DeleteObjects();
return(0);
}
void DeleteObjects() {
datetime dtTradeDate=TimeCurrent();
if(OpenClose) string sRectABname = " BoxOC ";
else sRectABname = " BoxHL ";
for (int i=0; i<NumberOfDays; i++) {
ObjectDelete(UniqueID + sRectABname + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxOpen " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxClose " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxBO_High " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxBO_HIGH ALERT " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxBO_Low " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxBO_LOW ALERT " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxPeriodA " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectDelete(UniqueID + " BoxPeriodB " + TimeToStr(dtTradeDate,TIME_DATE));
ObjectsDeleteAll(0,OBJ_TEXT);
dtTradeDate=decrementTradeDate(dtTradeDate);
while (TimeDayOfWeek(dtTradeDate) > 5 || TimeDayOfWeek(dtTradeDate) < 1 ) dtTradeDate = decrementTradeDate(dtTradeDate); // Removed Sundays from plots
}
return(0);
}
void start() {
// код доступен только после оплаты
}
void DrawObjects(datetime dtTradeDate, string sObjName, string sTimeBegin, string sTimeEnd, string sTimeObjEnd, color cObjColor1, color cObjColor2, int iOffSet, int iForm, bool background, int nextDayA, int nextDayB, bool OpenClose, bool rectA_close_begin) {
datetime dtTimeBegin, dtTimeEnd, dtTimeObjEnd;
double dPriceHigh, dPriceLow, dPriceOpen, dPriceClose;
int iBarBegin, iBarEnd;
string sObjDesc;
dtTimeBegin = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeBegin);
dtTimeEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeEnd);
dtTimeObjEnd = StrToTime(TimeToStr(dtTradeDate, TIME_DATE) + " " + sTimeObjEnd);
if(nextDayA == 1) dtTimeEnd = dtTimeEnd + 86400;
if(nextDayB == 1) dtTimeObjEnd = dtTimeObjEnd + 86400;
if(nextDayA == 1 && TimeDayOfWeek(dtTradeDate) == 5) dtTimeEnd = dtTimeEnd + (2 * 86400);
if(nextDayB == 1 && TimeDayOfWeek(dtTradeDate) == 5) dtTimeObjEnd = dtTimeObjEnd + (2 * 86400);
iBarBegin = iBarShift(NULL, 0, dtTimeBegin)+1; // added 1 to bar count to correct calculation for highest price for the period
iBarEnd = iBarShift(NULL, 0, dtTimeEnd)+1; // added 1 to bar count to correct calculation for lowest price for the period
dPriceHigh = High[Highest(NULL, 0, MODE_HIGH, (iBarBegin)-iBarEnd, iBarEnd)];
dPriceLow = Low [Lowest (NULL, 0, MODE_LOW , (iBarBegin)-iBarEnd, iBarEnd)];
dPriceOpen = Open[iBarBegin-1]; // Open/Close added to enable Open/Close rectangles
dPriceClose = Close[iBarEnd];
if(OpenClose){ // Selection of extremes of Open/Close values
dPriceHigh = MathMax(dPriceOpen, dPriceClose);
dPriceLow = MathMin(dPriceOpen, dPriceClose);
}
if(iForm==1){
ObjectCreate(sObjName, OBJ_RECTANGLE, 0, 0, 0, 0, 0);
ObjectSet(sObjName, OBJPROP_TIME1 , dtTimeBegin);
ObjectSet(sObjName, OBJPROP_TIME2 , dtTimeObjEnd);
ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);
ObjectSet(sObjName, OBJPROP_PRICE2, dPriceLow);
ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
if(dPriceClose<dPriceOpen && OpenClose==true) cObjColor1 = cObjColor2; // Color change of rectangle dependent on Open/Close positions
ObjectSet(sObjName, OBJPROP_COLOR, cObjColor1);
ObjectSet(sObjName, OBJPROP_BACK, background);
}
if(iForm==2){
ObjectCreate(sObjName, OBJ_RECTANGLE, 0, 0, 0, 0, 0);
ObjectSet(sObjName, OBJPROP_TIME1 , dtTimeEnd);
ObjectSet(sObjName, OBJPROP_TIME2 , dtTimeObjEnd);
ObjectSet(sObjName, OBJPROP_PRICE1, dPriceHigh);
ObjectSet(sObjName, OBJPROP_PRICE2, dPriceHigh + iOffSet*Point);
ObjectSet(sObjName, OBJPROP_STYLE, STYLE_SOLID);
ObjectSet(sObjName, OBJPROP_COLOR, cObjColor1);
ObjectSet(sObjName, OBJPROP_BACK, background);
if(iOffSet>0){ // SCREEN TEXT
string sObjName_text_up = StringConcatenate(sObjName, "_text"); // SCREEN TEXT // SCREEN TEXT
{ // SCREEN TEXT
ObjectCreate(sObjName_text_up, OBJ_TEXT, 0,dtTimeEnd-420, dPriceHigh + iOffSet*Point+2*Point); // SCREEN TEXT
string sObjNameOBprice_up = DoubleToStr(dPПоказано первые 50% кода (символов: 14025)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.