help with error 131

 

error 131. This is the ordersend:


OrderSend(Symbol(),OP_BUY,0.01,Ask,3,Ask-500*Point,Ask+500*Point,NULL,0,0, clrNONE);


Somebody know what is the error?

 

From here :

 

#define ERR_INVALID_TRADE_VOLUME                    131

 

Your broker does not allow 0.01 lot. 

To find minimum lot use MarketInfo():

Print("Minimum permitted amount of a lot=",MarketInfo(Symbol(),MODE_MINLOT));
 
drazen64:

From here :

 

 

Your broker does not allow 0.01 lot. 

To find minimum lot use MarketInfo():

 

 

 



Thank you drazen64. But the broker allows me to trade 0.01. So, here other thing: When I do a testing with "print gest last error," appears in the diary "Error 4051". When I open one of those error messages, says "error 131".

This is the code:


void OnTick()
  {
   double TEND1, TEND2;
 
   TEND1= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,1);
   TEND2= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,2);
//---
   if (OrdersTotal()==0 && TEND1>TEND2)
      {
      int ticket=OrderSend(Symbol(),OP_BUY,0.01, Ask, 10, Ask-500*Point, Ask+500*Point, NULL, 0, 0, clrNONE);
     
      }
   Print("error", GetLastError());
  }
//+------------------------------------------------------------------+

 

First, use "SRC" when posting code (you can edit your post)

Move error printing inside if statement so that you are sure that GetLastError reports OrderSend() eventual error: 

void OnTick()
  {
   double TEND1, TEND2;
  
   TEND1= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,1);
   TEND2= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,2);
//---
   if (OrdersTotal()==0 && TEND1>TEND2)
      {
      int ticket=OrderSend(Symbol(),OP_BUY,0.01, Ask, 10, Ask-500*Point, Ask+500*Point, NULL, 0, 0, clrNONE);
      if(ticket < 0)
        Print("error", GetLastError());  // to be sure that error is from OrderSend      
      }
   
  }
//

 

Some of reasons OrderSend can fail are if SL and TP are to close to the price, you work with ECN broker - you should not send SL and TP. 

 


First fix iADX calls.   Error 4051 is probably because you missed second parameter - it should be timeframe constant, but you put 14: 

TEND1= iADX(NULL,14,PERIOD_CURRENT,PRICE_CLOSE, MODE_PLUSDI,1);

 

double  iADX(
   string       symbol,        // symbol
   int          timeframe,     // timeframe
   int          period,        // averaging period
   int          applied_price, // applied price
   int          mode,          // line index
   int          shift          // shift
   );

 

Ok. This is the right way:


   TEND1= iADX(NULL,PERIOD_M15,14,PRICE_CLOSE, MODE_PLUSDI,1);

   TEND2= iADX(NULL,PERIOD_M15,14,PRICE_CLOSE, MODE_PLUSDI,2);


The problem was the lot size (I do not know why because my broker allow to trade 0.01 lot). I guess maybe not in testing and EAs.

Thanks to all.

Reason: