错误、漏洞、问题 - 页 1614

 
如果测试器中的SellLimit由于到期或回测完成而被删除,其到期日会错误地等于挂单日期。

如果你通过TRADE_ACTION_MODIFY 设置过期日期,在测试器中不会被触发。

回放
void OnInit()
{
  MqlTradeRequest Request = {0};

  Request.action = TRADE_ACTION_PENDING;
  
  Request.symbol = Symbol();
  Request.volume = 1;
  Request.price = SymbolInfoDouble(Symbol(), SYMBOL_ASK);
  
  Request.type = ORDER_TYPE_SELL_LIMIT;

  MqlTradeResult Result;
  
  if (OrderSend(Request, Result))
  {
    Request.action = TRADE_ACTION_MODIFY;
    Request.order = Result.order;
    
    Request.type_time = ORDER_TIME_SPECIFIED;
    Request.expiration = TimeCurrent() + 10000;
    
    if (OrderSend(Request, Result))
      if (OrderSelect(Request.order))
        Print("SetExpiration = " + (string)(datetime)OrderGetInteger(ORDER_TIME_EXPIRATION)); // установили дату экспирации        
  }
}

void OnDeinit( const int reason )
{  
  if (HistorySelect(0, TimeCurrent()))
  {
    const ulong Ticket = HistoryOrderGetTicket(0);
   
    if (Ticket > 0)
    {
      // Дата экспирации изменилась - стала равна дате установки ордера!
      Print("NowExpiration = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_EXPIRATION));
     
      // При этом ордер по ранее установленной дате экспирации не удалился!     
      Print("DeleteTime = " + (string)(datetime)HistoryOrderGetInteger(Ticket, ORDER_TIME_DONE));
    }
  }
}

 
Andrey Dik:

历史数据占用了相当多的空间(这不是抱怨,而是一种陈述)。我必须使用几个终端,每个终端都收集了数千兆字节的历史记录,而且这些历史记录在测试者和终端文件夹中都是重复的。

我们能否把所有的历史文件放在一个文件夹里,并在终端指定参考文件夹?我们在不同终端之间访问历史记录时不会有问题吗?

我已经试过了。现在我有几个终端,他们的测试人员访问一个带有历史记录的单一文件夹。除了终端的抱怨,如。

2016.07.19 16:39:02.276 Spreads 配置文件打开错误[该进程无法访问该文件,因为它正在被其他进程使用。(32)]

2016.07.19 16:39:02.276 Spreads 配置文件打开错误 [*****symbols\spreads-*********.dat][该进程无法访问该文件,因为它正在被其他进程使用。(32)]

我没有看到操作上有任何问题。耶!...节省了几百G的磁盘空间!

服务台已经警告我,在共享数据访问方面这样做有风险。


 
Andrey Dik:

试过了。我现在有几个终端和他们的测试人员在访问一个单一的历史文件夹。除了终端的抱怨,如。

2016.07.19 16:39:02.276 Spreads 配置文件打开错误[该进程无法访问该文件,因为它正在被其他进程使用。(32)]

2016.07.19 16:39:02.276 Spreads 配置文件打开错误 [*****symbols\spreads-*********.dat][该进程无法访问该文件,因为它正在被其他进程使用。(32)]

我没有看到操作上有任何问题。耶!...节省了几百G的磁盘空间!

服务台已经警告我,在共享数据访问方面这样做有风险。


他们是如何做到的?
 
coderex:
以及你是如何实施的?

我创建了一个名为 "基地 "的单独文件夹,并将其中一个终端的历史记录转移到它。之后,在所有的终端和他们的测试人员中,我把像Junction这样的链接放置到一个共同的文件夹中,而不是带有历史的真实文件夹。

当在一个VPS上使用多个终端时尤其有用,你可以通过选择一个较小的磁盘空间获得真正的节省。

 
我在一个测试器中离线工作。我怎样才能确保日志不被成百上千的条目所堵塞?
2016.07.21 07:48:41.578 MQL5.community  authorization failed

 
标准库是 如何设法避免调用::OrdersTotal()的?
 
fxsaber:
我在一个测试器中离线工作。我怎样才能确保日志不被成百上千的条目所堵塞?

在社区设置中(主菜单--工具--设置--社区标签),删除你的授权数据
 
Slawa:
在社区设置中(主菜单-工具-设置-社区标签),删除你的授权数据。
我从来没有在那里输入过它们。这不是问题的关键。
 

没有任何交易小组吗?或者说,他们属于哪个群体?

 
Vladimir Pastushak:

没有任何交易小组吗?或者说应该把他们放在哪一组?

必须选择公用事业。真的,根本就没有什么类别。