错误、漏洞、问题 - 页 659

 
antt:
哪个接入点?
塞浦路斯。
 

情况是这样的。例如,周五有开放的职位。我们设置止损止盈。不等交易时段结束,我们就离开这些头寸,禁止通信,并让电脑进入睡眠状态(休眠模式)。我们在第二天开工。互联网连接已经建立。与服务器有连接。星期六。市场已经关闭。我们可以看到,这些头寸已经被平仓,有些被止损,有些被止盈。这些交易可以在交易终端历史 标签中看到。

我们要求提供过去三次交易的历史。

   datetime Start=0;
//---
   if(!HistorySelect(Start,TimeCurrent())) // Загрузим историю сделок
     {
      Print("Ошибка при загрузке истории!"); return;
     }
   else
     {
      ulong ticket=0;
      datetime time=0;
      string symbol="",comment="";
      //---
      int total_deals=HistoryDealsTotal();
      //---
      for(int d=total_deals-1; d>=total_deals-3; d--)
        {
         if((ticket=HistoryDealGetTicket(d))>0) // Если сделка выбрана
           {
            symbol=HistoryDealGetString(ticket,DEAL_SYMBOL);
            comment=HistoryDealGetString(ticket,DEAL_COMMENT);
            time=(datetime)HistoryDealGetInteger(ticket,DEAL_TIME);
            //---
            Print("<-- symbol: ",symbol,"; comment: ",comment,"; time: ",time," -->");
           }
        }
     }

而我们看到,历史并不相符。也就是说,我们可以在终端看到它,但我们不能以编程方式获得它。

//---

这是一个错误,还是这样设计的,现在只有在市场开盘时才能通过程序得到这些交易?

P.S. 我也试过这种方式,但没有帮助。

#define Milliseconds_Ahead 200
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }
 

tol64:

...

P.S. 我也试过,没有用。

找到了一条出路。在市场观察 窗口,你可以看到退出时间。就是说,最后一次与服务器有连接,并且打勾到达的时间(最后打勾时间)。

就是说,在我的情况下,18:43:30

事实证明,仍然使用这个功能.....:

#define Milliseconds_Ahead 10000
//---
datetime TimeCurrentAhead()
  {
   return(TimeCurrent()+Milliseconds_Ahead);
  }

......你可以解决这个问题,但你必须以明显的幅度提出要求。或者你可以不用这个拐杖,永远忘记它,在做历史请求时使用TimeLocal()函数,如果它是实时使用的。在测试器中,使用TimeCurrent()或TimeCurrentAhead()。类似这样的事情。

datetime ChoiceTimeFunction()
  {
   if(NotTest())
     { return(TimeLocal()); }
   else
     { return(TimeCurrent()+Milliseconds_Ahead); }
//---
   return(TimeLocal());
  }

那么这一点应该在帮助或其他方面有所涉及...

 

有可能恢复终端中被删除的图形。

打开删除

打开一个要恢复的已删除图表的子菜单。如果在终端设置中勾选了 "保存已删除的窗口以便重新打开",删除的图表将被保存。 所有被删除的图表模板都保存/Profiles/Deleted目录中 当这个命令被执行时,这些模板被访问并打开相应的图表。任何被删除的图表模板都可以通过该菜单中的相应命令来删除。

情况是这样的。专家顾问挂在图表上,其信息面板 被显示出来。在OnDeinit()函数中,我指定,如果图表被关闭,信息面板应该被删除,以便保存模板,以便在没有对象的情况下恢复。我关闭了图表。使用"打开已删除"选项,我恢复了它,但它是带着对象恢复的,而且不正确(有些在那里,有些不在)。专家顾问在初始化后恢复了一切。它留下了令人不快的残留物和一种粗制滥造的感觉。我是从专家顾问用户的角度来估计的,而不是从终端的角度。在任何其他的去初始化事件中都能正常工作。我的理解是,模板保存发生在去初始化之前,因为在去初始化期间,对象仍然被删除,但它们有时间被保存在模板中。

 

问题就在这里...

据我所知,终端 "注意到 "服务器上的额外历史和本地历史中的某种 "空白",并开始疯狂地自动下载以填补这些空白。当然,这一切都很好,但是......。

有这样一种现象,即非标准的时间框架,其历史似乎不是从任何地方下载的,而是由终端自动 "在头脑中 "建立的。以下是我注意到的情况。如果注意到历史上的 "空白 "和自动下载一切正常,那么重建已建好的、然后被损坏的(无论是在磁盘上还是在内存中)非标准时间段的历史的情况就真的不存在了。好吧,我的终端已经下载了所有的历史记录,然后我跳过了所有的时间段,发现有人在H2H3 上偷了整个最近的历史段,而终端既没有下载也没有在本地重建。这有助于卸载终端并手动删除C:\Program Files\MetaTrader 5\Bases\MetaQuotes-Demo\history\NZDUSD\cache 中适当时间段的文件,进一步启动终端,移动到H2H3,等待它从头开始正确重建其历史。

显然,我们希望有一个更聪明的终端,在任何时间段都能 "感觉 "到这些被咬的片段,包括非标准的片段,并立即尝试将它们填满。

---------------

附录:虽然,说实话,终端根本看不到任何东西。我已经坐了一年的时间,有一条历史记录的曲线,实际上是从1999年的MetaQuotes开始的,而我的时间框架是在2009年,因为某些原因--结果呢?那些自动下载在哪里? 我有足够的空间来下载它们,但直到今天都没有下载,直到我卸载并重新安装了所有东西(我之前也做了同样的事情,但没有效果)。当然,这甚至不是恢复的问题,而是由终端从头开始全面下载所有历史。好吧,至少这就是面包和黄油。

在这方面,我想给所有MQL程序员一个重要的警告,他们调试他们的程序,并依靠其他用户消费他们的程序,要警惕历史的可用性,你的产品是为其计算的:在测试期间,不完整的或被更高的时间框架历史取代,处理速度会很好,但它可能发生,你或你的程序用户会从现代计算机100%的CPU负载和 "无尽 "的错误信息中吼叫。

 

'f0_34' - 预期的比较表达式

你能告诉我这个警告是什么意思吗?

 

这类错误再次浮出水面。

问题领域已被确定。服务台中的详细描述。

//---

P.S. 完成了一个现有的请求,有一个类似的问题曾经解决了。过了一会儿,我看到我的个人资料附近有一个通知。我登录了服务台,请求完全消失了。我必须重新做一遍吗?)))

 
tol64:

这类错误再次浮出水面。

问题领域已被确定。服务台中的详细描述。

//---

P.S. 完成了一个现有的请求,有一个类似的问题曾经解决了。过了一会儿,我看到我的个人资料附近有一个通知。我登录了服务台,请求完全消失了。我必须重新做一遍吗?)))

申请和评论已经到位,但由于某些原因,在档案中看不到。

我们一定会处理好这个问题。

 
MetaQuotes:

申请和评论都已到位,但由于某些原因,它们在档案中不可见。

我们一定会研究这个问题。

请解决这个问题,因为我的一些申请也完全消失了,无论是公开的还是封闭的。
 
MetaQuotes:

申请和评论都已到位,但由于某些原因,它们在档案中不可见。

我们一定会研究这个问题。

谢谢你。期待着它,因为有了澄清。问题不是在我指出的地方才开始出现的。现在,发生的区域无处不在。