新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1680 1...167316741675167616771678167916801681168216831684168516861687...1953 新评论 EVGENII SHELIPOV 2021.10.18 19:48 #16791 MakarFX #: 我会试着把它附上,谢谢你。只是一个问题,如何处理卖出订单的问题 Tretyakov Rostyslav 2021.10.18 19:50 #16792 EVGENII SHELIPOV #:我会试着把它附上,谢谢你。只是一个问题,如何处理卖出订单的问题 Semyon Semyonych... double GetBuyOrderSwap() { double order_swap = 0; for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_BUY) { order_swap += OrderSwap(); } } } } return(order_swap); } double GetSellOrderSwap() { double order_swap = 0; for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if (OrderType() == OP_SELL) { order_swap += OrderSwap(); } } } } return(order_swap); } EVGENII SHELIPOV 2021.10.18 19:56 #16793 MakarFX #: Semyon Semyonych... 马卡,为什么要把它塞进一个函数里这么复杂?还是有什么是我不明白的? Nerd Trader 2021.10.18 19:59 #16794 int GetMagic(Order &order) { int magic = 0; if(order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP) if(OrdersTotal() >= 1) for(;;){ magic++; for(int i = OrdersTotal(); i > 0 ; i --) if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES) != false) if(magic != OrderMagicNumber()) return magic; } else if (OrdersTotal() == 0) return (magic + 1); return magic; } 用==替换它也无济于事。在这两种情况下,都没有线程去那里(我用打印检查过)。 Tretyakov Rostyslav 2021.10.18 20:02 #16795 Nerd Trader #: 评注中说,它把majic送到写数组中,不要让它误导,只要majic回到retorn 就可以了。 我不太理解一般的逻辑,我试图将这些功能分开 if(order.cmd == OP_SELLSTOP || order.cmd == OP_BUYSTOP) int order_magic = GetMagic(order); if(order.is_init == true) { int order_send = OrderSend(Symbol(), order.cmd, 0.01, order.open_price, 10, order.sl_price, order.tp_price, "", order_magic, 0, order.arrow_color); if(order_send == -1){ Print(order.error_text," | ",GetLastError()," db_last.third ",db_last.third, " | db_last.size_open_to_low ",db_last.size_open_to_low," | order.sl_price: ", order.sl_price," | order.cmd ",order.cmd); ResetLastError(); return; } } //+--- int GetMagic(Order &order) { int magic = 0; for(int i = OrdersTotal(); i > 0 ; i --) { if (OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(magic == OrderMagicNumber()) magic+=1; else magic=0; } } return (magic); } Tretyakov Rostyslav 2021.10.18 20:05 #16796 EVGENII SHELIPOV #:马卡,为什么要把它塞进一个函数里这么复杂?还是有什么是我不明白的? double GetOrderSwap(int ot=-1)// 0-Buy; 1-Sell { double order_swap = 0; for(int i = OrdersTotal()-1; i>=0; i--) { if(OrderSelect(i, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol() == Symbol() && OrderMagicNumber() == Magic) { if(OrderType()==ot||ot<0) { order_swap += OrderSwap(); } } } } return(order_swap); } EVGENII SHELIPOV 2021.10.18 20:11 #16797 MakarFX #: 马卡尔,你对我来说是个孩子。 谢谢你,Makar,我稍稍改变了一下功能,现在可以用了。 Nerd Trader 2021.10.18 20:20 #16798 MakarFX #:我不太明白一般的逻辑,我试图将这些功能分开 现在,GetMagic应该在发送待定订单的时刻生成一个独特的魔法,并通过retorn返回它。在你的版本中,只有一个循环,所以当订单完成后,无论如何都会执行else,而magic == OrderMagicNumber() 将永远为真。我想要magic != OrderMagicNumber(),当它不是真的时候,这意味着magic是唯一的,它在第一个for(;;)中被自己递增。 Tretyakov Rostyslav 2021.10.18 20:23 #16799 Nerd Trader #: 检查你的个人信息。 Denis Mironov 2021.10.18 20:36 #16800 你好,我面临以下问题:EA开了一个挂单,但终端没有跟踪它,它也没有出现在交易历史中。如果有人遇到过这样的问题,请告知。 1...167316741675167616771678167916801681168216831684168516861687...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
我会试着把它附上,谢谢你。只是一个问题,如何处理卖出订单的问题
我会试着把它附上,谢谢你。只是一个问题,如何处理卖出订单的问题
Semyon Semyonych...
马卡,为什么要把它塞进一个函数里这么复杂?还是有什么是我不明白的?
评注中说,它把majic送到写数组中,不要让它误导,只要majic回到retorn 就可以了。
我不太理解一般的逻辑,我试图将这些功能分开
马卡,为什么要把它塞进一个函数里这么复杂?还是有什么是我不明白的?
马卡尔,你对我来说是个孩子。
谢谢你,Makar,我稍稍改变了一下功能,现在可以用了。
我不太明白一般的逻辑,我试图将这些功能分开
检查你的个人信息。