新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1645

 
EVGENII SHELIPOV #:

Makar,你能解释一下该函数将从代码的哪个地方被引用吗?

如果有1个以上的订单

//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
   {
//---
   if(CountTrade()>1) TrailingGroupOrder();
   }
 
MakarFX #:

对不起,我写的是4...

签到了5个!它正在发挥作用。

谢谢。非常奇怪的是,我的版本没有工作。我打破了我的大脑))))

 
Andrey Sokolov #:

谢谢你。非常奇怪的是,我的选项没有发挥作用。

这并不奇怪...

你没有写路径,这是你的代码

   string src_path; 
   string dst_path; 
   StringConcatenate(src_path,"","//",name_file); 
   StringConcatenate(dst_path,name_folder,"//",name_file); 
   ResetLastError();
   if(FileMove(src_path,0,dst_path,0)){

而 "src_path "和 "dst_path "等于什么?

 
MakarFX #:

如果有1个以上的订单

没有Makar,它不起作用

 
MakarFX #:

这并不奇怪...

你没有写路径,这是你的代码

而 "src_path "和 "dst_path "等于什么?

它们写在接下来的两行中,从帮助https://www.mql5.com/ru/docs/files/filemove

这不是重点,这段代码在mt4中工作,我在mt5中移动了第一张截图。

 
EVGENII SHELIPOV #:

没有Makar,它不起作用

这不可能是...在私人信息中给我所有的代码。
 
MakarFX #:
不可能...在你的收件箱中给我整个代码。

我已经给你发了

 
EVGENII SHELIPOV #:

我已经给你发了

回复
 
MakarFX #:
答复

马卡尔 谢谢你,我会继续思考的

 
MakarFX #:
答复

日安,马卡!!!。

根据你的建议,我在无效的OnTick()函数中找到了一个地方,我可以附加TrailingGroupOrder()函数来发送命令,以修改组单的线索,哦,我的上帝,组单的线索已经开始工作了。然而,我的喜悦并没有持续多久。仔细一看,我看到只有有最小票数的订单才会被践踏。

//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
{
    for(int i = OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if(OrderType() == OP_BUY && Bid - GetAveragePrice() > TrailingStopGroupOrder*Point)
        {
        if(Bid - GetAveragePrice() > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
         {
         if(OrderStopLoss() < Bid - (TrailingStep + TrailingStopGroupOrder )*Point || OrderStopLoss() == 0)
          {
          if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Bid - TrailingStopGroupOrder*Point, Digits), tp, 0))
                    Print("Ошибка модификации групповых ордеров на покупку!");
          }
         }
        }
        if(OrderType() == OP_SELL && GetAveragePrice() - Ask > TrailingStopGroupOrder*Point)
         {
         if(GetAveragePrice() - Ask > TrailingStopGroupOrder*Point || OrderStopLoss() == 0)
           {
            if(OrderStopLoss() > Ask + (TrailingStep + TrailingStopGroupOrder)*Point || OrderStopLoss() == 0)
              {
              if(!OrderModify(OrderTicket(), OrderOpenPrice(), NormalizeDouble(Ask + TrailingStopGroupOrder*Point, Digits), tp, 0))
                    Print("Ошибка модификации групповых ордеров на продажу!");
              }
           }
         }
      } 
    }
}

我很可能认为,问题出在只修改第一个(最小)订单,而不是一次性全部修改。

Makar建议如何使网格中的所有订单一次修改????

原因: