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

 
MakarFX #:
那么你到底想要什么呢?)

我已经做了。也许有点马虎。纠正我。我先计算最后一个的价格,然后再计算倒数第二个的价格。
但还有一个问题。由于控制所有评论-美在角落里,所有的时间如果不涉及挂值等于DBL_MAX。如何删除,以红色标出)

double MinOpenSell() // ищу ордер по самой низкой цене.
{
   double oldticket, UpPrice = DBL_MAX;
   
   for(int cnt=OrdersTotal(); cnt>=0; cnt--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            oldticket = OrderOpenPrice();
            if ( oldticket < UpPrice)
            {
               UpPrice = oldticket;
            }
         }
      }
   }
   return(UpPrice);
}
double FindPenultSellPrice() // а тут ищу предпоследний)
  {
   double oldticket, UpPrice = DBL_MAX;
   
   for(int cnt=OrdersTotal(); cnt>=0; cnt--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            oldticket = OrderOpenPrice();
            if ( oldticket < UpPrice && MinOpenSell()< oldticket)
            {
               UpPrice = oldticket;
            }
         }
      }
   }
   return(UpPrice);
}
 
makssub #:

如何删除,以红色标出)

放在某处

if(price==DBL_MAX) price=0;

或者可以直接在评论中提出。

(price==DBL_MAX)?"нет ордера":DoubleToString(price,_Point)
 
Taras Slobodyanik #:

放在某处

或者你可以直接把它放在评论中。

我喜欢第一种方案,你能给我一个例子说明如何正确地做吗?

 
makssub #:

我喜欢第一种方案,你能给我一个例子说明如何正确地做吗?

double com_price=0;

if(UpPrice==DBL_MAX) com_price=0;
else com_price=UpPrice;

Comment(com_price);
 
MakarFX #:

谢谢,但还是不明白如何把它拧上)对我的工作没有批评?

double FindPenultSellPrice() // а тут ищу предпоследний)
  {
   double oldticket, UpPrice = DBL_MAX;
   
   for(int cnt=OrdersTotal(); cnt>=0; cnt--)
   {
      if(OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES))
      {
         if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == OP_SELL)
         {
            oldticket = OrderOpenPrice();
            if ( oldticket < UpPrice && MinOpenSell()< oldticket)
            {
               UpPrice = oldticket;
            }
         }
      }
   }
   return(UpPrice);
}
 
makssub #:

谢谢,但还是不知道怎么搞的)对我的工作没有批评?

给我看看你的评论。

 
MakarFX #:

给我看看你的评论。

我以前发过一张照片。而我的评论并没有在函数内声明。

Comment( " Количество открытых ордеров: ", CountTrades(),"\n" " Количество открытых ордеров Sell: ", FindLastSell(), "\n" " Количество открытых ордеров Buy: ", FindLastBuy(),
                "\n" " Общее количество открытых ордеров: ", OrdersTotal(),"\n" " Профит первого ордера Sell: " , FirstProfitSell(),
                "\n" " Профит первого ордера Buy: " ,FirstProfitBuy(), "\n" " Предпоследний ордер Buy: ",FindPenultBuyPrice(), "\n" " Предпоследний ордер Sell: ",FindPenultSellPrice());  
 
makssub #:

我以前发过一张照片。而我的评论并没有在函数内声明。

double com_price=0;
if(FindPenultSellPrice()==DBL_MAX) com_price=0;
else com_price=FindPenultSellPrice();
Comment( " Количество открытых ордеров: ", CountTrades(),"\n Количество открытых ордеров Sell: ", FindLastSell(),
       "\n Количество открытых ордеров Buy: ", FindLastBuy(),"\n Общее количество открытых ордеров: ", OrdersTotal(),
       "\n Профит первого ордера Sell: " , FirstProfitSell(),"\n Профит первого ордера Buy: " ,FirstProfitBuy(),
       "\n Предпоследний ордер Buy: ",FindPenultBuyPrice(), "\n Предпоследний ордер Sell: ",com_price);  
 

大家好!!!!。

我正在为一个EA编写代码,用于从订单网格的平均价格中追踪止损组订单。

日志中没有错误,但拖网也不工作。以下是代码,请指出错误所在。谢谢你!!!。

//+----------------------------------------------------------------------------+
//| Модификация групповых ордеров                                              |
//+----------------------------------------------------------------------------+
void ModifyOrders(int otype)
{
    double avg_price; 
    order_lots = 0;
    price = 0;
   
    for(int i = OrdersTotal()-1; i>=0; i--)
    {
       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
         if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
         {
            price += OrderOpenPrice() * OrderLots();
            order_lots += OrderLots() ;
         }
       }
    }
    avg_price = NormalizeDouble(price / order_lots, Digits);
     {
     ObjectDelete(0, "AveragePriceLine");
     ObjectCreate(0,"AveragePriceLine" ,OBJ_HLINE, 0, 0, avg_price);
     ObjectSet("AveragePriceLine",OBJPROP_COLOR, Magenta);
     }
    if (otype == OP_BUY) tp = NormalizeDouble (avg_price + TakeProfitGroupOrder*Point, Digits);
    if (otype == OP_SELL) tp = NormalizeDouble (avg_price - TakeProfitGroupOrder*Point, Digits);
    if ((otype == OP_BUY || otype == OP_SELL) && (Drawdown > DrawdownClosingTakeprofitZero)) 
    tp = NormalizeDouble (avg_price, Digits);
    for(int i = OrdersTotal()-1; i>=0; i--) 
    {
       if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
           if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderType() == otype)
           {
               if(OrderModify(OrderTicket(), OrderOpenPrice(), 0, tp, 0))
                  Print("Ордера успешно модифицированы!");
                else Print("Ошибка модификации ордеров!");
                TrailingGroupOrder();
           }
       }
    }
}
//+----------------------------------------------------------------------------+
//| Трейлинг стоп групповых ордеров                                            |
//+----------------------------------------------------------------------------+
void TrailingGroupOrder()
{
    price += OrderOpenPrice() * OrderLots();
    order_lots += OrderLots() ;
    for(int i = OrdersTotal()-1; i>=0; i--)
    {
     if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
       {
       if(OrderType() == OP_BUY && Bid - NormalizeDouble(price / order_lots, Digits) > TrailingStopGroupOrder)
        {
        if(Bid - NormalizeDouble(price / order_lots, Digits) > 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 && NormalizeDouble(price / order_lots, Digits)- Ask > TrailingStopGroupOrder*Point)
         {
         if( NormalizeDouble(price / order_lots, Digits)- 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("Ошибка модификации групповых ордеров на продажу!");
              }
           }
         }
      } 
    }
}
 
下午好!我在哪里可以找到mql4代码来改变EA设置窗口中的语言?