伟大而可怕的MT4永远(或如何制定过渡策略) - 页 30

 
在MT4中,我不能压缩图表垂直水平的斐波那契看不到的图形被限制在8000点))如何解决?
 

这是在堡垒上做的一件奇怪的事。下面是平仓的主要部分。

  if(Trade.PositionClose(mSymbol))
  {
     // --- Введем задержку пока не получим номер сделки, но не более 2-х секунд
    int cnt = 0;
    ulong deal = 0;
    while(((deal = Trade.ResultDeal()) == 0) && cnt < 20) {Sleep(100); ++cnt;}
    
    if(deal == 0)
    {
      ulong ttOrder = Trade.ResultOrder();
      if(HistoryOrderSelect(ttOrder))
      {
        ENUM_ORDER_STATE state = ENUM_ORDER_STATE(HistoryOrderGetInteger(ttOrder, ORDER_STATE));
        LOG("После закрытия позиции № сделки=0, Order=" + string(ttOrder) + " state=" + EnumToString(state));
      }
      return false;
    }
  }

以下是专家顾问日志的摘录,即在检查ResultDeal()的20次迭代后,它到了交易票据为零的部分。


JL    0    10:08:04.462    e-MultiPattern-0.15 (RTS-9.21,M5)    cStoploss::sortSL12 Дистанция контртренд=0 BID=172690.0, закроем Short
JM   0    10:08:06.695    e-MultiPattern-0.15 (RTS-9.21,M5)     ** 333-cMyTrade::ClosePosition. После закрытия позиции № сделки=0, Order=16868286 state=ORDER_STATE_FILLED

以下是终端日志的摘录。

IG 0 10:08:04.465 交易 '733618': 交易所买入 2 RTS-9.21 at market
KN 0 10:08:04.480 交易 '733618': 接受交易所买入 2 RTS-9.21 在市场
OQ 0 10:08:04.481 交易 '733618': 交易所买入 2 RTS-9.21在市场上放置执行

FG 0 10:08:04.517 交易'733618':订单#16868286买2 / 2 RTS-9.21在市场上做的52。326 ms
JN 0 10:08:04.517 交易 '733618': 交易 #3413752 买入 2 RTS-9.21 at 172780 完成(基于订单 #16868286)。

请告知谁对MT5交易逻辑有很好的了解。在终端的日志中,下单和交易创建发生在一个时刻 -04.517 秒。

但在while循环中的EA从未看到交易票据,并在20次迭代后于06.695 秒退出。为什么结构上有订单票而没有交易票?

如何保证得到一张交易票,尤其是在使用部分平仓的情况下?

 
Vasiliy Pushkaryov 获得交易票据,特别是如果你使用部分关闭?

它不能被轻易解释,因为有很多陷阱。编写了一个解决方案,使用户能够顺利工作。但解析内部实现是为特殊行家准备的。

 
为mt4做一个合适的测试器,几年后mt5就会被遗忘。
 
Dmitry Fedoseev #:

而在所有严肃的问题上......?

这里 的 "幽默 "主题

自下而上的兼容性是对软件的基本要求之一。前一个版本的代码必须被后一个版本充分感知。否则,开发商就会简单地扔掉以前的开发,引入新的开发。通往无名之地的道路。

我绝对同意有必要(首先是对开发人员)将MQL4代码编译成MQL5代码。

 
Vladimir Baskakov #:
为mt4做一个合适的测试器,几年后mt5就会被大家遗忘。

巴斯卡科夫,而女儿使用MT5,臭名昭著的...

 
6个月前我答应给她一个指标,我从来没有做到。
 
fxsaber #:

如果ResultDeal为零,在循环中迭代一百万次后,它仍然是零,因为它是一个不变的参数。

因为所下的市场订单是OrderSend的结果。

这不是很清楚。在MqlTradeResult 结构帮助中,它说

如果平仓返回了一张订单票,但没有订单票,这是不是TRADE_ACTION_PENDING类型的交易?

或者TRADE_ACTION_DEAL和贸易票据可能 "迟到 "而不包括在结构中?

也就是说,通过HistorySelect-功能按顺序搜索交易更好?

 

还有,对不起,这是个痛点。对于开发者来说:不要再把疯狂的、不合理的费用浪费在MT4的维护上,你们已经有一半的高级专业人员在做这个工作了。

构建一次MQL4-MQL5编译器,集中精力做重要的事情。在最终版本中,在你的竞争对手中取得稳定的第一名。

 
Vasiliy Pushkaryov #:

这不是很清楚。在MqlTradeResult 结构的帮助中,写道

如果关闭时返回了一张订单票,但没有交易票--这是不是TRADE_ACTION_PENDING类型的交易?

或者TRADE_ACTION_DEAL和贸易票据可能 "迟到 "而不包括在结构中?

也就是说,通过HistorySelect-function按顺序搜索交易是否更好?

虽然,SB的PositionClose(Symbol)方法指定了交易类型TRADE_ACTION_DEAL。

事实证明,应该有一张贸易票据,但它往往没有。