5W USD账户一秒爆仓的原因-请问MQL5中标准函数库CTrade::PositionClose有一定几率不能正常平仓反而开启了大量的反向头寸 - 页 2 12 新评论 Blur Darkness 2022.12.17 09:16 #11 Xiaojian Ding #: 我也是遇到楼主的问题,一秒爆仓搞得我怀疑人生!楼主解决没有啊?我在想有没有这种可能,市场变化太快或交易服务器卡顿延时,PositionClose发出后未成功执行,EA会继续发送PositionClose,因为没有写 PositionClose 检查交易请求的结果的代码,并根据结果处理订单,导致每个tick都发送 PositionClose直到账户可用余额不足,市场方向不对加上累积的手续费就会符合强制平仓条件,最终爆仓!希望有大神来指点迷津,怎么写这个代码,谢谢。 PositionClose 用for循环,不要用while,每次循环都加上对ordersend的返回代码检验 Xiaojian Ding 2023.04.06 10:56 #12 Blur Darkness #: 用for循环,不要用while,每次循环都加上对ordersend的返回代码检验 能详细点吗?我看网上的原因是平仓时PositionClose (...)不建议用symbol传参,我的代码改为下面这个,还有什么改进的吗? for(int i=PositionsTotal()-1; i>=0; i--) { ulong Positionticket = PositionGetTicket(i); if(Positionticket>0 && _Symbol==PositionGetString(POSITION_SYMBOL) && PositionGetInteger(POSITION_MAGIC)==magic) { if(!trade.PositionClose(Positionticket)) { //--- 报错信息 Print("平仓失败. 代码=",trade.ResultRetcode(),". 错误内容: ",trade.ResultRetcodeDescription()); Print("magic=",PositionGetInteger(POSITION_MAGIC),". 订单: ",Positionticket); } else { Print("平仓成功. 代码=",trade.ResultRetcode()," (",trade.ResultRetcodeDescription(),")"); } } } Yang Wang 2023.04.07 19:24 #13 如图 lap cheung 2023.04.13 01:38 #14 int GUARD_ACC::listOrders(void) { hold_orders=PositionsTotal(); // 持仓总数 > 0 return hold_orders; } 获得持仓单总数,再做下一步。 可以控制手头有多少单。 开不开新仓。 lap cheung 2023.04.15 03:33 #15 昨天测试时,也发现了一个逻辑上的 Bug 如果以挂单方式开仓,每次执行都会增加一张挂单,因为挂单不存在执行失败情况,也不检查重复下单。 可能产生几千张挂单。 Xiang He 2023.04.29 09:45 #16 我也是无限平,没有出现这个问题,最好还是放自己代码上来看看 我是不用代码库的,逻辑太混乱,各种类和函数跳来跳去完全没有必要,他们写的类库因为要考虑所有情况所以写的很复杂,自己写一个简单的交易类封装起来就好 12 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我也是遇到楼主的问题,一秒爆仓搞得我怀疑人生!楼主解决没有啊?我在想有没有这种可能,市场变化太快或交易服务器卡顿延时,PositionClose发出后未成功执行,EA会继续发送PositionClose,因为没有写 PositionClose
检查交易请求的结果的代码,并根据结果处理订单,导致每个tick都发送 PositionClose直到账户可用余额不足,市场方向不对加上累积的手续费就会符合强制平仓条件,最终爆仓!希望有大神来指点迷津,怎么写这个代码,谢谢。
PositionClose用for循环,不要用while,每次循环都加上对ordersend的返回代码检验
能详细点吗?我看网上的原因是平仓时PositionClose (...)不建议用symbol传参,我的代码改为下面这个,还有什么改进的吗?
如图
获得持仓单总数,再做下一步。
可以控制手头有多少单。
开不开新仓。
昨天测试时,也发现了一个逻辑上的 Bug
如果以挂单方式开仓,每次执行都会增加一张挂单,因为挂单不存在执行失败情况,也不检查重复下单。
可能产生几千张挂单。
我也是无限平,没有出现这个问题,最好还是放自己代码上来看看
我是不用代码库的,逻辑太混乱,各种类和函数跳来跳去完全没有必要,他们写的类库因为要考虑所有情况所以写的很复杂,自己写一个简单的交易类封装起来就好