错误、漏洞、问题 - 页 932

 
notused:

由于缺乏空间,几个月来,远程 代理一直定期下降(每周几次)。

和代理日志是干净的或。

而且实际上有足够的空间。

在测试一些重的东西时出现(我的意思是,在一两年的时间里对10个工具进行多视图)。似乎在某些时候,代理人想要创建一个巨型文件(尽管在EA中没有打印或工作文件)。总而言之,它已经变得非常难以工作。

计数:一年的蜱虫历史(M1模式下的所有蜱虫)需要大约3Gb的磁盘空间用于临时文件(观察文件夹"...\tester\Agent-0.0.0.0-xxxxx\temp",当大量工作正在运行时)。乘以代理人的数量。17Gb已经在边缘了(如果你有8个代理,你就已经超过了)。

一个专家顾问的名字很有趣。;)

PS.测试者(743)被无名的限制所 困扰......

[删除]  

请给予帮助。为什么它没有找到交易(错误4755)?

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result) {
  if ((trans.type == TRADE_TRANSACTION_DEAL_ADD) && (trans.symbol == _Symbol)) {
    if (HistoryDealSelect(trans.deal)) {
      long DealMagic;
      if (HistoryDealGetInteger(trans.deal, DEAL_MAGIC, DealMagic)) {
        //
      }
      else Print("HistoryDealGetInteger(" + (string)trans.deal + ", DEAL_MAGIC, DealMagic) = false! GetLastError() = ", GetLastError());
    }
    else Print("HistoryDealSelect(" + (string)trans.deal + ") = false! GetLastError() = ", GetLastError());
  }
}

终端上市。

2013.02.07 10:31:52   instant sell 0.01 EURUSD at 1.35354 (1.35354 / 1.35364 / 1.35354)
2013.02.07 10:31:52   deal #1028 sell 0.01 EURUSD at 1.35354 done (based on order #1028)
2013.02.07 10:31:52   deal performed [#1028 sell 0.01 EURUSD at 1.35354]
2013.02.07 10:31:52   order performed sell 0.01 at 1.35354 [#1028 sell 0.01 EURUSD at 1.35354]
2013.02.07 10:31:52   HistoryDealGetInteger(1028, DEAL_MAGIC, DealMagic) = false! GetLastError() = 4755
 
Ashes:

计算一下:一年的蜱虫历史(所有的蜱虫都在M1上)需要大约3Gb的磁盘空间来存放临时文件(当你遇到繁重的工作时,注意文件夹"...\tester\Agent-0.0.0-xxxxx\temp")。乘以代理人的数量。17Gb已经在边缘了(如果你有8个代理,你就已经超过了)。

一个专家顾问的名字很有趣。;)

谢谢!没想到16GB可能不够用。将把代理人转移到另一个硬盘上--650GB希望足够了。

我以前也看到过这种情况--特别是当我的电脑很忙时。但最近,当计算机被加载时,单个测试运行就会杀死终端(这不是因为空间不足--终端位于有650GB自由空间的地方)。但是,如果你杀死所有可能的进程--一切都很顺利。
 
voix_kas:

请给予帮助。为什么它没有找到交易(错误4755)?

如果代码在策略测试器中被测试,HistoryDealSelect可能有问题。

链接


[删除]  
sion:

如果代码在策略测试器中被测试,HistoryDealSelect可能有问题。

ping


如果我使用带有HistorySelect()的结构,一切都能正常工作。

它与OnTradeTransaction不起作用。这一事件可能发生在有关交易的信息被放入某个数据库之前。尽管文件中明确指出。

TRADE_TRANSACTION_DEAL_ADD -在历史上增加一个交易它是作为订单执行或账户余额交易的结果进行的。

 
voix_kas:

如果我使用HistorySelect(),一切都能正常工作。

OnTradeTransaction不起作用。可能,这个事件发生在关于交易的信息被储存在某个数据库之前。尽管文件中明确指出。

TRADE_TRANSACTION_DEAL_ADD -在历史上增加一个交易它是由于执行一个订单或在账户余额中进行交易而进行的。

这里 我们测试了通过HistorySelect()的工作,同样的请求通过HistoryDealSelect已经失败。在这个例子中,在数据库中放置的速度没有影响。

那么在策略测试器中,你是否检查?在真实的情况下,很有可能,将工作得很好。

[删除]  
sion:

在这里 我们测试了一下,通过HistorySelect()成功了,同样的请求通过HistoryDealSelect已经失败了。在这个例子中,在数据库中放置的速度没有影响。

那么在策略测试器中,你是否检查?在真实的情况下,有可能工作得很好。

我确认,这段代码中的HistorySelect()可以正常工作

void OnTradeTransaction(const MqlTradeTransaction& trans,
                        const MqlTradeRequest& request,
                        const MqlTradeResult& result) {
  if ((trans.type == TRADE_TRANSACTION_DEAL_ADD) && (trans.symbol == _Symbol)) {
    if (HistorySelect(0, TimeTradeServer())) {
      for (int i = 0; i < HistoryDealsTotal(); i++) {
        ulong Ticket = HistoryDealGetTicket(i);
        if (trans.deal == HistoryDealGetInteger(Ticket, DEAL_ORDER)) {
          Print(HistoryDealGetInteger(Ticket, DEAL_MAGIC));
          break;
        }
      }
    }
    else Log("HistorySelect(0, TimeTradeServer() = false! GetLastError() = ", GetLastError());
  }
}

我们还需要等待开发商何时能修复这个明显的错误。

[删除]  
是的,我在策略测试器中 检查。在实时方面没有问题。
 
voix_kas:
是的,我在策略测试器中 检查。实时没有问题。
Tintz.可能会派上用场,可能也没有什么变化。
[删除]  
sion:
尤特兹。它可能会派上用场,可能也没有什么变化。

总之,我找到了一个满足我需要的解决方法。没有OnTradeTransaction。

还有一个关于HistoryDealGetTicket() 函数的问题。

文件中说,它返回交易的票号。然而错误返回的情况并没有明确描述,例如,是否应该检查返回值是否">0"?

HistoryOrderGetTicket() 类似。然而,后一个例子包含了对正数返回值的检查。

在论坛上的搜索显示,人们在订单和交易的情况下都会检查返回值。

最有可能的是,这样的检查应该在例如订单号大于HistoryDealTotal()-1的交易请求的情况下进行。但我很感谢开发者对MQL5语言文档的清晰说明。