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

newsbreakv9r1.mq4

Похожие материалы по тегам

#1.mtf_collider_h4_close_13_v18bar.mq4MQL4 / MetaTrader 4 · 1 общих теговea robofibo source v.11.2.mq4MQL4 / MetaTrader 4 · 1 общих теговsma crossover scalper ea for mt4.mq4MQL4 / MetaTrader 4 · 1 общих теговr15 pivot points expert advisor by @fundedmillionairess.mq4MQL4 / MetaTrader 4 · 1 общих теговnewstrader.mq5MQL5 / MetaTrader 5 · 1 общих теговmm3.0_flip_codepro_v3.1_with_cooldown@lifeindreamsworld.mq5MQL5 / MetaTrader 5 · 1 общих тегов
Вы автор или правообладатель?

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

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

О программе

Советник для MetaTrader 4, работающий в рамках стартовой функции start(). Использует торговые API MetaTrader для размещения, модификации и удаления рыночных и отложенных ордеров. Рассчитывает уровни на основе диапазонов высоких и низких цен за заданное количество баров, а также учитывает текущий спред и время для формирования условий входа. Поддерживает несколько групп ордеров с разными магическими номерами, а также функции контроля риска через проверку маржи, перевод в безубыток и трейлинг-стоп.

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

НастройкаОписание
RiskPercent Риск — Максимальный допустимый процент маржи от баланса аккаунта; при превышении советник прекращает открытие новых позиций.
wantNews1 Новостной сценарий 1 — Включает или отключает первый новостной сценарий размещения отложенных ордеров.
wantOCONews1 Закрытие при новости 1 — Включает или отключает закрытие открытых позиций первого сценария при выходе новостей.
NewsHour1 Час новости 1 — Час начала новостного окна для первого сценария.
NewsMinutes1 Минута новости 1 — Минута начала новостного окна для первого сценария.
wantNews2 Новостной сценарий 2 — Включает или отключает второй новостной сценарий размещения отложенных ордеров.
wantOCONews2 Закрытие при новости 2 — Включает или отключает закрытие открытых позиций второго сценария при выходе новостей.
NewsHour2 Час новости 2 — Час начала новостного окна для второго сценария.
NewsMinutes2 Минута новости 2 — Минута начала новостного окна для второго сценария.
secondsafter Секунд после — Количество секунд после начала новостного окна, в течение которых действуют условия проверки и закрытия.
secondsbefore Секунд до — Количество секунд до начала новостного окна, в течение которых размещаются отложенные ордера.
NewsLots Лоты новостей — Объём лотов для новостных ордеров.
NewsPips Пункты новостей — Количество пунктов, используемое для расчёта ценовых уровней пробоя новостей.
NewsTP ТП новостей — Уровень фиксации прибыли в пунктах для новостных ордеров.
NewsSL СЛ новостей — Уровень стоп-лосса в пунктах для новостных ордеров.
NewsLookBack Просмотр новостей — Количество баров для определения максимума и минимума ценового диапазона при новостном пробое.
BEpips Пункты безубытка 1 — Расстояние в пунктах, при достижении которого позиции первой группы переводятся в безубыток.
TrailingStop Трейлинг-стоп 1 — Расстояние в пунктах для трейлинг-стопа позиций первой группы.
wantSpreadBO1 Пробой спреда 1 — Включает или отключает первый сценарий открытия ордеров при превышении спреда порогового значения.
wantSpreadBO2 Пробой спреда 2 — Включает или отключает второй сценарий открытия ордеров при превышении спреда порогового значения.
VarSpread Порог спреда — Минимальное значение спреда в пунктах, при превышении которого активируются условия пробоя.
BBTF Таймфрейм полос — Таймфрейм, используемый для расчёта ценового диапазона при торговле по полосам.
BarsForRange Бары диапазона — Количество баров, используемых для определения максимальной и минимальной цены диапазона.
wantBBbuys Покупки полос — Включает или отключает открытие покупок при пробое верхней границы ценового диапазона.
BBBuyLots Лоты покупок — Объём лотов для покупок по полосам.
BuyBarPips Пункты покупки — Количество пунктов пробоя верхней границы для открытия покупки.
BuyBarTP ТП покупок — Уровень фиксации прибыли в пунктах для покупок по полосам.
BuyBarSL СЛ покупок — Уровень стоп-лосса в пунктах для покупок по полосам.
wantBBsells Продажи полос — Включает или отключает открытие продаж при пробое нижней границы ценового диапазона.
BBSellLots Лоты продаж — Объём лотов для продаж по полосам.
SellBarPips Пункты продажи — Количество пунктов пробоя нижней границы для открытия продажи.
SellBarTP ТП продаж — Уровень фиксации прибыли в пунктах для продаж по полосам.
SellBarSL СЛ продаж — Уровень стоп-лосса в пунктах для продаж по полосам.
BOBEpips Пункты безубытка 2 — Расстояние в пунктах, при достижении которого позиции второй группы переводятся в безубыток.
BOTrailingStop Трейлинг-стоп 2 — Расстояние в пунктах для трейлинг-стопа позиций второй группы.
Получить полный код

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

#define MAGIC1  11111111
#define MAGIC2  22222222
#define MAGIC3  33333333
#define MAGIC4  44444444
#define MAGIC5  55555555

#include <stdlib.mqh>
#define     NL    "\n"

extern int     RiskPercent    = 100;

extern bool    wantNews1      = true;
extern bool    wantOCONews1   = true;
extern int     NewsHour1      = 12;
extern int     NewsMinutes1   = 30;

extern bool    wantNews2      = true;
extern bool    wantOCONews2   = true;
extern int     NewsHour2      = 12;
extern int     NewsMinutes2   = 31;

extern int     secondsafter   = 120;
extern int     secondsbefore  = 90;
extern double  NewsLots       = 5;
extern int     NewsPips       = 5;
extern int     NewsTP         = 85;
extern int     NewsSL         = 60;
extern int     NewsLookBack   = 5;
extern int     BEpips         = 60;
extern int     TrailingStop   = 40;

extern bool    wantSpreadBO1  = false;
extern bool    wantSpreadBO2  = false;
extern int     VarSpread      = 8;
extern int     BBTF           = 1;
extern int     BarsForRange   = 15;

extern bool    wantBBbuys     = true;
extern double  BBBuyLots      = 1;
extern int     BuyBarPips     = 12;
extern int     BuyBarTP       = 25;
extern int     BuyBarSL       = 125;

extern bool    wantBBsells    = true;
extern double  BBSellLots     = 0.5;
extern int     SellBarPips    = 12;
extern int     SellBarTP      = 25;
extern int     SellBarSL      = 125;
extern int     BOBEpips       = 60;
extern int     BOTrailingStop = 40;

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

int deinit()
  {
   return(0);
  }

void CheckForPendingClose1()
  {
     int  totalorders = OrdersTotal();

     for(int i=totalorders-1;i>=0;i--)                              
      {
        OrderSelect( i, SELECT_BY_POS);
        if (OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC1)  
         {  
          if ( OrderType() == OP_BUYSTOP ) bool result = OrderDelete( OrderTicket() );
          if ( OrderType() == OP_SELLSTOP )     result = OrderDelete( OrderTicket() );
         }
      } 
   return;
 }

void CheckForPendingClose2()
  {
     int  totalorders = OrdersTotal();

     for(int i=totalorders-1;i>=0;i--)                              
      {
        OrderSelect( i, SELECT_BY_POS);
        if (OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC2)  
         {  
          if ( OrderType() == OP_BUYSTOP ) bool result = OrderDelete( OrderTicket() );
          if ( OrderType() == OP_SELLSTOP )     result = OrderDelete( OrderTicket() );
         }
      } 
   return;
 }

void CheckForPendingClose3()
  {
     int  totalorders = OrdersTotal();

     for(int i=totalorders-1;i>=0;i--)                              
      {
        OrderSelect( i, SELECT_BY_POS);
        if (OrderSymbol()==Symbol() && OrderMagicNumber() == MAGIC3)  
         {  
          if ( OrderType() == OP_BUYSTOP ) bool result = OrderDelete( OrderTicket() );
          if ( OrderType() == OP_SELLSTOP )     result = OrderDelete( OrderTicket() );
         }
      } 
   return;
 }

 void DoBE(int byPips)
  {
    for (int i = 0; i < OrdersTotal(); i++) {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if (OrderSymbol()==Symbol() && (OrderMagicNumber() == MAGIC1) || (OrderMagicNumber() == MAGIC2) || (OrderMagicNumber() == MAGIC3) || (OrderMagicNumber() == MAGIC4) || (OrderMagicNumber() == MAGIC5))  
        {
            if (OrderType() == OP_BUY) if (Bid - OrderOpenPrice() > byPips * Point) if (OrderStopLoss() < OrderOpenPrice()) {
              OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() +  Point, OrderTakeProfit(), Red);
            }
            if (OrderType() == OP_SELL) if (OrderOpenPrice() - Ask > byPips * Point) if (OrderStopLoss() > OrderOpenPrice()) { 
               OrderModify(OrderTicket(), OrderOpenPrice(), OrderOpenPrice() -  Point, OrderTakeProfit(), Red);
            }
        }
    }
  }

  void DoTrail()
  {
    for (int i = 0; i < OrdersTotal(); i++) {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if ( OrderSymbol()==Symbol() && (OrderMagicNumber() == MAGIC1) || (OrderMagicNumber() == MAGIC2)|| (OrderMagicNumber() == MAGIC3)|| (OrderMagicNumber() == MAGIC4)|| (OrderMagicNumber() == MAGIC5))  
        {

          if (OrderType() == OP_BUY) {
             if(Bid-OrderOpenPrice()>Point*TrailingStop)
             {
                if(OrderStopLoss()<Bid-Point*TrailingStop)
                  {
                     OrderModify(OrderTicket(),OrderOpenPrice(),Bid-Point*TrailingStop,OrderTakeProfit(),0,Green);
                     return(0);
                  }
             }
          }

          if (OrderType() == OP_SELL) 
          {
             if((OrderOpenPrice()-Ask)>(Point*TrailingStop))
             {
                if((OrderStopLoss()>(Ask+Point*TrailingStop)) || (OrderStopLoss()==0))
                {
                   OrderModify(OrderTicket(),OrderOpenPrice(),Ask+Point*TrailingStop,OrderTakeProfit(),0,Red);
                   return(0);
                }
             }
          }
       }
    }
 }

void CheckForNewsBreak1()
  {
   double h=High[Highest(NULL,0,MODE_HIGH,NewsLookBack,0)];
   double l=Low[Lowest(NULL,0,MODE_LOW,NewsLookBack,0)];
   double sp=Ask-Bid;
   double ho=h+sp+NewsPips*Point;
   double lo=l-sp-NewsPips*Point;
   double hsl=ho-NewsSL*Point;
   double lsl=lo+NewsSL*Point;
   double htp=ho+NewsTP*Point;
   double ltp=lo-NewsTP*Point;

      OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC1,0,Green);
      OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC1,0,Red);

 } 

void CheckForNewsBreak2()
  {
   double h=High[Highest(NULL,0,MODE_HIGH,NewsLookBack,0)];
   double l=Low[Lowest(NULL,0,MODE_LOW,NewsLookBack,0)];
   double sp=Ask-Bid;
   double ho=h+sp+NewsPips*Point;
   double lo=l-sp-NewsPips*Point;
   double hsl=ho-NewsSL*Point;
   double lsl=lo+NewsSL*Point;
   double htp=ho+NewsTP*Point;
   double ltp=lo-NewsTP*Point;

      OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC2,0,Green);
      OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC2,0,Red);
 } 

void CheckForSpreadBreak1()
  {
   double h=High[Highest(NULL,0,MODE_HIGH,NewsLookBack,0)];
   double l=Low[Lowest(NULL,0,MODE_LOW,NewsLookBack,0)];
   double sp=Ask-Bid;
   double ho=h+sp+NewsPips*Point;
   double lo=l-sp-NewsPips*Point;
   double hsl=ho-NewsSL*Point;
   double lsl=lo+NewsSL*Point;
   double htp=ho+NewsTP*Point;
   double ltp=lo-NewsTP*Point;
   double NewsTime1 = (NewsHour1*3600)+(NewsMinutes1*60);
   double NewsTime2 = (NewsHour2*3600)+(NewsMinutes2*60);
   double openbar1  = iBarShift(NULL, 0, NewsTime1);
   double openbar2  = iBarShift(NULL, 0, NewsTime2);

      if(sp > VarSpread && Bid>=openbar1+NewsPips*Point || sp > VarSpread && Ask<=openbar1-NewsPips*Point)
       {
        OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC3,0,PaleGreen);
        OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC3,0,Pink);
       }
      if(sp > VarSpread && Bid>=openbar2+NewsPips*Point || sp > VarSpread && Ask<=openbar2-NewsPips*Point)
       {
        OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC3,0,PaleGreen);
        OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC3,0,Pink);
       }

  }

void CheckForSpreadBreak2()
  {
   double hprice=High[Highest(NULL,PERIOD_M1,MODE_HIGH,4,0)];
   double lprice=Low[Lowest(NULL,PERIOD_M1,MODE_LOW,4,0)];
   double h=iHigh(NULL,PERIOD_M1,0);
   double l=iLow(NULL,PERIOD_M1,0);
   double sp=Ask-Bid;
   double ho=h+sp+NewsPips*Point;
   double lo=l-sp-NewsPips*Point;
   double hsl=ho-NewsSL*Point;
   double lsl=lo+NewsSL*Point;
   double htp=ho+NewsTP*Point;
   double ltp=lo-NewsTP*Point;

      if(sp > VarSpread  && Bid>=lprice+(NewsPips*Point))
       {
        OrderSend(Symbol(),OP_BUY,NewsLots-(10*Point),Ask,3,hsl,htp,"",MAGIC4,0,Blue);
       }

      if(sp > VarSpread  && Ask<=hprice-(NewsPips*Point))
       {
       OrderSend(Symbol(),OP_SELL,NewsLots-(10*Point),Bid,3,lsl,ltp,"",MAGIC4,0,Orange);
       }
 }

void CheckForBBbuys()
  {
   double hprice=High[Highest(NULL,0,MODE_HIGH,BarsForRange,0)];
   double lprice=Low[Lowest(NULL,0,MODE_LOW,BarsForRange,0)];

    if(Bid-iOpen(NULL,BBTF,0) >= BuyBarPips*Point) OrderSend(Symbol(),OP_BUY,BBBuyLots,Ask,3,Ask-BuyBarSL*Point,Ask+BuyBarTP*Point,"",MAGIC5,0,LimeGreen);
   }

void CheckForBBsells()
  {
   double hp

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

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

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

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

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

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

Стоимость полного кода
1 262,40₽ ≈ $15.43