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

MultiBreakout_v5

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

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

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

О программе

MultiBreakout_v5 — торговый советник для MetaTrader 4, работающий по принципу breakout-системы. Советник определяет уровни пробоя на основе максимума и минимума за заданное количество баров и размещает отложенные ордера выше и ниже текущей цены. Работа ведётся в настраиваемых временных окнах с возможностью ручного запуска входа.

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

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

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

НастройкаОписание
LotSize Размер лота — Размер торгового лота для открытия позиций
BrokerOffsetToGMT Смещение брокера к GMT — Часовой сдвиг брокера относительно GMT для корректного определения торгового времени
NumberOfOrdersPerSide X TakeProfitIncrement = Highest TakeProfit Level (NumberOfOrdersPerSide) Количество ордеров на сторону — Количество отложенных ордеров, размещаемых по каждой стороне
TakeProfitIncrement Приращение Take Profit — Шаг в пунктах между уровнями фиксации прибыли для последовательных ордеров
EnterNOW Вход немедленно — Включает режим немедленного входа в позицию при наступлении текущего времени
Trade1 Торговля в окне 1 — Включает или отключает первый торговый период
Time1Hour Час начала окна 1 — Час начала первого торгового окна
Time1Minutes Минута начала окна 1 — Минута начала первого торгового окна
Trade2 Торговля в окне 2 — Включает или отключает второй торговый период
Time2Hour Час начала окна 2 — Час начала второго торгового окна
Time2Minutes Минута начала окна 2 — Минута начала второго торгового окна
Trade3 Торговля в окне 3 — Включает или отключает третий торговый период
Time3Hour Час начала окна 3 — Час начала третьего торгового окна
Time3Minutes Минута начала окна 3 — Минута начала третьего торгового окна
Trade4 Торговля в окне 4 — Включает или отключает четвёртый торговый период
Time4Hour Час начала окна 4 — Час начала четвёртого торгового окна
Time4Minutes Минута начала окна 4 — Минута начала четвёртого торгового окна
ExitMinute Минута выхода — Минута, до которой действует торговое окно перед закрытием
StopLoss Стоп-лосс — Размер стоп-лосса в пунктах от цены входа
PipsForEntry Пункты для входа — Смещение в пунктах от экстремума диапазона для размещения отложенного ордера
BreakEven Брейк-эвен — Уровень в пунктах, при достижении которого позиция переводится в безубыток
MovingStopLoss Движущийся стоп-лосс — Включает автоматическое перемещение стоп-лосса при росте или падении цены
PipsToStartMSL Пункты для начала движения стоп-лосса — Расстояние в пунктах от цены входа, после которого стоп-лосс начинает перемещаться
BarsForRange Баров для диапазона — Количество баров, используемых для определения экстремумов диапазона пробоя
Получить полный код

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

#include <stdlib.mqh>
#include <WinUser32.mqh>

#define        NewLine            "\n"
#define        SkipLine           "\n\n"
#define        Tab                "    "

extern double  LotSize                 = 3;
extern int     BrokerOffsetToGMT       = 0;
extern int     NumberOfOrdersPerSide   = 1; // NumberOfOrdersPerSide X TakeProfitIncrement = Highest TakeProfit Level
extern int     TakeProfitIncrement     = 30;
extern bool    EnterNOW                = false;
extern bool    Trade1                  = true;
extern int     Time1Hour               = 6;
extern int     Time1Minutes            = 30;
extern bool    Trade2                  = true;
extern int     Time2Hour               = 9;
extern int     Time2Minutes            = 15;
extern bool    Trade3                  = true;
extern int     Time3Hour               = 12;
extern int     Time3Minutes            = 30;
extern bool    Trade4                  = true;
extern int     Time4Hour               = 23;
extern int     Time4Minutes            = 46;
extern int     ExitMinute              = 55;
extern int     StopLoss                = 20;
extern int     PipsForEntry            = 8;
extern int     BreakEven               = 10;
extern bool    MovingStopLoss          = true;
extern int     PipsToStartMSL          = 25;
extern int     BarsForRange            = 2;

   int start() {
      // код доступен только после оплаты
   }
   int ticket;
   if(Bars<100) {
      Print("bars less than 100");
      return(0);
   }

   double   TradeTime1 = (Time1Hour*3600)+(Time1Minutes*60);
   double   TradeTime2 = (Time2Hour*3600)+(Time2Minutes*60);
   double   TradeTime3 = (Time3Hour*3600)+(Time3Minutes*60);
   double   TradeTime4 = (Time4Hour*3600)+(Time4Minutes*60);
   double   TradeTime  = OrderOpenTime();
   double   PFE = PipsForEntry;
   double   CurrentTime=(TimeHour(CurTime())*3600+TimeMinute(CurTime())*60-(BrokerOffsetToGMT*3600));

   int      total=OrdersTotal();
   double   Spread=Ask-Bid;
   double   hprice=High[Highest(NULL,0,MODE_HIGH,BarsForRange,0)]+Point*PFE+Spread;
   double   lprice=Low[Lowest(NULL,0,MODE_LOW,BarsForRange,0)]-Point*PFE;
   int      TPI=TakeProfitIncrement;
   int      i,j,k;
   int      Volume0 = Volume[0];
   int      Volume1 = Volume[1];
   int      Volume2 = Volume[2];
   int      Volume3 = Volume[3];
   int      Volume4 = Volume[4];
   bool     need_long  = true;
   bool     need_short = true;

   if  ((CurrentTime==(TradeTime1-300)&& Trade1)
     || (CurrentTime==(TradeTime2-300)&& Trade2)
     || (CurrentTime==(TradeTime3-300)&& Trade3)
     || (CurrentTime==(TradeTime4-300)&& Trade4)) {
      for(i = OrdersTotal(); i > 0; i--) {
         OrderSelect(i, SELECT_BY_POS);
         if(OrderSymbol()==Symbol()) {

         bool result = false;

            if(OrderType()==OP_BUYSTOP())  result = OrderDelete( OrderTicket() );
            if(OrderType()==OP_SELLSTOP()) result = OrderDelete( OrderTicket() );
            }

         }//End for loop
      }//End Closing All Open and Pending Orders

 else { 
    for(total = OrdersTotal(); total > 0; total--) {
       OrderSelect(total, SELECT_BY_POS, MODE_TRADES);
        if(OrderSymbol()==Symbol()) {

 int  shift=iBarShift(NULL,0,OrderOpenTime(), true);  //to get the number of bars back to the Open Bar               

           if(OrderType()==OP_BUY) {

                if(High[Highest(NULL,0,MODE_HIGH,shift,0)]<OrderOpenPrice()+Point*BreakEven){
          OrderModify(OrderTicket(),OrderOpenPrice(),OrderOpenPrice()-Point*StopLoss,OrderTakeProfit(),0,White);
          

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

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

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

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

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

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

Стоимость полного кода
502,80₽ ≈ $6.15