标题:EA运行报错了求帮助
刚接触EA编程没几天,自己试着写了一个简单的双均线交叉策略,在MT4上测试时遇到一个奇怪的错误,搞了两天没解决,来论坛求助各位大佬。
我的思路是:当快线(MA5)上穿慢线(MA20)时开多单,下穿时开空单,每次只开一单,带固定止损止盈。代码逻辑看起来没问题,但在回测或模拟盘运行时,日志里经常报“OrderSend error 130”或者“invalid stops”,有时候还会出现“OrderModify error 1”。
我用的OrderSend函数参数如下:
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Ask-200*Point, Ask+400*Point, "MyEA", 0, 0, Green);
止损和止盈价格都是基于Ask计算的,按理说应该没问题,但为什么老是报130?查了文档,130是“无效的止损或止盈”,是不是因为我的止损设得太近了?但200点对于EURUSD来说应该够了吧?
还有OrderModify的问题,我是在开仓后立即用OrderSelect和OrderModify调整止损止盈,但有时候会报错1(没有错误),但实际单子没被修改,感觉很奇怪。
另外,我还发现EA在测试时偶尔会连续开多个单,明明我已经用全局变量和订单计数函数做了限制:
if(OrdersTotal()==0) { ... }
但有时还是会在同一根K线内开两次单,怀疑是tick刷新导致的条件重复触发,但我不知道怎么避免。
有没有哪位前辈能指点一下?是OrderSend的参数设置问题,还是我的开仓条件逻辑有漏洞?如果需要看完整代码,我可以贴上来。新手入门,很多细节搞不懂,先谢谢各位了!
刚接触EA编程没几天,自己试着写了一个简单的双均线交叉策略,在MT4上测试时遇到一个奇怪的错误,搞了两天没解决,来论坛求助各位大佬。
我的思路是:当快线(MA5)上穿慢线(MA20)时开多单,下穿时开空单,每次只开一单,带固定止损止盈。代码逻辑看起来没问题,但在回测或模拟盘运行时,日志里经常报“OrderSend error 130”或者“invalid stops”,有时候还会出现“OrderModify error 1”。
我用的OrderSend函数参数如下:
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Ask-200*Point, Ask+400*Point, "MyEA", 0, 0, Green);
止损和止盈价格都是基于Ask计算的,按理说应该没问题,但为什么老是报130?查了文档,130是“无效的止损或止盈”,是不是因为我的止损设得太近了?但200点对于EURUSD来说应该够了吧?
还有OrderModify的问题,我是在开仓后立即用OrderSelect和OrderModify调整止损止盈,但有时候会报错1(没有错误),但实际单子没被修改,感觉很奇怪。
另外,我还发现EA在测试时偶尔会连续开多个单,明明我已经用全局变量和订单计数函数做了限制:
if(OrdersTotal()==0) { ... }
但有时还是会在同一根K线内开两次单,怀疑是tick刷新导致的条件重复触发,但我不知道怎么避免。
有没有哪位前辈能指点一下?是OrderSend的参数设置问题,还是我的开仓条件逻辑有漏洞?如果需要看完整代码,我可以贴上来。新手入门,很多细节搞不懂,先谢谢各位了!
专注交易策略编程实现,分享MQL开发技巧与代码优化方案