PositionClose
...
Примечание
Успешное окончание работы метода PositionClose(...)
не всегда означает успешное совершение торговой операции.
Необходимо проверять результат выполнения торгового запроса
(код возврата торгового сервера) вызовом метода ResultRetcode().
额外的问题:在传递double <-> long时,是否有任何优雅的方法来保存信息?
所有64个。事实上。不要拘泥于有符号或无符号的类型。
最好的事情是自己去看。那么这个问题就一劳永逸地结束了。
是的,我已经写了,我忘记了类型转换。
并且已经检查了所有的东西。标志并没有丢失。一切都很好。
复制简单结构https://www.mql5.com/ru/docs/basis/types/casting#casting_structure
检查 CTrade类中的 PositionClose 。
我相信它将和你的一样。唯一的结论是,没有其他办法。
但我支持你的请求。我要求开发者考虑这个变体。
增加TRADE_ACTION_CLOSE 操作类型-- 以 当前价格 在其成交量中关闭一个指定符号的头寸。
这将是最理想的!赞成。
对于论坛的其他成员,我将再次简要地概述一下这个问题。
在MQL5现有的交易/订单核算系统和平仓方法中,总是有一个非零的概率,即从市场上关闭的SL/TP头寸将不会真正关闭,相反的头寸将被打开。
市场越接近SL/TP头寸,这个概率就越高,使得关闭SL/TP的市场不可能平仓(因为SL/TP平仓可能发生在发送新的市场订单平仓期间)
现有的解决方案并不令人满意
a) 如果我们在订单关闭前删除SL/TP,首先需要时间,在连接失败的情况下,头寸将留在市场中,没有止损,等等。
b) 等待SL/TP的触发也不是一种选择,因为我们可能需要提前退出。
我理解新的会计制度的引入带来了某些限制,但当为了概念而完全牺牲产品的可用性时,大众不太可能对它感兴趣 :(
亲爱的开发者,你建议用什么来保证退出市场(价格并不重要)?在MQL4中请求平仓时,我可以确定仓位会被关闭,或者专家顾问会得到一个错误代码,并继续尝试。
完成了!在密码中,用L.l=4548887299649496524替换第14行。
............
得分!;)
公平的警告。
***
在手动平仓 时找不到这样的警告,但在交易中,在平仓时有一个计数器......。
对于一个保证平仓的头寸,滑点是否会根据波动率而增加?还是什么?是这样一个 "向管道交易商问好 "吗?
我支持向开发商提出的问题。
沉默,这不是关于滑坡和返回代码检查的问题。
问题是,为了关闭一个头寸,你需要明确发送一个开立新头寸的请求,但方向相反。
交易服务器把这个请求看作是一个新头寸的开仓。它没有经过培训就能理解,我们实际上是想关闭一个现有的头寸。
从净值的角度来看,这有点正确,但这样就不可能保证从市场上用SL/TP平仓。无论这个SL/TP相隔多远,我们都不能确定在我们准备新的订单(平仓)时,价格会赶上我们的SL/TP,并且头寸会自己平仓。而我们的新秩序将锻炼和打开一个相反的位置。
我相信唯一的出路,正如sergeev所建议的,是通过实现一个新的"TRADE_ACTION_CLOSE"操作类型的复选框,教会服务器区分开立新头寸的请求和关闭现有头寸。
但也许开发商有自己的变体?
难道没有人有解决办法吗?
有一些解决方案,但它们并不适合你。例如,根据算法去除SL/TP等......你自己说:"从净值的角度来看 ,这似乎是正确的,但这样就不可能保证从市场上关闭头寸......"。
是的,删除SL/TP是浪费时间,再加上在连接问题的情况下被留在市场上没有停止的风险。
不过,我认为可以增加"TRADE_ACTION_CLOSE",以方便许多在DC工作的用户。[例如,在网状物很重要的情况下,要禁用这种操作?(FORTS, RTS)]。
如果不对用户采取一些措施,许多经纪公司的客户转到MT5是没有意义的。我在编程方面有一些经验,在将一个EA从MQL4移植到MQL5时仍然面临一些困难。但除了这个SL/TP问题和从市场上关闭之外,所有这些问题都以这样或那样的方式得到了解决。
我不想教开发者他们比我更清楚的东西,但我想提的是,为交易所和经纪公司追逐通用产品而损害用户友好,将导致对产品的需求降低,许多人将留在MT4上 :(