错误、漏洞、问题 - 页 2153

 
在《优化师日志》中,有一个俄文 条目
2018.03.03 15:48:04.722 Tester  Вы можете ускорить оптимизацию в сотни раз с помощью MQL5 Cloud Network
 
Andrii Djola:

我如何知道外汇符号交易的关闭时间?

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

mql5语言的特点、技巧和窍门

fxsaber, 2017.02.25 16:39

ENUM_DAY_OF_WEEK GetDayOfWeek( const datetime time )
{
  MqlDateTime sTime = {0};

  ::TimeToStruct(time, sTime);

  return((ENUM_DAY_OF_WEEK)sTime.day_of_week);
}

// true - находимся в торговой сессии
bool SessionTrade( const string Symb )
{
  datetime TimeNow = ::TimeTradeServer();

  const ENUM_DAY_OF_WEEK DayOfWeek = GetDayOfWeek(TimeNow);

  TimeNow %= 24 * 60 * 60;

  bool Res = false;
  datetime From, To;

  for (int i = 0; (!Res) && ::SymbolInfoSessionTrade(Symb, DayOfWeek, i, From, To); i++)
    Res = ((From <= TimeNow) && (TimeNow < To));

  return(Res);
}

// Возвращает true, если символ торгуемый. Иначе - false.
bool SymbolTrade( const string Symb )
{
  MqlTick Tick;

  return(::SymbolInfoTick(Symb, Tick) ? ((Tick.bid != 0) && (Tick.ask != 0) && SessionTrade(Symb) /* &&
         ((ENUM_SYMBOL_TRADE_MODE)::SymbolInfoInteger(Symb, SYMBOL_TRADE_MODE) == SYMBOL_TRADE_MODE_FULL) */
) : false);
}

使用

if (OrderCheck(Request, CheckResult) && SymbolTrade(Request.symbol))
  OrderSend(Request, Result);
 
fxsaber:

自定义字符的一个非常不愉快的错误。自定义字符的勾选历史 可以完全消失。

有几十个小时的优化,对自定义字符的真实刻度进行了优化。没有人靠近电脑,什么也没做。

经过15个小时的优化,来看看结果。在任何运行中使用菜单项 "运行单个测试 "是不可能的--测试器会立即开始和结束。

该日志是

2018.03.03 15:48:04.696 Tester  file cache used 3010 times
2018.03.03 15:48:04.698 Tester  optimization finished, total passes 352000
2018.03.03 15:48:04.708 Statistics      optimization done in 41 hours 32 minutes 37 seconds
2018.03.03 15:48:04.708 Statistics      local 348990 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2018.03.03 15:48:04.708 Core 1  connection closed
2018.03.03 15:48:04.709 Core 2  connection closed
2018.03.03 15:48:04.710 Core 3  connection closed
2018.03.03 15:48:04.710 Core 4  connection closed
2018.03.03 15:48:04.711 Core 5  connection closed
2018.03.03 15:48:04.711 Core 6  connection closed
2018.03.03 15:48:04.712 Core 7  connection closed
2018.03.03 15:48:04.714 Core 8  connection closed
2018.03.03 15:48:04.716 Tester  348990 records written to file cache C:\Program Files\Alpari Limited MT5\tester\cache\Test.TESTER_EURUSD.M1.4.xml
2018.03.03 15:48:04.722 Tester  Вы можете ускорить оптимизацию в сотни раз с помощью MQL5 Cloud Network
2018.03.04 08:26:30.933 Tester  single pass 297022 started
2018.03.04 08:26:31.000 Tester  TESTER_EURUSD: history data begins from 2018.02.06 00:00
2018.03.04 08:27:36.409 Tester  single pass 297022 started
2018.03.04 08:27:36.491 Tester  TESTER_EURUSD: history data begins from 2018.02.06 00:00
2018.03.04 14:05:10.940 Tester  single pass 297022 started
2018.03.04 14:05:11.007 Tester  TESTER_EURUSD: history data begins from 2018.02.06 00:00

发现所有自定义字符的刻度线都已被删除。

 
优化后,这个文本文件
2018.03.03 15:48:04.716 Tester  348990 records written to file cache C:\Program Files\Alpari Limited MT5\tester\cache\Test.TESTER_EURUSD.M1.4.xml
占用了1GB。7z将其压缩了100倍。为什么采用如此低效的方式来存储缓存?
 

如果你使用XML导出

350,000个通行证被写入一个320MB的XML文件中。出于某种原因,这将自动打开XML文件。我有记事本试图这样做,在阅读这种怪物时挂掉了。请事先警告,在选择XML菜单时,文件的 大致尺寸 是多少,以及进一步打开时可能会有什么后果。

 

编译时出错

还没有可以选择的代码片断

 
fxsaber:

如果你使用XML导出

350,000个通行证被写入一个320MB的XML文件中。出于某种原因,这将自动打开XML文件。我有记事本试图这样做,在阅读这种怪物时挂掉了。请在选择XML-菜单时,事先警告文件的大致大小,以及进一步打开文件时的后果是什么。

我同意,但没有必要警告,有必要禁止打开文件,由用户决定如何打开。

 

编译时出错

template<typename T>
class A { T t; };
void OnStart() { A<void *> a; } //Error: '<' - cannot to apply function template

否则。

template<typename T>
class A { T t; };
void OnStart() { A<void *> a; }
class B {};

这很好。这有什么区别呢?

 

编译错误

template<typename T>
struct A { T    *t; };
struct B { void *b; };
void OnStart()
{
        A<void> a; //Error: 'void' - expression of 'void' type is illegal
        B       b; //номально
} 
 
fxsaber:

在几十个小时里,对自定义字符的真实刻度进行了优化。没有人走到电脑前,什么也不做。

经过15个小时的优化,我来到这里看到了结果。在任何通道上使用菜单项 "运行单个测试 "是不可能的--测试器会立即开始和结束。

该日志是

发现所有自定义符号的刻度线都被删除。

可重复使用。需要运行Tester/Optimizer。完成后等待几个小时。我有整整10个小时后,所有的自定义字符 符号都被删除。