July 10th, 2008
OrderSend Error 131 is a very popular problem that is usually encountered when testing MT4 expert advisors.
What causes this error? It’s called ERR_INVALID_TRADE_VOLUME
in the MT4 code. That means that your expert advisor is trying to send
an order with invalid trade volume. On the absolute majority
of the MT4 brokers setting some EA to open an order 0.123 lots will
generate this error. But sometimes it’s generated when the EA, created
for mini or micro accounts, is used on the standard account. If you
stumble on OrderSend Error 131 during your testing, you can quickly find
out the wrong settings of your EA — find the standard init() function
inside your EA’s code and insert these lines of code there:
The first line will give you the information regarding how many units one lot holds when you trade in this account (100000 would mean astandard-sized
lot). Remember, that in your expert advisor’s log this line will
be first starting from down to up, not vice versa. The second line will
tell you the minimum amount of lots you can trade (this is the most
usual error; you’ll probably just need to fix the amount of lots your
EA trades from 0.1 to 1). The third one will give the minimum step
for the trade volume in lots. The fourth line will tell you the maximum
amount of lots that your EA can trade.
For example, demo account at FXOpen generates this info when I insert those lines into the code:
That means that 1 lot is 100,000 units (a standard size), minimum trade volume is 0.01 lot (so, one can trade starting from $10 on 1 position in adollar-based currency pair), minimum
trade volume step is also 0.01 lot (one can trade 0.33, 0.4 or 1.25 lot
volumes, but can’t send orders with 0.333 lot size) and the maximum
volume one can use to open a position is 10,000 lots.
You can incorporate the MarketInfo() function at a more complex level into your EA, so it could automatically check the allowed values and correct its settings. But if you don’t want to code much, you can just use the code above to find out the right values and correct the settings manually.
Print(MarketInfo(Symbol(), MODE_LOTSIZE));
Print(MarketInfo(Symbol(), MODE_MINLOT));
Print(MarketInfo(Symbol(), MODE_LOTSTEP));
Print(MarketInfo(Symbol(), MODE_MAXLOT));
The first line will give you the information regarding how many units one lot holds when you trade in this account (100000 would mean a
For example, demo account at FXOpen generates this info when I insert those lines into the code:
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 10000
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 0.01
2008.07.10 15:13:37 MACD Sample EURUSD, H1: 100000
That means that 1 lot is 100,000 units (a standard size), minimum trade volume is 0.01 lot (so, one can trade starting from $10 on 1 position in a
You can incorporate the MarketInfo() function at a more complex level into your EA, so it could automatically check the allowed values and correct its settings. But if you don’t want to code much, you can just use the code above to find out the right values and correct the settings manually.
February 23rd, 2009 at 7:10 pm This is some Enhancement:
// ===============================================
Print(“MODE_LOTSIZE = “, MarketInfo(Symbol(),MODE_LOTSIZE), “, Symbol = “, Symbol());
Print(“MODE_MINLOT = “, MarketInfo(Symbol(),MODE_MINLOT), “, Symbol = “, Symbol());
Print(“MODE_LOTSTEP = “, MarketInfo(Symbol(),MODE_LOTSTEP), “, Symbol = “, Symbol());
Print(“MODE_MAXLOT = “, MarketInfo(Symbol(),MODE_MAXLOT), “, Symbol = “, Symbol());
// ===============================================
August 27th, 2012 at 3:14 pm
Thanks for your help.But ı have used this code and i learned max lot size is 30.
How can i increase max lot size.
Yours sincerely.
August 27th, 2012 at 4:09 pm
Only your broker can increase your allowed max lot size. You may try contacting their support service about that but I am not sure that they will increase it. Do you really have to open such big positions?
November 21st, 2009 at 10:29 pm “You can incorporate the MarketInfo() function at a more complex level into your EA, so it could automatically check the allowed values and correct its settings”
Please what is the code. I need it but I am not a coder. Grateful. Chad
November 21st, 2009 at 10:43 pm Chad, If you aren’t coder it’d be better for you to use the solution proposed in this post. Integration of MarketInfo() into code for automatic adjustments is different in each case and I won’t be able to help you here. More than that, you don’t really need it if you aren’t a professional coder.