新人对MQL4和MQL5的任何问题,对算法和代码的帮助和讨论 - 页 1718 1...171117121713171417151716171717181719172017211722172317241725...1953 新评论 Snajper007 2021.11.04 08:52 #17171 // Функция модификации ордеров Sell при локировании void Modif_Count_Lok_Sell() { double Price; for(int pos=0; pos < OrdersTotal(); pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()== Symbol()) { if(OrderType() == OP_SELL) { if(OrderTakeProfit() > 0) { if(CountBuy1() > 0) // функция для пересчёта ордеров Buy { Price = OrderOpenPrice(); double TP3 = NormalizeDouble( 0*Point, Digits); if(OrderTakeProfit() > TP3) { if(!OrderModify( OrderTicket(), OrderOpenPrice(), 0, TP3, 0, 0)) Print("Ошибка модификации ордера на продажу"); } } } } } } } } 帮助理解。这个函数的意义在于,如果有未平仓的卖单 和未平仓的买单,修改卖单的TP。但修改只发生在第一个订单上,然后就出现了订单修改的错误 ERROR 1 Tretyakov Rostyslav 2021.11.04 09:09 #17172 Snajper007 卖单 和未平仓的买单,修改卖单的TP。但修改只发生在第一个订单上,然后出现错误OrderModify ERROR 1。 在这种情况下,TakeProfit被简单地删除 ERROR 1 -ERR_NO_RESULT 没有错误,但结果不明。 Snajper007 2021.11.04 09:12 #17173 MakarFX #:在这种情况下,TakeProfit被简单地删除。ERROR 1 -ERR_NO_RESULT 没有错误,但结果不明。 为什么在这两个命令中,它在一个命令中被删除,而在另一个命令中没有? Tretyakov Rostyslav 2021.11.04 09:18 #17174 Snajper007 #: 为什么在两个命令中,一个被删除,而另一个没有? 只有当OrderTakeProfit()>0 时才会被删除 即交易是在上升期 Snajper007 2021.11.04 09:28 #17175 MakarFX #:只有当OrderTakeProfit()>0 时才会被删除即交易是在上升期 重写了代码。// Функция модификации ордеров Sell при локировании void Modif_Count_Lok_Sell() { double Price; for(int pos=0; pos < OrdersTotal(); pos++) { if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderSymbol()== Symbol()) { if(OrderType() == OP_SELL) { if(CountBuy1() > 0) // функция для пересчёта ордеров Buy { Price = OrderOpenPrice(); double TP3 = NormalizeDouble( 0*Point, Digits); if(!OrderModify( OrderTicket(), OrderOpenPrice(), 0, TP3, 0, 0)) Print("Ошибка модификации ордера на продажу"); } } } } } } 同样的事情。有2个卖单,平均TP。当我们在这两个订单中打开一个买入订单时,TP应该被删除。但它只在第一阶时被删除,第二阶仍是平均的TP。 Nikolay Ivanov 2021.11.04 09:48 #17176 MakarFX #:只有当OrderTakeProfit()>0 时才会被删除即交易是在上升期 如果OrderTakeProfit()>0,这并不意味着该交易处于加仓 状态...这只是意味着该位置有一个TakeProfit... Nikolay Ivanov 2021.11.04 09:50 #17177 Snajper007 #: 重写了代码。 同样的事情。有2个卖单,平均TP。当我们在这两个订单中打开一个买入订单时,TP应该被删除。但它只在第一阶时被删除,第二阶仍是平均的TP。 你只是把这一切都搞混了... 首先,你要突出强调订单 if(OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) 但随后你调用一个函数 CountBuy1() 这可能会改变选择...而这是混乱的。把苍蝇和肉片分开,一切都会好起来的...... Snajper007 2021.11.04 10:07 #17178 Nikolay Ivanov #:你只是把这一切都搞混了...首先,你要强调一个订单但随后你调用函数 这可能会改变选择...然后你会得到一个混乱的局面...把苍蝇和肉片分开,一切都会好起来的...... 谢谢你!删除了这个功能,现在工作正常了。 Tretyakov Rostyslav 2021.11.04 10:13 #17179 Nikolay Ivanov #:如果OrderTakeProfit()>0,并不意味着该交易处于黑色 状态...这只是意味着该位置有一个TakeProfit... 你是对的,我和OrderProfit()混淆了。 Snajper007 2021.11.04 10:54 #17180 另一个问题出现了。这里是平均价格计算功能。//Средний тейкпрофит для ордеров Sell double SR_CENA_SELL() { double sr_cena_sell = 0; if(CountSell() > 1) { double lot_price_Sell = 0; double sum_lot_Sell_1 = 0; for (int pos=0; pos < OrdersTotal(); pos++) if( OrderSelect(pos, SELECT_BY_POS, MODE_TRADES)) { if(OrderMagicNumber() == MN || OrderMagicNumber() == 0) { if(OrderSymbol() == Symbol() && OrderType() == OP_SELL) { lot_price_Sell += NormalizeDouble(OrderOpenPrice()* OrderLots(), Digits); sum_lot_Sell_1 += OrderLots(); sr_cena_sell = NormalizeDouble(lot_price_Sell/sum_lot_Sell_1, Digits); } } } } return(sr_cena_sell); } 出于某种原因,它每次都会重新计算。即第2个卖单 被打开,该函数计算出平均价格。然而,当第三个订单被打开时,这个函数显示了前一个和新的值(我在打印日记中检查了这一点),但结果是前一个值仍然存在。我做错了什么? 1...171117121713171417151716171717181719172017211722172317241725...1953 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
帮助理解。这个函数的意义在于,如果有未平仓的卖单 和未平仓的买单,修改卖单的TP。但修改只发生在第一个订单上,然后就出现了订单修改的错误 ERROR 1
在这种情况下,TakeProfit被简单地删除
ERROR 1 -ERR_NO_RESULT 没有错误,但结果不明。
在这种情况下,TakeProfit被简单地删除。
ERROR 1 -ERR_NO_RESULT 没有错误,但结果不明。
为什么在两个命令中,一个被删除,而另一个没有?
只有当OrderTakeProfit()>0 时才会被删除
即交易是在上升期
只有当OrderTakeProfit()>0 时才会被删除
即交易是在上升期
重写了代码。
同样的事情。有2个卖单,平均TP。当我们在这两个订单中打开一个买入订单时,TP应该被删除。但它只在第一阶时被删除,第二阶仍是平均的TP。只有当OrderTakeProfit()>0 时才会被删除
即交易是在上升期
如果OrderTakeProfit()>0,这并不意味着该交易处于加仓 状态...这只是意味着该位置有一个TakeProfit...
重写了代码。
同样的事情。有2个卖单,平均TP。当我们在这两个订单中打开一个买入订单时,TP应该被删除。但它只在第一阶时被删除,第二阶仍是平均的TP。你只是把这一切都搞混了...
首先,你要突出强调订单
但随后你调用一个函数
这可能会改变选择...而这是混乱的。把苍蝇和肉片分开,一切都会好起来的......
你只是把这一切都搞混了...
首先,你要强调一个订单
但随后你调用函数
这可能会改变选择...然后你会得到一个混乱的局面...把苍蝇和肉片分开,一切都会好起来的......
如果OrderTakeProfit()>0,并不意味着该交易处于黑色 状态...这只是意味着该位置有一个TakeProfit...
另一个问题出现了。这里是平均价格计算功能。
出于某种原因,它每次都会重新计算。即第2个卖单 被打开,该函数计算出平均价格。然而,当第三个订单被打开时,这个函数显示了前一个和新的值(我在打印日记中检查了这一点),但结果是前一个值仍然存在。我做错了什么?