droba
Droba

 
Уровень 9

  Торгую в компаниях:


Группа "Стол заказов MQL"

Рейтинг 2146



РЕКОМЕНДУЮ



Прошу в советнике добавить код Алерта.

Алерт со звуковым сопровождением.
Информация в Алерте: Закрытие ордера с профитом: — «ПРОФИТ 20$, GBPUSD»
Советник прилагается.
High_Low.mq4 (10 Kb)
  • 0
  • Просмотров: 1751
  • 24 марта 2021, 08:00
  • droba
Понравилcя материал? Не забудьте поставить плюс и поделиться в социальной сети!

Вступите в группу "Стол заказов MQL", чтобы следить за обновлениями
ПРИСОЕДИНИТЬСЯ К ГРУППЕ
присоединиться
  Предыдущая запись в группе
Доработать индикатор.
Следующая запись в группе  
Прошу в советнике добавить код Алерта.
22 марта 2021
24 марта 2021

Брокер для ваших роботов, 15 лет на рынке

Комментарии (15)

+
0
после какого закрытия хотите алерт? закрытие по тралу по тейку по стопу.

и поручителя в студию
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 24 марта 2021, 21:18
+
0
Тезка, давай выступлю поручителем ;)  а то сгорит моя возможность заказа просто так в этом месяце *drinks* 
avatar

  22  poker Сообщений: 849

  • 25 марта 2021, 09:06
+
0
Если можно, то будет очень здорово.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 25 марта 2021, 16:44
+
0
Если можно сделать и по ТР и по тралу. Трал начинается когда ордер в прибыли.
Редактирован: 25 марта 2021, 16:42
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 25 марта 2021, 06:02
+
0
Ребята ищу поручителя на доработку советника.
В советник добавляем Алерт. Думаю полезная штука.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 25 марта 2021, 06:09
+
0
на 1-е
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 25 марта 2021, 18:26
+
0
OK!
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 26 марта 2021, 06:24
+
0
готово:




//+------------------------------------------------------------------+
//|                                                     High_Low.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
input double lot= 0.22;
extern int TP   = 1000;  // ПРОФИТ
input int _period_ma  = 55;        // Период МА
extern bool _trailingStop = true;        // вкл. трала
input int magic = 123;

// -----------------------------------------------Number of bars to scan

//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
           {
            if(OrderType()==type || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Profit()
  {
   double pr=0;

   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
           {
            pr=OrderProfit();
            break;
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(CountOrders()<1)
     {
      Alert("Order Profit: ",Profit());
     }

   if(_trailingStop)
     {
      _TrailingStop();
     }
   int r=0;
   CountOrders();
   if(NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits) < Ask && CountOrders(OP_BUY) < 1 &&
      NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)< NormalizeDouble(iClose(_Symbol, _Period, 1), Digits) &&
      NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)> NormalizeDouble(iLow(_Symbol, _Period, 1), Digits))
     {
      r = OrderSend(Symbol(),
                    OP_BUY,
                    NormalizeDouble(lot, 2),
                    Ask,
                    30,
                    0,   //SL
                    NormalizeDouble(iHigh(_Symbol, _Period, 1) + TP*Point, Digits),  //TP
                    "МАША",
                    magic,
                    0,
                    Blue); // BUY
     }
   else
      if(NormalizeDouble(iLow(_Symbol, _Period, 1), Digits) > Bid && CountOrders(OP_SELL) < 1 &&
         NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)> NormalizeDouble(iClose(_Symbol, _Period, 1), Digits) &&
         NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)< NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits))
        {
         r = OrderSend(Symbol(),
                       OP_SELL,
                       NormalizeDouble(lot, 2),
                       Bid,
                       30,
                       0,  //SL
                       NormalizeDouble(iLow(_Symbol, _Period, 1) - TP*Point, Digits), //TP
                       "МАША",
                       magic,
                       0,
                       Red); // SELL


        }
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void _TrailingStop()
  {
   int i;
   bool m;
   double _stopLossSellF=NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits),
          _stopLossBuyF=NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits);
   if(OrdersTotal()>0)
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS))
           {
            if(OrderSymbol()==Symbol() /*&& OrderMagicNumber()==-1*/)
              {

               if(OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF)
                 {
                  while(IsTradeContextBusy())
                     Sleep(1000);
                  RefreshRates();
                  m = OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
                 }

               if(OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0)
                 {
                  while(IsTradeContextBusy())
                     Sleep(1000);
                  RefreshRates();
                  m = OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
                 }
              }
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 30 марта 2021, 19:24
+
0
А где символ?
Когда ордеров нет брякает на каждом тике, а когда ордера открыты АЛЕРТ не работает.
Редактирован: 31 марта 2021, 09:25
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 31 марта 2021, 07:25
+
0
А что дорабатывать не будем да?
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 6 апреля 2021, 05:44
+
0
Алерт со звуковым сопровождением.
Информация в Алерте: Закрытие ордера с профитом: — «ПРОФИТ 20$, GBPUSD»


вы просили сделать алерт, я сделал.

А где символ?
Когда ордеров нет брякает на каждом тике, а когда ордера открыты АЛЕРТ не работает.


а вот этого всего в тз нет.
avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 6 апреля 2021, 21:02
+
0
Информация в Алерте: Закрытие ордера с профитом: — «ПРОФИТ 20$, GBPUSD» Я просил еще вот это — GBPUSD, а в алерте этого нет. И работает не правильно когда ордеров нет советник брякает на каждом тике, а когда есть ордера алерт не работает.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 7 апреля 2021, 05:43
+
0
Андрей, символ я добавил. А как сделать, чтоб брякнул только один раз (а то брякает на каждом тике)
и еще брякает когда ордеров нет, а если хоть один ордер есть он не брякает.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 7 апреля 2021, 09:54
+
0
данный вариант сигналит раз за свечку независимо есть ордер или нет:


//+------------------------------------------------------------------+
//|                                                     High_Low.mq4 |
//|                        Copyright 2019, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2019, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
input double lot= 0.22;
extern int TP   = 1000;  // ПРОФИТ
input int _period_ma  = 55;        // Период МА
extern bool _trailingStop = true;        // вкл. трала
input int magic = 123;

datetime t=0;
// -----------------------------------------------Number of bars to scan

//+------------------------------------------------------------------+
//| Подсчет ордеров по типу                                          |
//+------------------------------------------------------------------+
int CountOrders(int type=-1)
  {
   int count=0;
   for(int i=OrdersTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_TRADES))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
           {
            if(OrderType()==type || type==-1)
               count++;
           }
        }
     }
   return(count);
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
double Profit()
  {
   double pr=0;

   for(int i=OrdersHistoryTotal()-1; i>=0; i--)
     {
      if(OrderSelect(i,SELECT_BY_POS,MODE_HISTORY))
        {
         if(OrderSymbol()==Symbol() && OrderMagicNumber()==magic)
           {
            pr=OrderProfit();
            break;
           }
        }
     }
   return(pr);
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   if(t!=Time[0])
     {
      Alert(_Symbol+" Order Profit: ",Profit());
      t=Time[0];
     }

   if(_trailingStop)
     {
      _TrailingStop();
     }
   int r=0;
   CountOrders();
   if(NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits) < Ask && CountOrders(OP_BUY) < 1 &&
      NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)< NormalizeDouble(iClose(_Symbol, _Period, 1), Digits) &&
      NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)> NormalizeDouble(iLow(_Symbol, _Period, 1), Digits))
     {
      r = OrderSend(Symbol(),
                    OP_BUY,
                    NormalizeDouble(lot, 2),
                    Ask,
                    30,
                    0,   //SL
                    NormalizeDouble(iHigh(_Symbol, _Period, 1) + TP*Point, Digits),  //TP
                    "МАША",
                    magic,
                    0,
                    Blue); // BUY
     }
   else
      if(NormalizeDouble(iLow(_Symbol, _Period, 1), Digits) > Bid && CountOrders(OP_SELL) < 1 &&
         NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)> NormalizeDouble(iClose(_Symbol, _Period, 1), Digits) &&
         NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits)< NormalizeDouble(iHigh(_Symbol, _Period, 1), Digits))
        {
         r = OrderSend(Symbol(),
                       OP_SELL,
                       NormalizeDouble(lot, 2),
                       Bid,
                       30,
                       0,  //SL
                       NormalizeDouble(iLow(_Symbol, _Period, 1) - TP*Point, Digits), //TP
                       "МАША",
                       magic,
                       0,
                       Red); // SELL


        }
  }

//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void _TrailingStop()
  {
   int i;
   bool m;
   double _stopLossSellF=NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits),
          _stopLossBuyF=NormalizeDouble(iMA(NULL,0,_period_ma,0,MODE_SMA,PRICE_CLOSE,1), Digits);
   if(OrdersTotal()>0)
     {
      for(i=OrdersTotal()-1; i>=0; i--)
        {
         if(OrderSelect(i, SELECT_BY_POS))
           {
            if(OrderSymbol()==Symbol() /*&& OrderMagicNumber()==-1*/)
              {

               if(OrderType()==OP_BUY && OrderOpenPrice() < _stopLossBuyF)
                 {
                  while(IsTradeContextBusy())
                     Sleep(1000);
                  RefreshRates();
                  m = OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossBuyF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
                 }

               if(OrderType()==OP_SELL && OrderOpenPrice() > _stopLossSellF && _stopLossSellF!=0.0)
                 {
                  while(IsTradeContextBusy())
                     Sleep(1000);
                  RefreshRates();
                  m = OrderModify(OrderTicket(),OrderOpenPrice(),_stopLossSellF,OrderTakeProfit(),OrderExpiration(),CLR_NONE);
                 }
              }
           }
        }
     }
   return;
  }
//+------------------------------------------------------------------+
//+------------------------------------------------------------------+

avatar

  35  AM2 Сообщений: 16250 - Андрей

  • 7 апреля 2021, 19:34
+
0
Все работает. Спасибо. Андрей делаешь доброе дело.
avatar

  9  droba Автор Сообщений: 239 - Droba

  • 8 апреля 2021, 07:57

Зарегистрируйтесь или авторизуйтесь, чтобы оставить комментарий