Блог им. ixorek

Скрипт отпрвки эл.сообщений при Открытии/Закрытии сделок для MT4

Хочу поделиться очень полезным скриптом для MetaTrader 4, который отправляет сообщение на вашу электронную почту с информацией об открытой и закрытой сделке. Для меня это очень актуально, т.к. всю торговлю выполняют роботы. Но для понимания их действий и осуществления контроля, такие сообщения для меня необходимы. Скрипт сам понимает когда открылась и закрылась сделка.

Сообщения приходят в таком виде:
ОТКРЫТ Order=84281010, OpenTime=2026.10.06 06:11, Symbol=AUDCAD, Type(1=sell,0=buy)=1, Lots=2.1, Magic=4411, Spred=0.00018, OpenPrice=0.99444

ЗАКРЫТ Order=84281010, CloseTime=2026.10.07 13:14, Symbol=AUDCAD, Type(1=sell,0=buy)=1, Lots=2.1, Magic=4411, Spred=0.00018, ClosePrice=0.99064, Profit=561.05
Предварительно настройте отправку почтовых сообщений на своем терминале MT4 и запускайте данный скрипт как советника на любом графике.
int Order=0,   // переменная для открытых ордеров
    TicketClose=0, // переменная для закрытых ордеров
    r,         // переменная для открытых ордеров
    q,         // переменная для вычисления кол-ва секунд между текщим временем и временем открытия посл. <a name="cut"></a>  ордера
    Ticket,    // переменная для закрытых ордеров
    p1=-1;     // переменная, для "НЕ срабатывания" после запуска скрипта
double Spred;  // переменная для вычисления Спреда

int init()                           
  {   
   return;                                      
  } 
  
  
int GetTicketLastPos() // последний открытый ордер
{
  datetime o;
  int  i,  k=OrdersTotal(), r=-1;
  
   for (i=0; i<k; i++)
   {
      if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
      {
         if (o<OrderOpenTime())
         {
            o=OrderOpenTime();
            r=OrderTicket();
         }
      }
   }
  return®;
}

int GetLastOrderHist(int type = -1) // последний закрытый ордер
{
  int ticket = -1;
  datetime dt = 0;
  int cnt = OrdersHistoryTotal();
    
  for (int i=0; i < cnt; i++)
  {
    if (!OrderSelect(i, SELECT_BY_POS, MODE_HISTORY)) continue;    
    if (OrderCloseTime() > dt)
    {
      dt = OrderCloseTime();
      ticket = OrderTicket();
    }
  }
  
  return (ticket);
}

  
int start()                      
  {
 
//Обращаемся к функции определения последнего Открытого ордера
r=GetTicketLastPos();
if (r!=Order && r!=-1)
   {
   Order=r;
   Spred=(MarketInfo(OrderSymbol(),MODE_ASK))-(MarketInfo(OrderSymbol(),MODE_BID)); //Считаем Спред
   q=(TimeCurrent()-OrderOpenTime()); //вычисляем кол-во секунд между текщим временем и временем открытия посл. ордера
   if (p1>5 && (q<300)) SendMail("Серввер №1 Открыт ордер", "ОКРЫТ Order="+OrderTicket()+", OpenTime="+TimeToStr(OrderOpenTime())+", Symbol="+OrderSymbol()+", Type(1=sell,0=buy)="+OrderType()+", Lots="+OrderLots()+", Magic="+OrderMagicNumber()+", Spred="+DoubleToStr(Spred,5)+", OpenPrice="+OrderOpenPrice());
   }

//Обращаемся к функции определения последнего Закрытого ордера
Ticket=GetLastOrderHist();
if (Ticket!=TicketClose && Ticket!=-1) 
   {
   TicketClose=Ticket;
   Spred=(MarketInfo(OrderSymbol(),MODE_ASK))-(MarketInfo(OrderSymbol(),MODE_BID)); //Считаем Спред
   if (p1>5) SendMail("Серввер №1 Закрыт ордер", "ЗАКРЫТ Order="+OrderTicket()+", CloseTime="+TimeToStr(OrderCloseTime())+", Symbol="+OrderSymbol()+", Type(1=sell,0=buy)="+OrderType()+", Lots="+OrderLots()+", Magic="+OrderMagicNumber()+", Spred="+DoubleToStr(Spred,5)+", ClosePrice="+OrderClosePrice()+", Profit="+OrderProfit());
   }
   
   Sleep(5000); // задержка 5 секунд
   p1=p1+1; //

//+------------------------------------------------------------------+      
   return;
  }
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
224

Читайте на SMART-LAB:
Фото
Теперь и МФО, или почему мы не любим покупать «надежное»
Снижение рейтинга Самолету (с a- до bbb и с негативным прогнозом) – событие для широкого рынка облигаций важное и беспокойное. Теперь и...
Фото
ДОМ.PФ на инвестиционном форуме Сбера «Настоящее будущее»
🔥 ДОМ.PФ на инвестиционном форуме   Сбера  «Настоящее будущее» : сохраняем траекторию роста и эффективности бизнеса...
Фото
«Диагностика портфеля» в FinamX. Как получить быструю аналитику брокерского счета
Пространства в FinamX упрощают инвесторам взаимодействие с рынком. Благодаря им можно получить быструю аналитику портфеля или...

теги блога AlgoStrateg

....все тэги



UPDONW
Новый дизайн