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

NewsBreakv2

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

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

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

О программе

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

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

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

Работа советника основана на данных графика M1 и текущих рыночных цен. Продукт использует торговые API MetaTrader 4 для размещения и управления ордерами.

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

НастройкаОписание
wantNews1 Включает или отключает первое новостное окно.
NewsHour1 Час первого новостного окна (в часах UTC).
NewsMinutes1 Минута первого новостного окна.
wantNews2 Включает или отключает второе новостное окно.
NewsHour2 Час второго новостного окна (в часах UTC).
NewsMinutes2 Минута второго новостного окна.
NewsLots Объём лота для открытия позиций.
NewsPips Смещение в пунктах для расчёта уровней отложенных ордеров.
NewsTP Тейк-профит в пунктах для новостных ордеров.
NewsSL Стоп-лосс в пунктах для новостных ордеров.
BEpips Количество пунктов для перевода позиции в безубыток.
TrailingStop Расстояние в пунктах для активации скользящего стоп-лосса.
wantNewsBO Переключатель функциональности новостного пробоя.
wantSpreadBO Переключатель функциональности пробоя по спреду.
Получить полный код

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

#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 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;

     if(wantNews1)
     {
      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);
   double

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

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

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

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

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

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

Стоимость полного кода
564,30₽ ≈ $6.90