Установка

Файлы необходимо сохранить:
trade_lib&info_lib.mqh — в директорию «…\MetaTrader 4\experts\include\«
InternalBarEnter.mq4 — в директорию «…\MetaTrader 4\experts\«

Алгоритм работы

1. Если есть внешний бар:

1.1. Если есть стоп-ордера, установленные до появления внешнего бара, они удаляются.
1.2. Устанавливаем отложенный BuyStop ордер на уровне High внешнего бара + Step (1) пунктов, если:
    • после формирования внешнего бара еще не было открытых позиций;
    • нет установленного BuyStop ордера;
    • нет позиции на покупку, открытой до формирования текущего внешнего бара;
    • ордер возможно установить строго на рассчитанный уровень.
1.3. Устанавливаем отложенный SellStop ордер на уровне Low внешнего бара — Step (1) пунктов, если:
    • после формирования внешнего бара еще не было открытых позиций;
    • нет установленного SellStop ордера;
    • нет позиции на продажу, открытой до формирования текущего внешнего бара;
    • ордер возможно установить строго на рассчитанный уровень.
1.3. Если есть позиция, которая была открыта до появления внешнего бара:
    • для Buy: если СЛ позиции находится ниже противоположного сигнального уровня,
    • для Sell: если СЛ позиции находится выше противоположного сигнального уровня,
переносим его на сигнальный уровень либо, если это не возможно, на ближайший допустимый.
1.4. Если есть позиция, которая была открыта после появления внешнего бара:
    • удаляем все остаточные отложенные стоп-ордера;
    • для позиции определяется величина Paritet: расстояние от цены открытия позиции до изначально установленного СЛ;
    • если уровень паритета еще не достигнут:
      • если текущая цена позволяет, СЛ переносится на этот уровень;
      • если перенести СЛ на уровень паритета невозможно:
        • для Buy:
          • СЛ переносится на уровень Low[2] — Luft — Spread при этом:
            • СЛ переносится только вверх;
            • перенос возможен только, если СЛ будет расположен в зоне прибыли (безубытка);
            • если перенести СЛ строго на заданный уровень невозможно, используем ближайший допустимый;
        • для Sell:
          • СЛ переносится на уровень High[2] + Luft + Spread*2.0 при этом:
            • СЛ переносится только вниз;
            • перенос возможен только, если СЛ будет расположен в зоне прибыли (безубытка);
            • если перенести СЛ строго на заданный уровень невозможно, используем ближайший допустимый;
    • если уровень паритета уже достигнут:
      • для Buy:
        • СЛ переносится на уровень High[2] + Luft + Spread*2.0 при этом:
          • СЛ переносится только вверх;
          • если перенести СЛ строго на заданный уровень невозможно, используем ближайший допустимый;
      • для Sell:
        • СЛ переносится на уровень Low[2] — Luft — Spread при этом:
          • СЛ переносится только вниз;
          • если перенести СЛ строго на заданный уровень невозможно, используем ближайший допустимый.

2. Если цена достигает сигнального уровня:
2.1. Если есть противоположная позиция советника, открытая до формирования текущего внешнего бара, она закрывается. (Если не удалось вовремя подтащить СЛ).

2.2. Если открытых позиций нет и открытий после формирования текущего внешнего бара еще не было, открываемся в сторону пробития.

3. Параметры позиций:
3.1. Лот задается переменной Lot (0.1) при этом:

    • лот не может быть больше максимально допустимого лота;
    • лот не может быть меньше минимального допустимого лота;
    • для открытия указанным лотом на счету должно быть достаточно средств.
3.2. Изначальный СЛ устанавливается на уровне:
    • для Sell & SellStop: High внешнего бара + Step (1) пунктов;
    • для Buy & BuyStop: Low внешнего бара — Step (1) пунктов.
3.3. Тейк профит задается внешней переменной TakeProfit (100) в пунктах.
3.4. Если установить СЛ/ТП на требуемый уровень невозможно, используется ближайшее допустимое расстояние и позиция модифицируется до тех пор, пока требуемый уровень не будет достигнут.

4. Дополнительно:
4.1. Советник ведет детальный журнал всех своих действий.
4.2. Советник снабжен блоком защиты:
    • работает только на указанных счетах;
    • время работы может быть ограничено.

4.3. Если СЛ или ТП открытой позиции были изменены из вне, советник переходит в пассивный режим:

    • удаляет все отложенные ордера (для избежания лишних входов);
    • перестает сопровождать открытую позицию;
    • не устанавливает новых ордеров;
    • не открывает новых позиций.

4.4. В обычный режим работы советник переходит после того, как остаточная позиция закрывается.

Внешние переменные

Параметры советника
UseLang Язык сообщений в журнале эксперта. 0 — Русский, 1 — English.
Expert_Id Уникальный идентификатор эксперта.
Если на 2-х графиках с одинаковым символом должно работать 2 эксперта, надо установить им разные Expert_Id.
Новый Expert_Id также необходимо использовать в том случае, когда советник должен игнорировать предыдущую историю сделок.
ScanDepth Индекс бара в истории до которого проходит поиск внешнего бара при первом запуске советника.
1 — проверяется только последний сформированный бар.
Step Расстояние в пунктах от High/Low внешнего бара до уровней входа.
Lot Размер открываемой позиции.
TakeProfit Значение ТП в пунктах.
0 — отключить ТП.
Luft Расстояние в пунктах от High[2]/Low[2] до уровня СЛ позиции.
Общие параметры
Slippage Максимальное отклонение от запрошеной цены при открытии и закрытии позиции.
PauseBeforeTrade Пауза между торговыми операциями в секундах.
Если последняя торговая операция прошла меньше, чем PauseBeforeTrade секунд назад, эксперт будет ждать.
MaxWaitingTime Максимальное время ожидания в секундах.
Эксперт будет ждать завершения операции (например, освобождения торгового потока, паузы между торговыми операциями и т.д.) максимум MaxWaitingTime секунд.
IgnorIsConnected true — разрешить проверку наличия соединения с сервером (IsConnected) перед торговой операцией , false — запретить.
OrderBuyColor Цвет стрелочки, создаваемой при установке, модификации, закрытии или удалении ордеров на покупку (Buy, BuyStop и BuyLimit).
OrderSellColor Цвет стрелочки, создаваемой при установке, модификации, закрытии или удалении ордеров на продажу (Sell, SellStop и SellLimit).
Allow_Info true — разрешить вывод информации на график, false — запретить.
Allow_LogFile true — разрешить запись информации в личный лог-файл эксперта, false — запретить.
Файлы создаются в директории «…\MetaTrader 4\experts\files\_ExpertLogs\Имя эксперта(Символ, Период )\» и называются «год.месяц.день.txt».
Allow_TradeLogFile true — разрешить запись информации в лог-файл торговых операций, false — запретить.
Файлы создаются в директории «…\MetaTrader 4\experts\files\_TradeLog\» и называются «год.месяц.день.csv».
Allow_ErrorMail true — разрешить отправку короткого сообщения об ошибке на электронную почту, false — запретить.
Allow_ErrorLogFile true — разрешить запись подробного отчёта об ошибке в текстовый файл, false — запретить.
Файлы создаются в директории «…\MetaTrader 4\experts\files\_ErrorLogs\Имя эксперта( Символ, Период )\» и называются «год.месяц.день.txt».
EnglishInfo true — выводить всю информацию на английском языке, false — на русском.
Font_Size_Variant Вариант размера шрифта для вывода информации на экран (от 1 до 10).
При использовании разрешения экрана 1280*960 рекомендуется использовать Font_Size_Variant = 5.
Standart_Color Цвет нейтральной (обычной, не критической) информации.
Warning_Color Цвет информации об ошибках.
Price_Up_Color Цвет, ассоциирующийся с восходящим трендом и с позициями на покупку.
Price_Down_Color Цвет, ассоциирующийся с нисходящим трендом и с позициями на продажу.

Важно:

1. Поиск внешних баров при первом запуске:

Переменная ScanDepth отвечает за то, как будет проводится поиск внешнего бара при первом запуске советника. Если необходимо, чтобы советник просмотрел историю при первом запуске, укажите в переменной количество баров, на которое необходимо углубиться.

2. Пересечение сигнальных уровней при открытой позиции:

Если новый сигнальный уровень пересекается ценой в то время, когда со направленная с ним позиция все еще открыта, считается, что этот уровень уже отработал и после закрытия позиции входа по нему не будет. Это сделано для того, чтобы избежать открытий с задержкой.

3. Советник умеет находить свои предыдущие позиции в истории, поэтому, если требуется начать анализ «с нуля», не забывайте указывать советнику новый Expert_Id.