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

NewsBreakv8

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

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

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

О программе

NewsBreakv8 — торговый советник для MetaTrader 4, предназначенный для работы вокруг новостных событий. В коде реализована постановка отложенных ордеров (buy stop и sell stop) на пробой ценовых уровней в два заданных временных окна, а также рыночные ордера при определённых условиях пробоя. Советник использует несколько магических чисел для разделения позиций по стратегиям.

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

В качестве платформы используется MetaTrader 4, язык программирования — MQL4. Советник обрабатывает события тиков в функции start() и выполняет торговые операции через стандартные функции OrderSend и OrderModify. Все торговые решения зависят от настраиваемых параметров, задаваемых пользователем.

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

НастройкаОписание
RiskPercent Максимальный допустимый риск в процентах от баланса счёта. При превышении нового торгового цикла не запускается
wantNews1 Переключатель включения/отключения первого новостного сценария
NewsHour1 Час первого новостного окна (в местном времени сервера)
NewsMinutes1 Минута первого новостного окна
wantNews2 Переключатель включения/отключения второго новостного сценария
NewsHour2 Час второго новостного окна (в местном времени сервера)
NewsMinutes2 Минута второго новостного окна
wantOCO Переключатель режима OCO — при активации удаляются незаполненные отложенные ордера, если не сформирована полная пара
PendingTime Время в минутах, в течение которого действуют отложенные новостные ордера
NewsLots Объём лота для новостных отложенных ордеров
NewsPips Количество пипсов для смещения уровней входа в новостных ордерах
NewsTP Тейк-профит для новостных отложенных ордеров, в пипсах
NewsSL Стоп-лосс для новостных отложенных ордеров, в пипсах
NewsLookBack Сдвиг бара назад для определения уровней высокого и низкого при формировании новостных ордеров
BEpips Количество пипсов для сдвига стоп-лосса в безубыток
TrailingStop Расстояние в пипсах для активации трейлинг-стопа
wantSpreadBO Переключатель включения/отключения проверки спреда перед размещением новостных ордеров
VarSpread Пороговое значение спреда в пунктах для проверки условия пробоя
BBTF Таймфрейм для расчёта диапазона ценового канала
BarsForRange Количество баров назад для определения диапазона ценового канала
wantBBbuys Переключатель включения/отключения покупок по сигналу ценового канала
BBBuyLots Объём лота для покупки по сигналу ценового канала
BuyBarPips Количество пипсов от цены открытия бара для условия покупки
BuyBarTP Тейк-профит для ордера покупки по сигналу ценового канала, в пипсах
BuyBarSL Стоп-лосс для ордера покупки по сигналу ценового канала, в пипсах
wantBBsells Переключатель включения/отключения продаж по сигналу ценового канала
BBSellLots Объём лота для продажи по сигналу ценового канала
SellBarPips Количество пипсов от цены открытия бара для условия продажи
SellBarTP Тейк-профит для ордера продажи по сигналу ценового канала, в пипсах
SellBarSL Стоп-лосс для ордера продажи по сигналу ценового канала, в пипсах
Получить полный код

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

#define MAGIC1  20060819
#define MAGIC2  12345678
#define MAGIC3  01221962
#define MAGIC4  07221958

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

extern int     RiskPercent    = 20;

extern bool    wantNews1      = true;
extern int     NewsHour1      = 11;
extern int     NewsMinutes1   = 0;

extern bool    wantNews2      = true;
extern int     NewsHour2      = 11;
extern int     NewsMinutes2   = 1;

extern bool    wantOCO        = true;
extern int     PendingTime    = 120;
extern double  NewsLots       = 2;
extern int     NewsPips       = 5;
extern int     NewsTP         = 40;
extern int     NewsSL         = 10;
extern int     NewsLookBack   = 1;
extern int     BEpips         = 60;
extern int     TrailingStop   = 35;

extern bool    wantSpreadBO   = true;
extern int     VarSpread      = 8;

extern int     BBTF           = 1;
extern int     BarsForRange   = 1;

extern bool    wantBBbuys     = true;
extern double  BBBuyLots      = 1;
extern int     BuyBarPips     = 10;
extern int     BuyBarTP       = 50;
extern int     BuyBarSL       = 10;

extern bool    wantBBsells    = true;
extern double  BBSellLots     = 0.5;
extern int     SellBarPips    = 10;
extern int     SellBarTP      = 50;
extern int     SellBarSL      = 10;

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() == MAGIC1) || (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() == MAGIC1) || (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(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;

      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(NULL,PERIOD_M1,NewsLookBack);
   double l=iLow(NULL,PERIOD_M1,NewsLookBack);
   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 > 8 && Ask<=openbar1-NewsPips*Point)
       {
        OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC2,0,PaleGreen);
        OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC2,0,Pink);
       }
      if(sp > VarSpread && Bid>=openbar2+NewsPips*Point || sp > 8 && Ask<=openbar2-NewsPips*Point)
       {
        OrderSend(Symbol(),OP_BUYSTOP,NewsLots,ho,3,hsl,htp,"",MAGIC2,0,PaleGreen);
        OrderSend(Symbol(),OP_SELLSTOP,NewsLots,lo,3,lsl,ltp,"",MAGIC2,0,Pink);
       }

  }

void CheckForNewsBreak3()
  {
   

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

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

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

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

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

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

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