诚信为本
量力而为
当前位置:ea编程网 EA知识 正文

EA测试或交易中报错 OrderSend error 131的原因及解决办法

在EA测试或交易中,偶尔会出现一直不交易,且日志中出现 OrderSend error 131 的报错情况,要解决这种报错,我们首先要弄清楚其发生错误的根本原因。

在MQL4语言的帮助文档中搜索并查看 GetLastError() 处理错误函数,可以看到如下说明:131 ERR_INVALID_TRADE_VOLUME Invalid trade volume。译成中文的大概意思是:131错误代码是指交易量参数无效。通俗的说就是交易手数大小出错了。

EA测试或交易中报错 OrderSend error 131

不论是在开发EA还是测试EA,我们都要注意EA所交易品种的开仓手数规则,它主要涉及最小交易量、最大交易量、交易量步长,一旦EA程序采用的交易手数不符合这三个规则,就会出现 131 报错。最关键的问题是,交易手数这三个规则在不同的平台或者不同的交易品种上都是不一定相同的。可以先简单了解下它们的含义:

  • 最小交易量是指交易品种的单个订单的最小下单手数,小于这个手数就不允许开新订单。比如欧元兑美元EURUSD标准账号最小开仓手数是0.01,那么小于0.01就会报错。
  • 最大交易量是指交易品种的单个订单的最大下单手数,大于这个手数就不允许开新订单。比如欧元兑美元EURUSD标准账号最大开仓手数是30,那么大于30就会报错。
  • 交易量步长是指交易品种在最小手数与最大手数之间的每次手数增减量。如果交易量步长是0.01,那么在1手之后,可以开1.01、1.02这种;如果交易量步长是0.1,那么1手之后只能开1.1、1.2这种。

那么如何查看一个交易品种的最小交易量、最大交易量、交易量步长呢?在mt4市场报价窗口找到交易品种,然后在其上面鼠标右键并点击“规格”,就会打开该品种的合约细则窗口,在合约细则窗口中我们就能看到它的交易手数规则,如下图所示:

查看一个交易品种的最小交易量、最大交易量、交易量步长

如上所说,在EA出现 OrderSend error 131报错时,我们按上图方式查看下所交易品种的相关交易手数规则,然后按照规则来修改或调整EA的手数参数就可以解决问题了。如果是从网上下载来的没有源代码的ex4格式的EA文件,那么在它的属性框中找到Lots相关的输入变量,看看是否符合交易手数规则。

当然,这种报错在一个完善的外汇ea编程开发中是不应当出现的,可以从程序内部彻底避免的,事先用相关函数获取交易品种的最小交易量、最大交易量、交易量步长,然后做自适应处理即可。

未经允许不得转载:ea编程网 » EA测试或交易中报错 OrderSend error 131的原因及解决办法