Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам - страница 1579

 
MakarFX:

не знаю, надо проверить

А что здесь проверять?... Если предположить, что в истории есть одновременно несколько сделок с одинаковым временем закрытия, то их нужно обработать последовательно, одну за другой. Обработчик  OnTradeTransaction  как раз этим и занимается (обрабатывает торговые события) и не нужно придумывать "велосипед".

 
Mihail Matkovskij:

А что здесь проверять?... Если предположить, что в истории есть одновременно несколько сделок с одинаковым временем закрытия, по их нужно обработать последовательно. одну за другой. Обработчик  OnTradeTransaction  как раз этим и занимается (обрабатывает торговые события) и не нужно придумывать "велосипед".

как вариант общий профит

profit+=HistoryDealGetDouble(ticket,DEAL_PROFIT); 
 
MakarFX:

как вариант общий профит

Нет. Это не вариант!

 
Mihail Matkovskij:

Нет. Это не вариант!

Почему?
 
Eugen8519:

Еще, торговые уведомления можно включить в терминале и сервер будет отправлять их на мобильное приложение https://www.metatrader5.com/ru/releasenotes .

Что нового в MetaTrader 5?
Что нового в MetaTrader 5?
  • www.metatrader5.com
Всего поддерживаются три типа уведомлений: об ордерах, о сделках и о балансовых операциях. При включении опции доступные виды уведомлений будут выведены в журнал терминала:
 
Mihail Matkovskij:

Еще, торговые уведомления можно включить в терминале и сервер будет отправлять их на мобильное приложение https://www.metatrader5.com/ru/releasenotes .

По ходу лучший вариант)
 
MakarFX:
Почему?

Потому, что сделки нельзя пропускать. Представьте, что 2 сделки закрылись по ТП, а вы отправили уведомление только об одной. Или же их суммарный профит (как вы предложили). О чём это должно сказать пользователю?... Не понятно... :)

Объясню еще более понятно. Количество уведомлений всегда должно соответствовать количеству сделок.

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

Документация по MQL5: Сетевые функции / SendNotification
Документация по MQL5: Сетевые функции / SendNotification
  • www.mql5.com
SendNotification - Сетевые функции - Справочник MQL5 - Справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
Mihail Matkovskij:

Потому, что сделки нельзя пропускать. Представьте, что 2 сделки закрылись по ТП, а вы отправили уведомление только об одной. Или же их суммарный профит (как вы предложили). Что это должно сказать пользователю?... Не понятно... :)

Ты его советник не видел.

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

Человек хочет видеть в телефоне что советник что-то делает.

 
MakarFX:

Ты его советник не видел.

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

Человек хочет видеть в телефоне что советник что-то делает.

Отредактировал предыдущее сообщение. 

Нет. Ему нужно именно отслеживать закрытие по СЛ и ТП.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Любые вопросы новичков по MQL4 и MQL5, помощь и обсуждение по алгоритмам и кодам

Eugen8519, 2021.08.07 12:20



Помогите правильно расположить функцию

SendNotification ("текст");




Вставил её для сообщения о вход в позицию здесь

void OPENORDER(string ord)

  {
  
  double priceL=m_symbol.Ask();
   if(ord=="Sell")      
    SendNotification ("текст");

        //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_BUY,my_lot,priceL)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Sell(my_lot,Symbol(),m_symbol.Bid(),my_SL,my_TP,""))
         Print("BUY_STOP -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of Retcode: ",m_trade.ResultRetcodeDescription(),
               ", ticket of order: ",m_trade.ResultOrder());                     // Если sell, то не открываемся
     double priceS=m_symbol.Bid();
   if(ord=="Buy")
    SendNotification ("текст");
 //--- check for free money
            if(m_account.FreeMarginCheck(Symbol(),ORDER_TYPE_SELL,my_lot,priceS)<0.0)
               printf("We have no money. Free Margin = %f",m_account.FreeMargin());
            else
      if(!m_trade.Buy(my_lot,Symbol(),m_symbol.Ask(),my_SL,my_TP,""))
 
         Print("Buy -> false. Result Retcode: ",m_trade.ResultRetcode(),
               ", description of result: ",m_trade.ResultRetcodeDescription(),
               ", ticket of deal: ",m_trade.ResultDeal());
   return;
 }

И я уже успешно получаю уведомления на смартфон. 




Но как  и куда вставить 

SendNotification

Чтобы приходило сообщения при достижения стоп лосс или Тейк профит.? 


 
Mihail Matkovskij:

Отредактировал предыдущее сообщение. 

Нет. Ему нужно именно отслеживать закрытие по СЛ и ТП.

Хорошо, ты прав. Я не правильно его понял.

Причина обращения: