← К каталогу
Исходный код · ID 1359

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 и перейдите к оплате.

Стоимость полного кода
1 428,80₽ ≈ $17.46