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

Keltner Breakout

keltner breakout fxfisherman.mq4
Вы автор или правообладатель?

Сообщите нам, если считаете, что материал размещён без разрешения.

Краткий обзор

О программе

«Keltner Breakout» — торговый советник для MetaTrader 4, использующий индикатор Keltner Channels для определения пробития канала. При пробитии верхней границы канала с дополнительным отступом в пунктах открывается покупка, при пробитии нижней границы — продажа. Советник автоматически закрывает позиции при развороте цены обратно внутрь канала.

Советник поддерживает несколько режимов управления рисками. Стоп-лосс может быть задан фиксированным, рассчитанным по индикатору ATR, по формуле полуволатильности, по уровням пробития предыдущего дня или в режиме безубыточности. Трейлинг-стоп активируется после достижения цены заданного триггерного уровня и позволяет защищать прибыль с настраиваемой чувствительностью.

Доступна фильтрация по торговой сессии — вход в позиции возможен только в заданном временном интервале. Размер лота можно задать фиксированным или рассчитать как процент от баланса счёта. Все ордера управляются через расширенные функции с автоматической повторной попыткой исполнения и блокировкой при торговых операциях.

Настройки программы

НастройкаОписание
_______Position_______ Группа настроек позиции: фиксированный лот, процент от баланса, тейк-профит, стоп-лосс и режим стоп-лосса.
Lots Фиксированный размер лота для открытия ордеров, используется при отключённом режиме расчёта лота по проценту от баланса.
Lots_PCT Процент от баланса счёта, используемый для расчёта размера лота при включённом режиме Use_Lots_PCT.
Use_Lots_PCT Переключатель расчёта размера лота: при значении true лот рассчитывается как процент от баланса счёта, при false — используется фиксированный размер Lots.
TP Расстояние в пунктах до тейк-профита от цены открытия ордера. При значении 0 тейк-профит не устанавливается.
SL Расстояние в пунктах для стоп-лосса. Используется в зависимости от выбранного режима SL_Mode.
SL_Mode Режим расчёта стоп-лосса: 0 — без стоп-лосса, 1 — фиксированный, 2 — по ATR, 3 — по полуволатильности, 4 — по пробитию предыдущего дня, 5 — безубыточность.
Breakeven_Pips Расстояние в пунктах от цены открытия ордера, на которое устанавливается безубыточный стоп-лосс. При значении 0 функция безубыточности отключена.
______TrailingStop_____ Группа настроек трейлинг-стопа: режим, триггер, чувствительность и динамический коэффициент для защиты прибыли.
TS_Mode Режим трейлинг-стопа: 0 — отключён, 1 — фиксированный стоп-лосс, 2 — ATR, 3 — полуволатильность, 4 — пробитие вчерашних максимумов/минимумов, 5 — безубыточность.
TS_Trigger Расстояние в пунктах от цены открытия ордера, которое цена должна пройти для активации трейлинг-стопа.
TS_Sensitivity Чувствительность срабатывания трейлинг-стопа, задаётся в пунктах. Определяет минимальное расстояние изменения стоп-лосса.
TS_DynamicFactor Динамический коэффициент, применяемый при расчёте уровня стоп-лосса в режимах ATR (2) и полуволатильности (3).
Evaluate_Interval Интервал анализа сигналов: -1 — по каждому тику на текущем таймфрейме, 0 — по каждому тику, значение больше 0 — через заданное количество минут.
_______Indicators______ Группа настроек индикаторов: дополнительные пункты фильтрации и период индикатора Keltner Channels.
Extra_Pips Дополнительные пункты отступа от границ канала Keltner для фильтрации сигналов на вход и выход из позиции.
Keltner_Period Период расчёта индикатора Keltner Channels, используемого для определения границ канала и сигналов пробития.
_______Session_______ Группа настроек торговой сессии: фильтр по времени, часы и минуты начала и окончания разрешённого периода торговли.
Filter_Session Включает или отключает фильтр торговой сессии. При включении ордера открываются только в заданном временном диапазоне.
From_Hour Час начала разрешённой торговой сессии для фильтрации входов в позиции.
From_Min Минута начала разрешённой торговой сессии для фильтрации входов в позиции.
To_Hour Час окончания разрешённой торговой сессии для фильтрации входов в позиции.
To_Min Минута окончания разрешённой торговой сессии для фильтрации входов в позиции.
Получить полный код

Поиск по коду файла

#include <stdlib.mqh>

#define TS_MODE_DISABLE 0
#define TS_MODE_FIXED_SL 1
#define TS_MODE_ATR 2
#define TS_MODE_HALF_VOLATILITY 3
#define TS_MODE_BREAKOUT 4
#define TS_MODE_BREAKEVEN 5

extern string    _______Position_______;
extern double    Lots=1;
extern double    Lots_PCT=10;
extern bool      Use_Lots_PCT=false;
extern int       TP=0;
extern int       SL=30;
extern int       SL_Mode=0;
extern int       Breakeven_Pips=0;

extern string    ______TrailingStop_____;
extern int       TS_Mode=0;       // 0 = disabled, 1 = Fixed SL, 2 = ATR, 3 = Half Volatility, 4 = Breakout Yesterday Hi/Lo
extern int       TS_Trigger=30;
extern int       TS_Sensitivity=3;
extern double    TS_DynamicFactor=0.5;   // applied only if TrailingStopMode = 2 or 3
extern int       Evaluate_Interval=1; // -1 chart, 0 tick, > 0 specified min

extern string    _______Indicators______;
extern int       Extra_Pips=1;
extern int       Keltner_Period = 10;

extern string    _______Session_______;
extern bool Filter_Session=false;
extern int From_Hour=13;
extern int From_Min=0;
extern int To_Hour=18;
extern int To_Min=0;

string expert_name = "Keltner Breakout";
int main_magic;
int open_slippage=5;
int close_slippage=10;

int orderType;
double orderPrice;
datetime timeNextEval;

int init()
  {
      // код доступен только после оплаты
   }

int deinit()
  {
   return(0);
  }

int start()
{
      // код доступен только после оплаты
   }

int BuyNow()
{
    double trueSL, trueTP, lotSize;
    lotSize = GetLots(Symbol(), Lots, Lots_PCT, Use_Lots_PCT);
    trueSL = Get_SL(OP_BUY, Ask, Ask, SL, SL_Mode, TS_DynamicFactor);
    if (TP > 0) trueTP = Bid+(TP*Point);
    int ticket = OrderSendEx(Symbol(), OP_BUY, lotSize, Ask, open_slippage*Point, trueSL, trueTP, expert_name + " " + Symbol() + Period(), main_magic, 0, Yellow);
    if (ticket > 0) orderType = OP_BUY; orderPrice = Bid;
    return(ticket);
}

int SellNow()
{
  double trueSL, trueTP, lotSize;
  lotSize = GetLots(Symbol(), Lots, Lots_PCT, Use_Lots_PCT);
  trueSL = Get_SL(OP_SELL, Bid, Bid, SL, SL_Mode, TS_DynamicFactor);
  if (TP > 0) trueTP = Bid-(TP*Point);
  int ticket = OrderSendEx(Symbol(), OP_SELL, lotSize, Bid, open_slippage*Point, trueSL, trueTP, expert_name + " " + Symbol() + Period(), main_magic, 0, Yellow);
  if (ticket > 0) orderType = OP_SELL; orderPrice = Bid;
  return(ticket);
}

void ControlTrailingStop(int ticket, double SL, int TS_Mode, int TS_Trigger, double TS_DynamicFactor, int TS_Sensitivity)
{
  if (ticket == 0 || TS_Mode == 0) return;

  double ts;
  if (OrderSelectEx(ticket, SELECT_BY_TICKET, MODE_TRADES)==false) return;
  if (OrderType() == OP_BUY){
    ts = Get_SL(OP_BUY, OrderOpenPrice(), Bid, SL, TS_Mode, TS_DynamicFactor);
    if ((ts >= OrderStopLoss() + TS_Sensitivity*Point) && (ts > 0)  && (Bid >= OrderOpenPrice() + TS_Trigger*Point )) {
      if (Bid - ts >= 5 * Point)
      {
        OrderModifyEx(ticket, OrderOpenPrice(), ts, OrderTakeProfit(), 0, Red);
      }else if(Bid <= ts){
        CloseNow(ticket);
      }
    }

  }else if(OrderType() == OP_SELL){
    ts = Get_SL(OP_SELL, OrderOpenPrice(), Ask, SL, TS_Mode, TS_DynamicFactor);
    if ((ts <= OrderStopLoss() - TS_Sensitivity*Point) && (ts > 0) && (Ask <= OrderOpenPrice() - TS_Trigger*Point)){
      if (ts - Ask >= 5 * Point)
      {
        OrderModifyEx(ticket, OrderOpenPrice(), ts, OrderTakeProfit(), 0, Red);
      }else if(ts <= Ask){
        CloseNow(ticket);
   

Показано первые 50% кода (символов: 9249)

Открыть по тарифу

Купите тариф с пакетом открытий или войдите, если тариф уже есть. Открытый файл останется в вашем кабинете навсегда.

Разовая покупка файла

На этой странице откроется полный исходный код файла вместо ознакомительного фрагмента.

Чтобы оформить заказ, введите email и перейдите к оплате.

Стоимость полного кода
924,90₽ ≈ $11.30