mql5语言的特点、微妙之处以及技巧 - 页 20

 
安德烈-迪克

也是为了保值。

多年来,我的大脑已经被磨练成了网状。 订单->交易->位置。一个头寸中可能有很多交易(在对冲中只有一个交易,如果我错了请纠正我),你可以通过交易的类型 来判断这个头寸发生了什么。

在套期保值中,当然更容易理解,但更难跟进。当然是这样。

只要市场上存在这个位置,就有一个。但当它被关闭时,会有第二个订单和第二个交易。

ps;我可能错了。见下面的帖子中的ps。

 
Artyom Trishkin:
And the SL trawl ?你将如何确定在SL拖网的正面关闭的内容?

好吧,我还没有考虑到这一点。然后让我们检查一下开仓 的订单的价格和平仓的订单的价格。

虽然我们可能可以不考虑订单,只用交易来操作。

ps;没有...这里有一些问题。毕竟,开仓后的每一次止损或止赢的变化都是一个新的订单和新的交易。显然,这就是我们应该用的工作......

我无法检查,我没有带止损的头寸。只有一些人有采取。

 
阿列克谢-维克多罗夫

当你找到最后一笔交易DEAL_ENTRY_OUT并选择整个历史仓位HistorySelectByPosition时,对于Hedge账户有2笔交易和2个订单,开仓和平仓。发生平仓的基础订单包含ORDER_PRICE_OPEN。然后你要检查仓位类型和用于平仓的订单类型。如果订单类型是相反的,意味着是平仓。相应地,订单价格是我们应该寻找的价格,但有一个小的修正:如果订单利润>0,那么这就是TP的价格,如果它< 0,那么该位置已经在SL上关闭

如果我们依靠对该命令的评论,我不会这样做。

并非如此简单。一个仓位的最后一笔订单可能是平仓的订单,也可能是逆转的订单。

关于SL和TP - 从评论中确定最简单和最可靠的方法。比较SL和TP的价格并不总是正确的,因为SL和TP可以同时在盈利和亏损区。 这在论坛上已经讨论得很激烈了,Sergeev先生对我引用的评论给出了适当的解决方案。

 
安德烈-迪克

这不是那么简单。一个仓位的最后一个订单可以是平仓的订单,也可以是逆转的订单。

而关于SL和TP--从报价中确定最简单和最可靠的方式。比较SL和TP的价格并不总是正确的,因为SL和TP都可以在盈利和亏损区。

我并没有说这很容易。事实上,只有在净账户上,SL和TP才等于SL和TP。而且只在净值账户中。在对冲账户中,要扭转一个头寸,必须用较大的交易量将其关闭。难道不是这样吗?

这个话题很有意思,但由于上述原因,我无法检查。我没有带止损的头寸,特别是跟踪的头寸。

 
阿列克谢-维克多罗夫

逆转头寸的订单不能是采取或停止。

TP和SL不是MT会计系统中的订单,它们是头寸属性。因此,你不能在订单/交易上与SL/TP合作(甚至明智的网站引擎也用链接证实了这一点)。

阿列克谢-维克多罗夫

在对冲账户中,为了扭转一个头寸,你应该用一个更大的量的相反订单来关闭它。难道不是这样吗?

不,不是的。在对冲账户中,头寸不能被逆转,只能被关闭。

Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
Документация по MQL5: Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций
  • www.mql5.com
Стандартные константы, перечисления и структуры / Торговые константы / Свойства позиций - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
安德烈-迪克

在MT会计系统中,TP和SL不是订单,它们是头寸属性。因此,你不能与SL/TP的订单/交易合作(即使是明智的网站引擎也会用链接确认)。

不,不是的。在对冲账户中,头寸不能被逆转,只能被关闭。

但一旦一个头寸被关闭,其属性就不再可用。你只需搜索有关订单和交易的必要信息。
 

关于交易、自动交易系统和策略测试的论坛

MQL5 我如何知道一笔交易是否以止损方式关闭?

fxsaber, 2017.02.14 19:46

票据,这是关闭头寸 的原因,把它推到这里。
#define ORDER_TYPE_TAKEPROFIT (-1)
#define ORDER_TYPE_STOPLOSS   (-2)

int GetOrderType(const ulong OrderTicket)
{
  int OrderType=(int)::HistoryOrderGetInteger(OrderTicket,ORDER_TYPE);

  if((OrderType==ORDER_TYPE_BUY) || (OrderType==ORDER_TYPE_SELL))
    {
     const string OrderComment=HistoryOrderGetString(OrderTicket,ORDER_COMMENT);
     const string OrderPrice=::DoubleToString(::HistoryOrderGetDouble(OrderTicket,ORDER_PRICE_OPEN),
                                              (int)::SymbolInfoInteger(HistoryOrderGetString(OrderTicket,ORDER_SYMBOL),SYMBOL_DIGITS));

     if(OrderComment=="tp "+OrderPrice)
        OrderType=ORDER_TYPE_TAKEPROFIT;
     else if(OrderComment=="sl "+OrderPrice)
        OrderType=ORDER_TYPE_STOPLOSS;
    }

  return(OrderType);
}
 
安德烈-迪克
请给我一个例子。
一个什么的例子?关闭职位 后,该职位的属性 就无法使用?
 
阿列克谢-维克多罗夫
一个什么的例子?一个职位的属性 在关闭后就不能使用了?
一个关于如何确定订单和交易的平仓SL或TP的例子。我举了一个例子,说明你如何从你的评论中确定这一点。
 
Andrey Dik:
例子,你如何确定订单和交易的SL或TP位置关闭。我举了一个例子,说明你如何从你的评论中确定这一点。

我没有做任何事情。即使在mql4中,我发现翻看订单历史也没有用。我还在努力分析,必要时我可能会开始挖掘的方向。由于在任何终端都没有贩运的位置,我根本无法检查它们。

因此,在我的账户上平仓后,只有2个订单和2个交易涉及到该位置。利用它们,我们可以获得一些关于职位的信息。例如,请求是以什么价格打开的,具体是在什么时候打开的。因此,我们可以很容易地确定开仓时 的滑点。

从MT4开始,我就谨慎对待评论,因为经纪公司会根据自己的原因覆盖所有评论。