3 Tier London Breakout Indicator
Сообщите нам, если считаете, что материал размещён без разрешения.
Сообщить о материале
Обращение по товару «tier london breakout v.3.3b.mq5» отправится на рассмотрение. Укажите контакт для ответа и опишите причину.
О программе
Индикатор «3 Tier London Breakout Indicator» отображает на графике зоны консолидации цены в рамках лондонской торговой сессии и уровни направленного движения. Он рисует прямоугольники (коробки), показывающие диапазон цены за заданный временной интервал, а также линии целей и стоп-уровни для сделок длинной и короткой позиции.
Индикатор визуализирует зоны прибыли, цветовые маркеры допустимости коробки для торговли и фибоначчиевые линии, привязанные к уровням входа, стопа и тейк-профита. Все объекты рисуются на графике с общим префиксом, задаваемым пользователем.
Параметры позволяют настраивать временные рамки сессии, минимальный и максимальный размер коробки в пунктах, множители целевых уровней, цвета отображения и количество дней истории для расчёта. Индикатор не выполняет автоматическую торговлю и не отправляет ордера — он работает исключительно как визуальное средство анализа.
Версия кода включает исправление отображения свечей по понедельникам (MondayFix) и расширенные параметры позиционирования коробки. Исходный код написан для платформы MetaTrader 5 на языке MQL5.
Настройки программы
| Настройка | Описание |
|---|---|
| version number information (Info) | Информация о версии — Текстовый параметр, отображающий номер версии индикатора. |
| time for start of price establishment window (StartTime) | Время начала — Время начала окна формирования цены (внутренней сессии). |
| time for end of price establishment window (EndTime) | Время окончания — Время окончания окна формирования цены (внутренняя сессия). |
| end of daily session; tomorrow is another day! (SessionEndTime) | Время окончания сессии — Время окончания ежедневной торговой сессии. При переходе на следующий день сессия продлевается. |
| show Session periods with a different background color (SessionColor) | Цвет сессии — Цвет фона, выделяющего период торговой сессии на графике. |
| days back (NumDays) | Количество дней назад — Количество дней истории, используемых для расчёта индикатора. |
| min tradable box size; when box is smaller than that, you should at least reduce your usual lot-size (MinBoxSizeInPips) | Минимальный размер коробки (в пунктах) — Минимальный размер коробки в пунктах. При меньшем размере рекомендуется уменьшить размер позиции. |
| max tradable box size; don't trade when box is larger than that value (MaxBoxSizeInPips) | Максимальный размер коробки (в пунктах) — Максимальный размер коробки в пунктах. При превышении этого значения торговля не рекомендуется. |
| when true, a box larger than MaxBoxSizeInPips will be limited to MaxBoxSizeInPips, and centered on t (LimitBoxToMaxSize) | Ограничить коробку максимальным размером — При включении коробка, превышающая максимальный размер, ограничивается до максимально допустимого значения. |
| (applies when "LimitBoxToMaxSize" is true) when true, the box will "stick" to the box high or low, w (StickBoxToLatestEx | Привязка коробки к последнему экстремуму — При включении и ограничении размера коробка привязывается к последнему экстремуму (максимуму или минимуму) внутри диапазона. |
| when true, we'll use the latest highest/lowest PA as S/R level, and "stick" the box to outside of it (StickBoxOusideSRle | Привязка коробки за пределами уровней С/С — При включении коробка позиционируется за пределами последнего экстремума, используемого как уровень поддержки/сопротивления. |
| TP1Factor | Множитель цели 1 — Множитель для расчёта первого целевого уровня тейк-профита. |
| TP3Factor | Множитель цели 3 — Множитель для расчёта третьего целевого уровня тейк-профита. |
| TP4 and TP5 targets are OPTIONAL: set TP5Factor=0 to allow only up to TP3 target; (TP5Factor) | Множитель цели 5 — Множитель для расчёта пятого целевого уровня тейк-профита. При значении 0 уровни TP4 и TP5 отключаются. |
| TP2_help | Подсказка цели 2 — Справочный текст, поясняющий, что вторая цель находится на полпути между первой и третьей. |
| TP4_help | Подсказка цели 4 — Справочный текст, поясняющий, что четвёртая цель находится на полпути между третьей и пятой. |
| LevelsResizeFactor | Множитель изменения размера уровней — Множитель для корректировки размера ценового диапазона коробки. |
| BoxColorOK | Цвет коробки OK — Цвет прямоугольника при допустимом размере коробки для торговли. |
| BoxColorNOK | Цвет коробки NOK — Цвет прямоугольника при недопустимом (слишком маленьком или слишком большом) размере коробки. |
| BoxColorMAX | Цвет коробки MAX — Цвет прямоугольника при превышении максимального допустимого размера коробки. |
| LevelColor | Цвет уровней — Цвет линий уровней и подписей на графике. |
| FibLength | Длина Фибоначчи — Длина фибоначчиевой линии, рисуемой от начала до конца коробки. |
| showProfitZone | Показать зону прибыли — Переключатель отображения зон прибыли (прямугольников между целями) на графике. |
| ProfitColor | Цвет зоны прибыли — Цвет зоны прибыли, отображаемой на графике для текущей сессии. |
| MondayFix | Исправление понедельника — Переключатель исправления отображения сессии при отсутствии понедельничных свечей на некоторых брокерах. |
| all objects drawn by this indicator will be prefixed with this (objPrefix) | Префикс объектов — Префикс, добавляемый к именам всех графических объектов, создаваемых индикатором. |
Поиск по коду файла
#property indicator_chart_window
#define VERSION "3 Tier London Breakout Indicator V.3.2b"
/*+------------------------------------------------------------------+
*
* Version history:
*
*
* V 3.3b: Fixed the Monday no candles issue on IBFX
* - added "MondayFix" input. Set to True to fix IBFX Monday candle issues.
*
* V.3.2b:
* - added "StickBoxOusideSRlevels" input; inspired by JohnnyBSmart posts; for experimentation+improvement purpose only;
* when true, the latest extreme (reversal) within the box is used as a S/R level;
* the box is sticking BEYOND that extreme level;
* If the reversal point was a "major" reversal, then price will fly away from the box towards the TP zone.
* We yet have to determine if the reversal will persist (hitting more TP levels),
* or if it was only a minor retracement (and will come back to us)...
*
* V.3.2a:
* - fixed "StickBoxToLatestExtreme" option... box was always sticking to the highest price;
*
* V.3.2: Added "StickBoxToLatestExtreme" input (false);
* when true, the box will "stick" to the box high or low, whichever comes last;
* when false(default), the box will be centered on the EMA(box_time_range) value, as in previous versions;
* This extension is targeted at exploring and optimizing the box POSITION in PRICE, as suggested by JohnnyBSmart;
* Applies only with "LimitBoxToMaxSize" and "StickBoxToLatestExtreme" are true;
*
* V.3.1: setting TP5Factor to 0 will disable TP4 and TP5 levels,
* giving an equivalent of the V.2 indicator.
*
* V.3: added TP5Factor input: displays 5 TP levels instead of the 3 levels of V.2
*
* V.2: original version by Squalou, posted on forexfactory.com
* (thread:
* - "3 Tier London Breakout.mq4" indicator can be used for visual help;
*
*+------------------------------------------------------------------+
*/
extern string Info = VERSION; // version number information
extern string StartTime = "06:00"; // time for start of price establishment window
extern string EndTime = "09:14"; // time for end of price establishment window
extern string SessionEndTime= "04:30"; // end of daily session; tomorrow is another day!
extern color SessionColor = Linen; // show Session periods with a different background color
extern int NumDays = 200; // days back
extern int MinBoxSizeInPips = 15; // min tradable box size; when box is smaller than that, you should at least reduce your usual lot-size if you decide to trade it;
extern int MaxBoxSizeInPips = 80; // max tradable box size; don't trade when box is larger than that value
extern bool LimitBoxToMaxSize = true; // when true, a box larger than MaxBoxSizeInPips will be limited to MaxBoxSizeInPips, and centered on the EMA(box_time_range) value.
extern bool StickBoxToLatestExtreme = false; // (applies when "LimitBoxToMaxSize" is true) when true, the box will "stick" to the box high or low, whichever comes last; else it will be centered on the EMA(box_time_range) value;
extern bool StickBoxOusideSRlevels = false; // when true, we'll use the latest highest/lowest PA as S/R level, and "stick" the box to outside of it;
extern double TP1Factor = 1.000;
double TP2Factor; // set to half-way between TP1Factor and TP3Factor;
extern double TP3Factor = 2.618;
double TP4Factor; // set to half-way between TP3Factor and TP5Factor;
extern double TP5Factor = 4.236;// TP4 and TP5 targets are OPTIONAL: set TP5Factor=0 to allow only up to TP3 target;
extern string TP2_help = "TP2 is half-way between TP1 and TP3";
extern string TP4_help = "TP4 is half-way between TP3 and TP5";
double SLFactor = 1.000;
extern double LevelsResizeFactor = 1.0;
extern color BoxColorOK = LightBlue;
extern color BoxColorNOK = Red;
extern color BoxColorMAX = Orange;
extern color LevelColor = Black;
extern int FibLength = 14;
extern bool showProfitZone = true;
extern color ProfitColor = LightGreen;
extern bool MondayFix = True;
extern string objPrefix = "LB2-"; // all objects drawn by this indicator will be prefixed with this
double pip;
int digits;
int BarsBack;
double BuyEntry,BuyTP1,BuyTP2,BuyTP3,BuyTP4,BuyTP5,BuySL;
double SellEntry,SellTP1,SellTP2,SellTP3,SellTP4,SellTP5,SellSL;
int SL_pips,TP1_pips,TP2_pips,TP3_pips,TP4_pips,TP5_pips;
double TP1FactorInput,TP2FactorInput,TP3FactorInput,TP4FactorInput,TP5FactorInput,SLFactorInput;
datetime tBoxStart,tBoxEnd,tSessionStart,tSessionEnd,tLastComputedSessionStart,tLastComputedSessionEnd;
double boxHigh,boxLow,boxExtent,boxMedianPrice;
int StartShift;
int EndShift;
datetime alreadyDrawn;
int init() {
// код доступен только после оплаты
}/*init*/
int deinit() {
RemoveObjects(objPrefix);
return(0);
}/*deinit*/
void start() {
// код доступен только после оплаты
}/*start*/
void new_tick(int i) // i = bar number: 0=current(last) bar
{
datetime now = Time[i];
compute_LB_Indi_LEVELS(now);
show_boxes(now);
}//new_tick()
void compute_LB_Indi_LEVELS(datetime now)
{
int boxStartShift,boxEndShift;
if (now >= tSessionStart && now <= tSessionEnd) return; // box already up-to-date, no need to recompute
tBoxStart = StrToTime(TimeToStr(now,TIME_DATE) + " " + StartTime);
tBoxEnd = StrToTime(TimeToStr(now,TIME_DATE) + " " + EndTime);
if (tBoxStart > tBoxEnd) tBoxStart -= 86400; // midnight wrap fix
if (now < tBoxEnd) { // consider the last PAST box
tBoxStart -= 86400;
tBoxEnd -= 86400;
while ((TimeDayOfWeek(tBoxStart)==0 || TimeDayOfWeek(tBoxStart)==6)
&& (TimeDayOfWeek(tBoxEnd)==0 || TimeDayOfWeek(tBoxEnd)==6) ) {
tBoxStart -= 86400;
tBoxEnd -= 86400;
}
}
tSessionStart = tBoxEnd;
tSessionEnd = StrToTime(TimeToStr(tSessionStart,TIME_DATE) + " " + SessionEndTime);
if (tSessionStart > tSessionEnd) tSessionEnd = tSessionEnd + 86400; // midnight wrap fix
if ( MondayFix == False )
{
if (TimeDayOfWeek(tSessionEnd)==6/*saturday*/) tSessionEnd += 2*86400;
if (TimeDayOfWeek(tSessionEnd)==0/*sunday*/) tSessionEnd += 86400;
}
tLastComputedSessionStart = tSessionStart;
tLastComputedSessionEnd = tSessionEnd;
boxStartShift = iBarShift(NULL,0,tBoxStart);
boxEndShift = iBarShift(NULL,0,tBoxEnd);
boxHigh = High[iHighest(NULL,0,MODE_HIGH,(boxStartShift-boxEndShift+1),boxEndShift)];
boxLow = Low[iLowest(NULL,0,MODE_LOW,(boxStartShift-boxEndShift+1),boxEndShift)];
boxMedianPrice = (boxHigh+boxLow)/2;
boxExtent = boxHigh - boxLow;
if (boxExtent >= MaxBoxSizeInPips * pip && LimitBoxToMaxSize==true) { // box too large, but we allow to trade it at its max acceptable value
if (StickBoxToLatestExtreme==true) {
int boxStartShiftM1 = iBarShift(NULL,PERIOD_M1,tBoxStart);
int boxEndShiftM1 = iBarShift(NULL,PERIOD_M1,tBoxEnd);
int boxHighShift = iHighest(NULL,PERIOD_M1,MODE_HIGH,(boxStartShiftM1-boxEndShiftM1+1),boxEndShiftM1);
int boxLowShift = iLowest(NULL,PERIOD_M1,MODE_LOW,(boxStartShiftM1-boxEndShiftM1+1),boxEndShiftM1);
boxExtent = MaxBoxSizeInPips * pip;
if (boxHighShift <= boxLowShift) {
if (StickBoxOusideSRlevels==true) {
boxMedianPrice = boxHigh + boxExtent/2;
} else {
boxMedianPrice = boxHigh - boxExtent/2;
}
} else {
if (StickBoxOusideSRlevels==true) {
boxMedianPrice = boxLow - boxExtent/2;
} else {
boxMedianPrice = boxLow + boxExtent/2;
}
}
} else {
boxExtent = MaxBoxSizeInPips * pip;
boxMedianPrice = iMA(NULL,0,boxStartShift-boxEndShift,0,MODE_EMA,PRICE_MEDIAN,boxEndShift);
}
}
boxExtent *= LevelsResizeFactor;
boxHigh = NormalizeDouble(boxMedianPrice + boxExtent/2,DigПоказано первые 50% кода (символов: 14288)
Открыть по тарифу
Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.
Разовая покупка файла
На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.
Зачем нужен email? После подтверждения оплаты файл сохранится в кабинете на этот email. Если аккаунта ещё нет, мы создадим его и пришлём ссылку для задания пароля. Если аккаунт уже есть, покупка добавится в него. Укажите адрес, к которому у вас есть доступ.
Чтобы оформить заказ, введите email и перейдите к оплате.