如何在MT5中正确使用OrderSend? - 页 2 123456789...13 新评论 Renat Fatkhullin 2016.10.10 20:48 #11 fxsaber: 这已经是一个术语的争论。上文已经详细介绍了这种糟糕的情况。标准库 甚至没有考虑到这一点。没有。 但要继续坚持下去。我不会再解释了。 fxsaber 2016.10.10 20:57 #12 Renat Fatkhullin:没有。 但要继续坚持下去。我不会再解释了。人们在论坛上写到了这一点。而且不止一次。反应就是这样。 prostotrader 2016.10.10 21:00 #13 fxsaber:人们在论坛上写到了这一点。而且不止一次。反应就像这样。 人们不愿意为自己思考,而是希望别人为他们思考......。不幸的是,情况就是如此。 fxsaber 2016.10.10 21:05 #14 prostotrader:你想让我帮你绕过这些误区吗(来自真实账户上使用MT5机器人交易的个人经验)?添加绝对免费 :) 把你自己的也加到储蓄罐里。 关于交易、自动交易系统和交易策略测试的论坛 发送OrderSend()后等待服务器响应 Denis Sartakov, 2016.10.08 15:43 这个函数是同步的,只是历史记录没有随着这个函数的完成而同步更新。我是这样做的,我认为这比修补OnTrade()和其他东西要容易。bool ClosePosition() { if (!PositionSelect(_Symbol)) { return(false); } bool b_Result; b_Result = m_trade.PositionClose(_Symbol,mi_Deviation); if(!b_Result) { Print("The PositionClose() method has failed. Return code=",m_trade.ResultRetcode(), ". Code description: ",m_trade.ResultRetcodeDescription()); return(false); } if(b_Result) { if (m_trade.ResultRetcode() == TRADE_RETCODE_DONE) { while(PositionSelect(_Symbol)) { } Print("The PositionClose() has been successfully executed. Return code=",m_trade.ResultRetcode(), " (",m_trade.ResultRetcodeDescription(),")"); return(true); } if (m_trade.ResultRetcode() != TRADE_RETCODE_DONE) { Print("The PositionClose() failed. Return code=",m_trade.ResultRetcode(), " (",m_trade.ResultRetcodeDescription(),")"); return(false); } } return(false); } //+------------------------------------------------------------------+ fxsaber 2016.10.10 21:06 #15 prostotrader: 人们不愿意为自己思考,而是希望别人为他们思考......。不幸的是,情况就是这样。人们不仅思考,而且还分享他们的解决方案。不幸的是,开发人员对此保持沉默。文件中没有一个关于这个主题的例子。而这是与主要功能。 prostotrader 2016.10.10 21:11 #16 fxsaber:人们不仅思考,而且还分享他们的解决方案。不幸的是,开发人员对此保持沉默。文件中没有一个关于这个主题的例子。而这是与主要的功能。你上面举的例子,不好意思,完全是胡说八道。这不是开始的地方! fxsaber 2016.10.10 21:14 #17 prostotrader:你上面举的例子,不好意思,完全是胡说八道。这不是开始的地方! 我的变体 关于交易、自动交易系统和策略测试的论坛 虫子,虫子,问题 fxsaber, 2016.10.09 09:39 如果发送了OrderSend,你必须记住(这就是潜在的漏洞所在),它已经完成了。然后不考虑当前的历史(交易环境),直到适当的OnTrade消息到来。一旦到了,要记得忘记。当没有REMEMBER时,你可以像MT4一样相信历史。 prostotrader 2016.10.10 21:28 #18 //+------------------------------------------------------------------+ //| OrderSend.mq5 | //| Copyright 2016, MetaQuotes Software Corp. | //| https://www.mql5.com | //+------------------------------------------------------------------+ #property copyright "Copyright 2016, MetaQuotes Software Corp." #property link "https://www.mql5.com" #property version "1.00" // bool is_busy; ulong order_ticket; //+------------------------------------------------------------------+ //| Expert initialization function | //+------------------------------------------------------------------+ int OnInit() { //--- is_busy=false; order_ticket=0; //--- return(INIT_SUCCEEDED); } //+------------------------------------------------------------------+ //| Expert deinitialization function | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { //--- } //+------------------------------------------------------------------+ //| Expert tick function | //+------------------------------------------------------------------+ void OnTick() { //--- if(!is_busy && (order_ticket==0)) //Только при выполнении данного условия мы продолжаем работать(кроме отложенного ордера) { MqlTradeRequest request={0}; MqlTradeResult result={0}; if(PositionSelect(Symbol())) { if(OrderSend(request, result) { if(result.retcode==TRADE_RETCODE_PLACED) //для биржи TRADE_RETCODE_PLACED { if(result.order>0) { is_busy=true; order_ticket=result.order; Print("Order plased, ticket = ",result.order); } else { Print("Internal error!"); } } else { //смотрим причину result.retcode } } else { Print("Order NOT send!"); } } else { } } } //+------------------------------------------------------------------+ //| TradeTransaction function | //+------------------------------------------------------------------+ void OnTradeTransaction(const MqlTradeTransaction& trans, const MqlTradeRequest& request, const MqlTradeResult& result) { //--- В зависимости от того, квкой тип ордера мы устанавливали, смотрим, что с ордером произошло // и только после полного понимания снимаем флаг is_busy=false; order_ticket=0; // вот и все премудрости OrderSend } //+------------------------------------------------------------------+ 把握机会。 fxsaber 2016.10.10 21:29 #19 prostotrader: 使用它。那么它与我上面写的有什么不同呢?一位好心人甚至给我寄来了一本关于这个问题的严肃圣经。人们正在寻找解决方案。这是关于开发商自己甚至在SB中都没有的事实。 prostotrader 2016.10.10 21:35 #20 fxsaber:那么,这与我上面写的有什么不同呢?我甚至有一个好心人给我丢了一本关于这个问题的严肃圣经。人们正在寻找解决方案。这是关于开发商自己甚至在SB中都没有的事实。 如果你不喜欢它,就不要使用它。 123456789...13 新评论 原因: 取消 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
这已经是一个术语的争论。上文已经详细介绍了这种糟糕的情况。标准库 甚至没有考虑到这一点。
没有。
但要继续坚持下去。我不会再解释了。
没有。
但要继续坚持下去。我不会再解释了。
人们在论坛上写到了这一点。而且不止一次。反应就是这样。
人们在论坛上写到了这一点。而且不止一次。反应就像这样。
你想让我帮你绕过这些误区吗(来自真实账户上使用MT5机器人交易的个人经验)?
添加
绝对免费 :)
关于交易、自动交易系统和交易策略测试的论坛
发送OrderSend()后等待服务器响应
Denis Sartakov, 2016.10.08 15:43
这个函数是同步的,只是历史记录没有随着这个函数的完成而同步更新。
我是这样做的,我认为这比修补OnTrade()和其他东西要容易。
人们不愿意为自己思考,而是希望别人为他们思考......。不幸的是,情况就是这样。
人们不仅思考,而且还分享他们的解决方案。不幸的是,开发人员对此保持沉默。
文件中没有一个关于这个主题的例子。而这是与主要功能。
人们不仅思考,而且还分享他们的解决方案。不幸的是,开发人员对此保持沉默。
文件中没有一个关于这个主题的例子。而这是与主要的功能。
你上面举的例子,不好意思,完全是胡说八道。
这不是开始的地方!
你上面举的例子,不好意思,完全是胡说八道。
这不是开始的地方!
关于交易、自动交易系统和策略测试的论坛
虫子,虫子,问题
fxsaber, 2016.10.09 09:39
如果发送了OrderSend,你必须记住(这就是潜在的漏洞所在),它已经完成了。然后不考虑当前的历史(交易环境),直到适当的OnTrade消息到来。一旦到了,要记得忘记。
当没有REMEMBER时,你可以像MT4一样相信历史。
把握机会。
使用它。
那么它与我上面写的有什么不同呢?一位好心人甚至给我寄来了一本关于这个问题的严肃圣经。
人们正在寻找解决方案。这是关于开发商自己甚至在SB中都没有的事实。
那么,这与我上面写的有什么不同呢?我甚至有一个好心人给我丢了一本关于这个问题的严肃圣经。
人们正在寻找解决方案。这是关于开发商自己甚至在SB中都没有的事实。