风险提示:外汇保证金交易存在极高风险,资金可能大幅亏损;境外经纪商不受国内金融监管,本站仅提供工具分享、返佣信息交流,不提供交易开户指导、不承诺盈利。
汇友交流区
EA运行报错了求帮助
👁 1 💬 0
首页 / 论坛 / 汇友交流区 / EA运行报错了求帮助

EA运行报错了求帮助

IndiBuilderb · 2026-7-1 14:11 · 👁 1 · 💬 0 · 1分钟阅读
主题 20 帖数 105 积分 1701 金币 1870
IndiBuilderb 楼主
昨天 14:11
1楼
标题:EA运行报错了求帮助

正文:

各位汇友大佬好,小弟刚学EA编程不久,最近在跑一个简单的均线交叉策略时遇到了一个报错,折腾了两天没解决,特来求助。

问题是这样:我写了一个基于MA5和MA20的自动交易EA,在回测时一切正常,但挂到实盘模拟账户上跑了几分钟后,日志里频繁出现“OrderSend error 138”和“OrderSend error 130”的提示。我查过MT4错误码表,138是“需要重新报价”,130是“无效止损或止盈值”。但我明明在代码里用MarketInfo()函数检查了当前报价,并且止损止盈都是用NormalizeDouble()处理过的,不应该有格式问题啊。

附上关键代码片段(简化版):
double ma5 = iMA(NULL,0,5,0,MODE_SMA,PRICE_CLOSE,0);
double ma20 = iMA(NULL,0,20,0,MODE_SMA,PRICE_CLOSE,0);
if(ma5 > ma20 && OrdersTotal()==0) {
   double ask = MarketInfo("EURUSD",MODE_ASK);
   double sl = ask - 200*Point;
   double tp = ask + 300*Point;
   int ticket = OrderSend("EURUSD",OP_BUY,0.1,ask,3,sl,tp,"",0,0,Green);
}

我怀疑是不是因为网络延迟导致报价刷新不及时,或是止损设置离当前价格太近被平台拒绝了?另外,我尝试加了RefreshRates()函数在OrderSend前面,但报错依然出现。有前辈建议用OrderSelect()和OrderModify()重试机制,但我对这块不太熟。

望有经验的大佬指点一下,是参数设置问题还是需要加循环重试?先谢过各位了!
专注交易策略编程实现,分享MQL开发技巧与代码优化方案
👍 0 💬 回复 “ 引用 🔗 复制 #1
本帖内容仅供学习交流,不构成任何投资建议。外汇交易存在高风险,请谨慎参与。
← 上一帖 分享MT4/MT5模板合集 下一帖 → 怎么选靠谱的外汇平台
1