有个问题困扰我好几天了,想请教下各位前辈。我最近在写一个简单的网格EA,逻辑是当价格突破某个区间后反向挂单,但是实际测试时发现挂单总是无法触发,日志里一直报 OrderSend failed with error #138(重试次数耗尽)。我检查过账户的杠杆是1:500,点差在欧美上大概1.5左右,应该不是流动性问题。
我尝试过把Magic Number设成不同值,也试过用RefreshRates()刷新市场数据,但问题依旧。后来我怀疑是挂单价格离当前价太近,就把距离调大到50点,结果还是不行。更奇怪的是,我手动在MT4上挂同样的单子却能成功,说明服务器没问题。代码里我用了OrderSend函数,参数也都按规范填了,但就是报错。
我查了MQL4文档,说Error 138通常是因为服务器拒绝挂单,但我实在想不通为什么手动能行而EA不行。会不会是 OrderSend的slipage参数设得太小?我目前设的是3点,对欧美来说应该够了吧。或者是不是因为我在OnTick里连续调用OrderSend,导致服务器觉得太频繁?我加了100毫秒的Sleep,但好像没效果。
另外,我注意到EA在回测时完全正常,一上实盘就出问题,这让我更摸不着头脑。有没有大佬遇到过类似情况?是不是需要先检查 账户的FreeMargin足够?我的余额有2000美金,每单0.01手,应该没问题才对。求指点,真的卡在这里好几天了 😅
我尝试过把Magic Number设成不同值,也试过用RefreshRates()刷新市场数据,但问题依旧。后来我怀疑是挂单价格离当前价太近,就把距离调大到50点,结果还是不行。更奇怪的是,我手动在MT4上挂同样的单子却能成功,说明服务器没问题。代码里我用了OrderSend函数,参数也都按规范填了,但就是报错。
我查了MQL4文档,说Error 138通常是因为服务器拒绝挂单,但我实在想不通为什么手动能行而EA不行。会不会是 OrderSend的slipage参数设得太小?我目前设的是3点,对欧美来说应该够了吧。或者是不是因为我在OnTick里连续调用OrderSend,导致服务器觉得太频繁?我加了100毫秒的Sleep,但好像没效果。
另外,我注意到EA在回测时完全正常,一上实盘就出问题,这让我更摸不着头脑。有没有大佬遇到过类似情况?是不是需要先检查 账户的FreeMargin足够?我的余额有2000美金,每单0.01手,应该没问题才对。求指点,真的卡在这里好几天了 😅