• Join us

I use this script to open a order. I get an error -1.

To add comments, please log in or register
Pierre Rougier
396
Pierre Rougier  

Hello,

I use this script to open a order.
I get an error -1.
Why?

Regards,

Pierre8r

//--------------------------------------------------------------------
// simpleopen.mq4 
// Ïðåäíàçíà÷åí äëÿ èñïîëüçîâàíèÿ â êà÷åñòâå ïðèìåðà â ó÷åáíèêå MQL4.
//--------------------------------------------------------------------
int start()                                  // Ñïåö. ôóíêöèÿ start()
  {                                          // Îòêðûòèå BUY
   int iReturnOrder = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-15*Point,Bid+15*Point);
   Alert(iReturnOrder);
   return;                                   // Âûõîä èç start()
  }
//--------------------------------------------------------------------

Simon Gniadkowski
17226
Simon Gniadkowski  

-1 is not the error . . . -1 is the return value meaning the OrderSend failed . . . read the Documentation

Add a Print if iReturnOrder is < 0 and Print GetLastError()

It may well be an ECN Broker issue . . . . if it is there is plenty of info here: ECN

onewithzachy
1863
onewithzachy  
tintin92:

Hello,

I use this script to open a order.

I get an error -1.

Why ?

Regards,

Pierre8r

Did you still install at C:\Program Files\ on 7/Vista ? The other you can't even open chm help files ?

onewithzachy
1863
onewithzachy  

Do what RaptorUK said, check GetLastError(). I think you should change some parameter :

    ,Bid-150*Point, Ask+150*Point);

You probably sending order with TP and SL within broker STOP_LEVEL. Look for MarketInfo.

GreenMoney
369
GreenMoney  

I can see two reason why the OrderSend in your code would return a -1.

First, if you are dealing with an ECN broker, you must use OrderSend without setting a stoploss or takeprofit (that is, make those values = 0). Once the order has been successfully placed, modify the order (using OrderModify) to set the stoploss and takeprofit values.

Second, if you are dealing with a 5 digit broker, Point will be 0.00001. In your code, that means you are trying to set a stoploss and takeprofit of 1.5 pips (15 points). This value (15 points; aka, 1.5 pips) may be inside the broker's stoplevel, and if so, the broker will reject the trade. See Requirements and Limitations in Making Trades. If you want a 15 pip stoploss and takeprofit and are dealing with a 5 digit broker (and therefore Point is 0.00001), your code should be:

int iReturnOrder = OrderSend(Symbol(),OP_BUY,0.1,Ask,3,Bid-150*Point,Bid+150*Point); 

Out of curiosity, why are you using the Bid price (rather than the Ask price) when calculating your stoploss and takeprofit prices?

Hope the above helps.

Pierre Rougier
396
Pierre Rougier  

Hello,

Changed my code.

Now, it works.

Thanks,

Pierre8r

//--------------------------------------------------------------------
// simpleopen.mq4 
// Ïðåäíàçíà÷åí äëÿ èñïîëüçîâàíèÿ â êà÷åñòâå ïðèìåðà â ó÷åáíèêå MQL4.
//--------------------------------------------------------------------
int start()                                  // Ñïåö. ôóíêöèÿ start()
  {                                          // Îòêðûòèå BUY
  
   int ticket;
   ticket=OrderSend(Symbol(),OP_BUY,0.1,Ask,3,0,0);
   Alert(ticket);
   if(ticket<0)
   {
      Print("OrderSend failed with error #",GetLastError());
      return(0);
   }
   return;                                   // Âûõîä èç start()
  }
//--------------------------------------------------------------------
Simon Gniadkowski
17226
Simon Gniadkowski  
tintin92:

Hello,

Changed my code.

Now, it works.

Thanks,

Pierre8r

Well done ! :-)
To add comments, please log in or register