错误 4756 - 页 2 1234 新评论 Simon Gniadkowski 2013.03.11 17:10 #11 angevoyageur: 你用什么函数、类/方法来发送/修改你的订单? 在设置了MqlTradeRequest 之后的OrderSend() Documentation on MQL5: Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure www.mql5.com Standard Constants, Enumerations and Structures / Data Structures / Trade Request Structure - Documentation on MQL5 Alain Verleyen 2013.03.11 17:51 #12 RaptorUK: 设置了MqlTradeRequest 后的OrderSend()你有没有看到这个(来自OrderSend文档)?应该注意的是,在下市场订单时,OrderSend()方法操作的成功完成并不总是意味着交易的成功完成。检查 包含交易服务器返回代码 的retcode 值,以及 交易 或 订单 字段 的值 ,这取决于返回 结果 中的操作类型 。 看到这个 代码会 更容易 得到 帮助 。 Simon Gniadkowski 2013.03.11 18:13 #13 angevoyageur: 你看到这个了吗(来自OrderSend文档)? 如果 能看到这段 代码,会 更有帮助 。我检查返回的结果,只有当它返回TRADE_RETCODE_PLACED或TRADE_RETCODE_DONE时才尝试放置SL和TP。 if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) { SetTPandSL = false; Print("Return code # ", result.retcode, " Bid ", result.bid, " Ask ", result.ask, " Deal price ", result.price); } else SetTPandSL = true; if(SetTPandSL && ECN) { // now modify Position to add SL & TP ZeroMemory(request); ZeroMemory(result); request.action = TRADE_ACTION_SLTP; // setting the TP & SL request.symbol = _Symbol; // symbol request.sl = lastTick.ask - SL_Size * _Point; // Stop Loss request.tp = lastTick.ask + TP_Size * _Point; // Take Profit //--- send a trade request OrderSend(request,result); //--- write the server reply to log Print(__FUNCTION__,": Placeing SL & TP ",result.comment, " Return code # ", result.retcode); if( result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE ) Print("Return code # ", result.retcode, " Bid ", lastTick.bid, " Ask ", lastTick.ask, " Deal price ", result.price, " SL: ", request.sl, " TP: ", request.tp, " Freeze: ", Freeze, " Stoplevel: ", Stop ); } Alain Verleyen 2013.03.11 19:23 #14 RaptorUK:我检查返回的结果,只有当它返回TRADE_RETCODE_PLACED或TRADE_RETCODE_DONE时才尝试放置SL和TP。应该注意的是,在下市场订单时,成功完成OrderSend()方法操作并不总是意味着交易成功完成。检查 包含交易服务器返回代码 的retcode 值,以及 取决于返回 结果 中 的 操作类型 的交易 或 订单 字段 的值 。你必须检查交易单号。 if( (result.retcode != TRADE_RETCODE_PLACED && result.retcode != TRADE_RETCODE_DONE) || result.deal == 0) 这不是最后一句话,如果你的交易单是0,你对SL/TP的修改无论如何不会执行。还在寻找... Simon Gniadkowski 2013.03.11 19:32 #15 angevoyageur:你必须检查交易单号。这不是最后一句话,如果你的交易单是0,你对SL/TP的修改无论如何不会执行。还在寻找...我可以做到这一点,但问题是,交易是成功的,头寸也打开了......但当我试图添加SL和TP时,却以无效止损 失败,尽管它们不是无效的。 似乎我必须等待一些事情发生,然后才能发送设置TP和SL的请求......但我真的不知道我应该等待的官方、有记录的事情是什么?谢谢你的回答:-) Alain Verleyen 2013.03.11 19:48 #16 RaptorUK:我可以这样做,但问题是,交易成功了,仓位也打开了......但当我试图添加SL和TP时,却以无效止损失败,尽管它们并不无效。 似乎我必须等待一些事情发生,然后才能发送设置TP和SL的请求......但我真的不知道我应该等待的正式、有记录的事情是什么。谢谢你的回答:-)我知道。我正在检查 所有的mql5网站以找到回应 :-D编辑。 在这个网站上 完全 没有 显示 如何把一个 sl / tp 与一个交易执行类型的市场。实际上我也有同样的问题,但是用PositionOpen来代替OrderSend,我也可以手动完成它。 Alain Verleyen 2013.03.11 20:30 #17 angevoyageur:我知道。我正在检查所有的mql5网站,以找到回应 :-D 编辑。 在这个网站上 完全 没有 显示 如何把一个 sl / tp 与交易执行类型的市场。其实我也有同样的问题,但是用PositionOpen来代替OrderSend,我也可以手动完成它。我已经发现了。这是你的EA和交易服务器之间的同步问题。你必须使用事件处理程序OnTradeTransaction()。由OrderSend()函数发送的服务器上的交易请求的执行结果可以由OnTradeTransaction 处理程序跟踪。应该注意的是,在执行一个交易请求时,OnTradeTransaction处理程序将被多次调用。 例如,当发送一个市场买入订单时,它被处理,为账户创建一个适当的买入订单,然后订单被执行并从未结订单列表中删除,然后它被添加到订单历史中,一个适当的交易被添加到历史中并创建一个新头寸。 OnTradeTransaction函数将为这些事件中的每一个调用。 试试吧。)试试吧......明天给我。 Simon Gniadkowski 2013.03.11 20:55 #18 angevoyageur:我已经发现了。这是你的EA和交易服务器之间的同步问题。你必须使用事件处理程序OnTradeTransaction()。 试试吧。)试试吧......明天给我。 啊哈,谢谢,我会看看的。) Simon Gniadkowski 2013.03.11 23:33 #19 RaptorUK: 啊哈,谢谢,我会看看的。) 这是你找到的主题吗?https://www.mql5.com/en/forum/10850,它报告了与我相同的问题。 BHC 2013.03.12 04:37 #20 我的EA在构建778时带来了奇怪的错误。0.1的成交量是正常的,显然不是无效的。2013.03.12 07:29:57 pivots (SILVER,M5) SILVER failedORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 check code:10014 评论。无效成交量2013.03.12 07:20:00 pivots (SILVER,M5) SILVER failed ORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 returned code:10014,经纪人评论。无效成交量以下是带来它的代码 ResetLastError(); if(OrderCheck(_request,_check)){ if(!OrderSend(_request,_result)){ Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment); return(false);} else{ if(_result.retcode!=(0||TRADE_RETCODE_PLACED||TRADE_RETCODE_DONE)){ Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," returned code: ",_result.retcode,", broker comments: ",_result.comment);}}} else{ Print(TradeSymbol," failed ",EnumToString(OrderType)," with volume ",DoubleToString(OrderVolume,2),"; err# ",GetLastError()," check code: ",_check.retcode," comments: ",_check.comment); return(false); } Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties www.mql5.com Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5 1234 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
你用什么函数、类/方法来发送/修改你的订单?
设置了MqlTradeRequest 后的OrderSend()
你有没有看到这个(来自OrderSend文档)?
应该注意的是,在下市场订单时,OrderSend()方法操作的成功完成并不总是意味着交易的成功完成。检查 包含交易服务器返回代码 的retcode 值,以及 交易 或 订单 字段 的值 ,这取决于返回 结果 中的操作类型 。
看到这个 代码会 更容易 得到 帮助 。
你看到这个了吗(来自OrderSend文档)?
如果 能看到这段 代码,会 更有帮助 。
我检查返回的结果,只有当它返回TRADE_RETCODE_PLACED或TRADE_RETCODE_DONE时才尝试放置SL和TP。
我检查返回的结果,只有当它返回TRADE_RETCODE_PLACED或TRADE_RETCODE_DONE时才尝试放置SL和TP。
应该注意的是,在下市场订单时,成功完成OrderSend()方法操作并不总是意味着交易成功完成。检查 包含交易服务器返回代码 的retcode 值,以及 取决于返回 结果 中 的 操作类型 的交易 或 订单 字段 的值 。
你必须检查交易单号。
这不是最后一句话,如果你的交易单是0,你对SL/TP的修改无论如何不会执行。还在寻找...
你必须检查交易单号。
这不是最后一句话,如果你的交易单是0,你对SL/TP的修改无论如何不会执行。还在寻找...
我可以做到这一点,但问题是,交易是成功的,头寸也打开了......但当我试图添加SL和TP时,却以无效止损 失败,尽管它们不是无效的。 似乎我必须等待一些事情发生,然后才能发送设置TP和SL的请求......但我真的不知道我应该等待的官方、有记录的事情是什么?
谢谢你的回答:-)
我可以这样做,但问题是,交易成功了,仓位也打开了......但当我试图添加SL和TP时,却以无效止损失败,尽管它们并不无效。 似乎我必须等待一些事情发生,然后才能发送设置TP和SL的请求......但我真的不知道我应该等待的正式、有记录的事情是什么。
谢谢你的回答:-)
我知道。我正在检查 所有的mql5网站以找到回应 :-D
编辑。
在这个网站上 完全 没有 显示 如何把一个 sl / tp 与一个交易执行类型的市场。
实际上我也有同样的问题,但是用PositionOpen来代替OrderSend,我也可以手动完成它。
我知道。我正在检查所有的mql5网站,以找到回应 :-D
编辑。
在这个网站上 完全 没有 显示 如何把一个 sl / tp 与交易执行类型的市场。
其实我也有同样的问题,但是用PositionOpen来代替OrderSend,我也可以手动完成它。
我已经发现了。这是你的EA和交易服务器之间的同步问题。你必须使用事件处理程序OnTradeTransaction()。
由OrderSend()函数发送的服务器上的交易请求的执行结果可以由OnTradeTransaction 处理程序跟踪。应该注意的是,在执行一个交易请求时,OnTradeTransaction处理程序将被多次调用。
例如,当发送一个市场买入订单时,它被处理,为账户创建一个适当的买入订单,然后订单被执行并从未结订单列表中删除,然后它被添加到订单历史中,一个适当的交易被添加到历史中并创建一个新头寸。 OnTradeTransaction函数将为这些事件中的每一个调用。
我已经发现了。这是你的EA和交易服务器之间的同步问题。你必须使用事件处理程序OnTradeTransaction()。
试试吧。)试试吧......明天给我。啊哈,谢谢,我会看看的。)
我的EA在构建778时带来了奇怪的错误。0.1的成交量是正常的,显然不是无效的。
2013.03.12 07:29:57 pivots (SILVER,M5) SILVER failedORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 check code:10014 评论。无效成交量
2013.03.12 07:20:00 pivots (SILVER,M5) SILVER failed ORDER_TYPE_SELL_STOP with volume 0.10; err# 4756 returned code:10014,经纪人评论。无效成交量
以下是带来它的代码