新人对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:
为什么?

因为交易不能被跳过。想象一下,有两笔交易在TP上关闭,而你只发送了一笔交易的通知。或他们的总利润(如你建议的)。这是要告诉用户什么......?不清楚...:)

让我更清楚地解释。通知的数量必须始终与交易的数量 相对应。

另外,SendNotification 对发送通知的频率有限制。因此,我们必须确保应用程序每秒钟调用该函数不超过2次,每分钟不超过10次。创建一个通知队列,发送通知的频率不超过文件中规定的频率。

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

因为交易不能被跳过。想象一下,有两笔交易在TP上关闭,而你只发送了一笔交易的通知。或他们的总利润(如你建议的)。这是要告诉用户什么......?不清楚...:)

你还没有看到他的EA。

我告诉过你,就我的理解,他想要的是订单开仓和平仓的通知,至于是什么原因并不重要。

该男子想在手机上看到EA正在做什么。

 
MakarFX:

你还没有看到他的EA。

我告诉过你,据我所知,他要的是关于开仓和平仓的通知,至于什么原因并不重要。

该男子想在手机上看到EA正在做什么。

我已经编辑了之前的帖子。

不,他想通过SL和TP来跟踪关闭。

这是一个关于交易、自动交易系统和策略测试的论坛。

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:

编辑了之前的信息。

不,他需要做的是跟踪SL和TP的关闭。

好吧,你是对的。我弄错了。

原因: