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

NewsBreak

newsbreakv4.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 общих тегов
Вы автор или правообладатель?

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

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

О программе

NewsBreak — торговый советник для MetaTrader 4, реализующий стратегию торговли на основе пробоя ценовых уровней в окрестности заданных новостных событий. Советник формирует отложенные ордера BuyStop и SellStop при достижении определённого временного окна, рассчитывая уровни входа на основе экстремумов текущего часового графика с учётом спреда.

Поддерживаются два независимых временных окна для новостных событий, каждое из которых может быть включено или отключено отдельно. Между окнами реализована логика очистки отложенных ордеров первой группы, а также механизм OCO (One Cancels Other), контролирующий наличие пары ордеров.

Для открытых позиций второй группы реализованы функции перевода в безубыток и использования скользящего стоп-лосса. Параметры лота, расстояния пробоя, тейка и стоп-лосса настраиваются независимо.

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

НастройкаОписание
wantNews1 Новостное окно 1 — Включает или отключает первое новостное временное окно.
NewsHour1 Час новостного окна 1 — Час первого новостного временного окна.
NewsMinutes1 Минута новостного окна 1 — Минута начала первого новостного временного окна.
wantNews2 Новостное окно 2 — Включает или отключает второе новостное временное окно.
NewsHour2 Час новостного окна 2 — Час второго новостного временного окна.
NewsMinutes2 Минута новостного окна 2 — Минута начала второго новостного временного окна.
wantOCO OCO (отмена одного другим) — Включает механизм OCO (One Cancels Other) для управления отложенными ордерами первой группы.
NewsLots Размер лота — Размер лота для открытия отложенных ордеров.
NewsPips Расстояние пробоя (пипсы) — Расстояние в пунктах от экстремумов графика для выставления уровней отложенных ордеров.
NewsTP Тейк-профит (пипсы) — Тейк-профит отложенных ордеров в пунктах.
NewsSL Стоп-лосс (пипсы) — Стоп-лосс отложенных ордеров в пунктах.
BEpips Безубыток (пипсы) — Расстояние в пунктах для перевода открытой позиции в безубыток.
TrailingStop Скользящий стоп-лосс (пипсы) — Расстояние в пунктах для скользящего стоп-лосса.
wantNewsBO Пробой новостей (группа 2) — Включает или отключает торговлю по пробою новостей для второй группы ордеров.
wantSpreadBO Фильтр спреда (группа 2) — Включает или отключает фильтр спреда для второй группы ордеров.
Получить полный код

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

#define MAGIC1  20060819
#define MAGIC2  12345678
#include <stdlib.mqh>
#define     NL    "\n"

extern bool    wantNews1        = true;
extern int     NewsHour1        = 11;
extern int     NewsMinutes1     = 0;
extern bool    wantNews2        = true;
extern int     NewsHour2        = 12;
extern int     NewsMinutes2     = 30;
extern bool    wantOCO          = true;
extern double  NewsLots         = 5;
extern int     NewsPips         = 15;
extern int     NewsTP           = 60;
extern int     NewsSL           = 55;
extern int     BEpips           = 60;
extern int     TrailingStop     = 35;
extern bool    wantNewsBO       = true; 
extern bool    wantSpreadBO     = true;

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 DoBE(int byPips)
  {
    for (int i = 0; i < OrdersTotal(); i++) {
     OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
     if ( OrderSymbol()==Symbol() && (OrderMagicNumber() == MAGIC2))  
        {
            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() == MAGIC2))  
        {

          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=iHigh(Symbol(),PERIOD_M1,0);
   double l=iLow(Symbol(),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;

      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=iHigh(Symbol(),PERIOD_M1,0);
   dou

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

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

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

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

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

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

Стоимость полного кода
566,70₽ ≈ $6.93