New MT4 validation error, NO TRADING OPERATIONS - page 2

 
Lorentzos Roussos:

try these 

example : 

do i have to change all this code?
 
fxduep2020:

Why did you open a new topic with the same issue?

Please don't waste people's time by opening multiple topics!

I have deleted your duplicated topic.

 
Keith Watford:

Why did you open a new topic with the same issue?

Please don't waste people's time by opening multiple topics!

I have deleted your duplicated topic.

help me with the code I published on the first post, I can't update anymore, it always worked !!! 0.01 lots no, 0.20 lots validation passed !!! Thank you

 
fxduep2020:

help me with the code I published on the first post, I can't update anymore, it always worked !!! 0.01 lots no, 0.20 lots validation passed !!! Thank you

Before placing any trades ALWAYS check that the lot size is a valid amount.

 
Keith Watford:

Before placing any trades ALWAYS check that the lot size is a valid amount.

yes of course, everything is there, I worked on this code for a month without problems, now I can no longer publish, the code is perfect, zero errors

//************************************************************************************************/
//*                                                                                   test.mq4   */
//************************************************************************************************/
#property copyright   ""
#property link        ""
#property version     ""
#property description ""
#property strict
enum ENUM_ST
  {
   Awerage   = 0, // Awerage
   PartClose = 1  // Part Close
  };
//************************************************************************************************/
//*                                                                                              */
//************************************************************************************************/
input int          iTakeProfit         = 300;      // Take Profit (in pips)
input double       iStartLots          = 0.01;     // Start lot
input double       iMaximalLots        = 0.01;     // Maximal Lots
input ENUM_ST      iCloseOrder         = Awerage;  // Type close orders
input int          iPointOrderStep     = 50;       // Point order step (in pips)
input int          iMinimalProfit      = 70;       // Minimal profit for close grid (in pips)
input int          iMagicNumber        = 227;      // Magic Number (in number)
input int          iSlippage           = 30;       // Slippage (in pips)
//---
//************************************************************************************************/
//*                                                                                              */
//************************************************************************************************/
int OnInit()
  {
   Comment("");
   return(INIT_SUCCEEDED);
  }
//************************************************************************************************/
//*                                                                                              */
//************************************************************************************************/
void OnTick()
  {
   double
   BuyPriceMax = 0, BuyPriceMin = 0, BuyPriceMaxLot = 0, BuyPriceMinLot = 0,
   SelPriceMin = 0, SelPriceMax = 0, SelPriceMinLot = 0, SelPriceMaxLot = 0;

   int
   BuyPriceMaxTic = 0, BuyPriceMinTic = 0, SelPriceMaxTic = 0, SelPriceMinTic = 0;

   double
   op = 0, lt = 0, tp = 0;

   int
   tk = 0, b = 0, s = 0;

   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == iMagicNumber)
            if(OrderSymbol() == Symbol())
              {
               op = NormalizeDouble(OrderOpenPrice(), Digits());
               lt = NormalizeDouble(OrderLots(), 2);
               tk = OrderTicket();
               if(OrderType() == OP_BUY)
                 {
                  b++;
                  if(op > BuyPriceMax || BuyPriceMax == 0)
                    {
                     BuyPriceMax    = op;
                     BuyPriceMaxLot = lt;
                     BuyPriceMaxTic = tk;
                    }
                  if(op < BuyPriceMin || BuyPriceMin == 0)
                    {
                     BuyPriceMin    = op;
                     BuyPriceMinLot = lt;
                     BuyPriceMinTic = tk;
                    }
                 }
               // ===
               if(OrderType() == OP_SELL)
                 {
                  s++;
                  if(op > SelPriceMax || SelPriceMax == 0)
                    {
                     SelPriceMax    = op;
                     SelPriceMaxLot = lt;
                     SelPriceMaxTic = tk;
                    }
                  if(op < SelPriceMin || SelPriceMin == 0)
                    {
                     SelPriceMin    = op;
                     SelPriceMinLot = lt;
                     SelPriceMinTic = tk;
                    }
                 }
              }
//*************************************************************//
   double   AwerageBuyPrice = 0, AwerageSelPrice = 0;

   if(iCloseOrder == Awerage)
     {
      if(b >= 2)
         AwerageBuyPrice = NormalizeDouble((BuyPriceMax * BuyPriceMaxLot + BuyPriceMin * BuyPriceMinLot) / (BuyPriceMaxLot + BuyPriceMinLot) + iMinimalProfit * Point(), Digits());
      if(s >= 2)
         AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * SelPriceMinLot) / (SelPriceMaxLot + SelPriceMinLot) - iMinimalProfit * Point(), Digits());
     }

   if(iCloseOrder == PartClose)
     {
      if(b >= 2)
         AwerageBuyPrice = NormalizeDouble((BuyPriceMax * iStartLots + BuyPriceMin * BuyPriceMinLot) / (iStartLots + BuyPriceMinLot) + iMinimalProfit * Point(), Digits());
      if(s >= 2)
         AwerageSelPrice = NormalizeDouble((SelPriceMax * SelPriceMaxLot + SelPriceMin * iStartLots) / (SelPriceMaxLot + iStartLots) - iMinimalProfit * Point(), Digits());
     }
//*************************************************************//
   double BuyLot = 0, SelLot = 0;
   if(BuyPriceMinLot == 0)
      BuyLot = iStartLots;
   else
      BuyLot = BuyPriceMinLot * 2;
   if(SelPriceMaxLot == 0)
      SelLot = iStartLots;
   else
      SelLot = SelPriceMaxLot * 2;
//*************************************************************//
   if(iMaximalLots >0)
     {
      if(BuyLot > iMaximalLots)
         BuyLot = iMaximalLots;
      if(SelLot > iMaximalLots)
         SelLot = iMaximalLots;
     }
   if(!CheckVolumeValue(BuyLot) || !CheckVolumeValue(SelLot))
      return;
//*************************************************************//
   if(Close[1] > Open[1])
      if((b == 0) || (b > 0 && (BuyPriceMin - Ask) > (iPointOrderStep * Point())))
         if(OrderSend(Symbol(), OP_BUY, NormalizeDouble(BuyLot, 2), NormalizeDouble(Ask, Digits()), iSlippage, 0, 0, "Test Buy", iMagicNumber, 0, clrGreen) < 0)
            Print("OrderSend error #", GetLastError());

   if(Close[1] < Open[1])
      if((s == 0) || (s > 0 && (Bid - SelPriceMax) > (iPointOrderStep * Point())))
         if(OrderSend(Symbol(), OP_SELL, NormalizeDouble(SelLot, 2), NormalizeDouble(Bid, Digits()), iSlippage, 0, 0, "Test Sell", iMagicNumber, 0, clrGreen) < 0)
            Print("OrderSend error #", GetLastError());
//*************************************************************//
   for(int i = OrdersTotal() - 1; i >= 0; i--)
      if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES))
         if(OrderMagicNumber() == iMagicNumber)
            if(OrderSymbol() == Symbol())
              {
               op = NormalizeDouble(OrderOpenPrice(), Digits());
               tp = NormalizeDouble(OrderTakeProfit(), Digits());
               lt = NormalizeDouble(OrderLots(), 2);
               tk = OrderTicket();

               if(OrderType() == OP_BUY && b == 1 && tp == 0)
                  if(!OrderModify(tk, op, OrderStopLoss(), NormalizeDouble(Ask + iTakeProfit * Point(), Digits()), 0, clrRed))
                     Print("OrderModify error #", GetLastError());

               if(OrderType() == OP_SELL && s == 1 && tp == 0)
                  if(!OrderModify(tk, op, OrderStopLoss(), NormalizeDouble(Bid - iTakeProfit * Point(), Digits()), 0, clrRed))
                     Print("OrderModify error #", GetLastError());

               if(iCloseOrder == Awerage)
                 {
                  if(OrderType() == OP_BUY && b >= 2)
                    {
                     if(tk == BuyPriceMaxTic || tk == BuyPriceMinTic)
                        if(Bid < AwerageBuyPrice && tp != AwerageBuyPrice)
                           if(!OrderModify(tk, op, OrderStopLoss(), AwerageBuyPrice, 0, clrRed))
                              Print("OrderModify error #", GetLastError());

                     if(tk != BuyPriceMaxTic && tk != BuyPriceMinTic && tp != 0)
                        if(!OrderModify(tk, op, 0, 0, 0, clrRed))
                           Print("OrderModify error #", GetLastError());
                    }
                  if(OrderType() == OP_SELL && s >= 2)
                    {
                     if(tk == SelPriceMaxTic || tk == SelPriceMinTic)
                        if(Ask > AwerageSelPrice && tp != AwerageSelPrice)
                           if(!OrderModify(tk, op, OrderStopLoss(), AwerageSelPrice, 0, clrRed))
                              Print("OrderModify error #", GetLastError());

                     if(tk != SelPriceMaxTic && tk != SelPriceMinTic && tp != 0)
                        if(!OrderModify(tk, op, 0, 0, 0, clrRed))
                           Print("OrderModify error #", GetLastError());
                    }
                 }

              }

   if(iCloseOrder == PartClose)
     {
      if(b >= 2)
         if(AwerageBuyPrice > 0 && Bid >= AwerageBuyPrice)
           {
            if(!OrderClose(BuyPriceMaxTic, iStartLots,Bid, iSlippage, clrRed))
               Print("OrderClose Error", GetLastError());
            if(!OrderClose(BuyPriceMinTic, BuyPriceMinLot,Bid, iSlippage, clrRed))
               Print("OrderClose Error #", GetLastError());
           }
      if(s >= 2)
         if(AwerageSelPrice > 0 && Ask <= AwerageSelPrice)
           {
            if(!OrderClose(SelPriceMinTic, iStartLots,Ask, iSlippage, clrRed))
               Print("OrderClose Error #", GetLastError());
            if(!OrderClose(SelPriceMaxTic, SelPriceMaxLot,Bid, iSlippage, clrRed))
               Print("OrderClose Error #", GetLastError());
           }
     }
  }
//************************************************************************************************/
//*                                                                                              */
//************************************************************************************************/
void OnDeinit(const int reason)
  {

  }
//************************************************************************************************/
//*                                                                                              */
//************************************************************************************************/
bool CheckVolumeValue(double volume)
  {

   double min_volume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MIN);
   if(volume < min_volume)
      return(false);


   double max_volume = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_MAX);
   if(volume > max_volume)
      return(false);


   double volume_step = SymbolInfoDouble(Symbol(), SYMBOL_VOLUME_STEP);

   int ratio = (int)MathRound(volume / volume_step);
   if(MathAbs(ratio * volume_step - volume) > 0.0000001)
      return(false);

   return(true);
  }
//************************************************************************************************/
//*                                                                                              */
//************************************************************************************************/
Files:
Immagine.jpg  55 kb
 
fxduep2020:

yes of course, everything is there, I worked on this code for a month without problems, now I can no longer publish, the code is perfect, zero errors

You are not the only one, even I am going crazy to publish MT4 !!! even the first versions that I had published a few days ago are no longer published, I'm thinking of abandoning mq4 ...

 
Alessandro Grossi:

You are not the only one, even I am going crazy to publish MT4 !!! even the first versions that I had published a few days ago are no longer published, I'm thinking of abandoning mq4 ...

This been discussed in the Russian forum;

https://www.mql5.com/ru/forum/296801

Замучила ошибка there are no trading operations
Замучила ошибка there are no trading operations
  • 2018.12.29
  • www.mql5.com
Не первый день пытаюсь понять природу ошибки there are no trading operations, которая появляется независимо от того, прописываю я в робота кучу про...
 
Kenneth Parling:

This been discussed in the Russian forum;

https://www.mql5.com/ru/forum/296801

yes, thanks already read all, there is no solution ... if not throw mt4 ...

 
Alessandro Grossi:

yes, thanks already read all, there is no solution ... if not throw mt4 ...

Validation works just fine and you are obviously doing something wrong! Here's proof that it works just fine as i just minutes ago had a Product validated;

validation_works_fine

 
Kenneth Parling:

Validation works just fine and you are obviously doing something wrong! Here's proof that it works just fine as i just minutes ago had a Product validated;


even the code that I posted days ago was validated, now not anymore, they changed something and went crazy to find out