任何菜鸟问题,为了不给论坛添乱。专业人士,不要路过。没有你就无处可去 - 6. - 页 408 1...401402403404405406407408409410411412413414415...1178 新评论 [Deleted] 2014.01.05 14:23 #4071 khorosh: 为了评估代码的正确性,你需要确切地知道作者想要得到什么。你的信息不充分。你想得到什么并不十分清楚。如果你想通过开立一个相反的订单来补偿网格关闭后的损失,并期望价格会在最后一个订单的方向通过一些点,补偿过程既取决于这个订单的手数,也取决于价格会在有利的方向通过的距离。这意味着当你计算手数时,你也应该定义价格必须通过的距离来补偿损失。但也许你指的是别的东西。 是的,我应该写得更精确。只是我已经两次完整地阐述了这个功能应该做什么,但没有人回答。再次说明这个函数应该做什么。假设我有一个订单的网格。无论它们是否以相同的步骤打开,这都不重要。一个订单开得比较早,另一个开得比较晚,也就是说,每个仓位都通过了不同的点,有不同的手数。网格将根据某些条件被关闭,我需要计算出所需的LOT,以弥补该网格对TP点产生的损失。为了避免编写两个镜像函数,我在函数中引入了一个otype参数。 然而,我在某处犯了一个错误。请帮助纠正。 double FindRightLot (int otype) // функция поиска лота, необходимого для выхода из просадки после //закрытия сетки ордеров { double Lot=0; double TotalLot=0; for (int i = OrdersTotal()-1; i>0; i--) { if (OrderSelect(i, SELECT_BY_POS,MODE_TRADES)) { if (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic && OrderType() == otype) { if (otype == OP_BUY) { Lot = NormalizeDouble (((OrderOpenPrice()-Bid)*Point)*OrderLots()/TP,2); if (Lot>0) { TotalLot= TotalLot+Lot; } } else if (otype == OP_SELL) { Lot = NormalizeDouble (((Ask-OrderOpenPrice())*Point)*OrderLots()/TP,2); if (Lot>0) { TotalLot= TotalLot+Lot; } } } } } return (TotalLot); } TarasBY 2014.01.05 14:24 #4072 BeerGod: 有什么方法可以正确实现它,使它从零开始关闭?如果可能的话,请提供一行代码。 沿着所需的方向浏览整个列表(订单),并将票值放入一个数组中,然后通过强行删除这个数组来删除这些订单。 Sergey Gridnev 2014.01.05 14:37 #4073 BeerGod: 有什么方法可以正确实现从零开始关闭吗?如果可能的话,请提供一行代码。 只是一个快速修复。 //+------------------------------------------------------------------+ //| Закрыть все ордера | //+------------------------------------------------------------------+ double ClossAllOrders () { for(int i=0; i<OrdersTotal(); ) { if ( !OrderSelect(i, SELECT_BY_POS) ) break; int type = OrderType(); bool result = false; switch(type) { //Close opened long positions case OP_BUY : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_BID), Slippage, Lime ); break; //Close opened short positions case OP_SELL : result = OrderClose( OrderTicket(), OrderLots(), MarketInfo(OrderSymbol(), MODE_ASK), Slippage, Lime ); break; //Close pending orders case OP_BUYLIMIT : case OP_BUYSTOP : case OP_SELLLIMIT : case OP_SELLSTOP : result = OrderDelete( OrderTicket() ); } if(result == false) { Print("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() ); i++; Sleep(500); } } } // End khorosh 2014.01.05 14:44 #4074 Trader7777: 是的,我应该写得更精确。只是我已经两次完整地阐述了这个功能应该做什么,但没有人回答。再次说明这个函数应该做什么。假设我有一个订单的网格。无论它们是否以相同的步骤打开,这都不重要。一个订单开得比较早,另一个开得比较晚,也就是说,每个仓位都通过了不同的点,有不同的手数。网格将根据某些条件被关闭,我需要计算出所需的LOT,以弥补该网格对TP点产生的损失。为了不写两个镜像函数,我在函数中引入了一个otype参数。 但仍然有一个错误的地方。请帮助我解决这个问题。 我将采取不同的路线。首先,我将计算关闭电网的损失。然后就这么简单。损失=下一个订单的利润。通过手数和TP表示订单的利润,并从方程式中找到手数。 [删除] 2014.01.05 14:54 #4075 Contender: 一个快速的手淫。 非常感谢,一切都在正常工作,感谢所有回应的人。 [Deleted] 2014.01.05 15:02 #4076 khorosh: 我将采取不同的路线。首先,我将计算关闭电网的损失。然后就这么简单。损失=下一个订单的利润。通过手数和TP表示订单的利润,并从方程式中找到手数。 网格结束时的损失是以钱还是以点计算? khorosh 2014.01.05 15:04 #4077 Trader7777: 关闭网格的损失是金钱还是点数? 以存款的货币 计算。 [Deleted] 2014.01.05 15:36 #4078 每一对都有不同的点价,这又是怎么回事? khorosh 2014.01.05 15:51 #4079 Trader7777: 每一对都有不同的点价,这又是怎么回事? 你为什么要这样做呢? [删除] 2014.01.05 16:13 #4080 Trader7777: 每一对都有不同的点价,这又是怎么回事? 这里你可以看到它是如何实现的 https://www.mql5.com/ru/code/7275 https://www.mql5.com/ru/forum/113937/page2 https://docs.mql4.com/ru/constants/marketinfo 1...401402403404405406407408409410411412413414415...1178 新评论 您错过了交易机会: 免费交易应用程序 8,000+信号可供复制 探索金融市场的经济新闻 注册 登录 拉丁字符(不带空格) 密码将被发送至该邮箱 发生错误 使用 Google 登录 您同意网站政策和使用条款 如果您没有帐号,请注册 可以使用cookies登录MQL5.com网站。 请在您的浏览器中启用必要的设置,否则您将无法登录。 忘记您的登录名/密码? 使用 Google 登录
为了评估代码的正确性,你需要确切地知道作者想要得到什么。你的信息不充分。你想得到什么并不十分清楚。如果你想通过开立一个相反的订单来补偿网格关闭后的损失,并期望价格会在最后一个订单的方向通过一些点,补偿过程既取决于这个订单的手数,也取决于价格会在有利的方向通过的距离。这意味着当你计算手数时,你也应该定义价格必须通过的距离来补偿损失。但也许你指的是别的东西。
是的,我应该写得更精确。只是我已经两次完整地阐述了这个功能应该做什么,但没有人回答。再次说明这个函数应该做什么。假设我有一个订单的网格。无论它们是否以相同的步骤打开,这都不重要。一个订单开得比较早,另一个开得比较晚,也就是说,每个仓位都通过了不同的点,有不同的手数。网格将根据某些条件被关闭,我需要计算出所需的LOT,以弥补该网格对TP点产生的损失。为了避免编写两个镜像函数,我在函数中引入了一个otype参数。
然而,我在某处犯了一个错误。请帮助纠正。
有什么方法可以正确实现它,使它从零开始关闭?如果可能的话,请提供一行代码。
有什么方法可以正确实现从零开始关闭吗?如果可能的话,请提供一行代码。
只是一个快速修复。
是的,我应该写得更精确。只是我已经两次完整地阐述了这个功能应该做什么,但没有人回答。再次说明这个函数应该做什么。假设我有一个订单的网格。无论它们是否以相同的步骤打开,这都不重要。一个订单开得比较早,另一个开得比较晚,也就是说,每个仓位都通过了不同的点,有不同的手数。网格将根据某些条件被关闭,我需要计算出所需的LOT,以弥补该网格对TP点产生的损失。为了不写两个镜像函数,我在函数中引入了一个otype参数。
但仍然有一个错误的地方。请帮助我解决这个问题。
一个快速的手淫。
非常感谢,一切都在正常工作,感谢所有回应的人。
我将采取不同的路线。首先,我将计算关闭电网的损失。然后就这么简单。损失=下一个订单的利润。通过手数和TP表示订单的利润,并从方程式中找到手数。
网格结束时的损失是以钱还是以点计算?
关闭网格的损失是金钱还是点数?
每一对都有不同的点价,这又是怎么回事?
每一对都有不同的点价,这又是怎么回事?
这里你可以看到它是如何实现的
https://www.mql5.com/ru/code/7275
https://www.mql5.com/ru/forum/113937/page2
https://docs.mql4.com/ru/constants/marketinfo