MetaTrader 5策略测试器:缺陷,缺陷,改进建议 - 页 41

 
Slava:
而当交易开始时,它将加载另一个符号--欧元兑美元

不,它无法加载。在可视化器中查看,一切都很正确--交易中的一个符号。

 
fxsaber:

自定义符号的所有货币都等于账户货币。即:模式几乎类似于 "按点",不需要连接其他符号来计算保证金,等等。

在有佣金的服务器上(在ForexTimeFXTM-Demo01 上重现,欧元,对冲),在第一次交易 后,以真实点数的模式连接了另一个标准的符号。当然,一切都比它应该的速度慢得多。


一切都在MQ-Demo上正常工作,在那里没有佣金(这一点不正确,因为佣金的正确性测试没有在主演示服务器上进行)。


这个问题是否正在重现?

由于这个错误,如果需要委托,优化的速度会严重减慢。

 

是否可以在这个滑块上显示位置号?

我点击滑块,用LEFT/RIGHT键盘键来改变速度。有时需要倒数第二的速度。你无法直观地看到滑块此刻的确切位置。而且,选择最后的速度是非常容易的。

一旦选择了它,查看器就冻结了。而且你可以把所有的结果都扔掉。如果有一个像屏幕上那样的数字速度辅助工具就更好了。


ZS 事实证明,如果你不做交易,"展示台 "的最大速度不会导致挂起。事实证明,几乎死亡的盘旋是由于交易操作。

 

有一些人不理解为什么MT5测试器显示的回测结果与以前使用的竞争性测试器不同。

下面是这段话的复制品。


MQ-Demo、EUR、Hedge 测试器中,我们把这个EA和启用DLL(我们需要它在浏览器中自动打开HTML报告)。

#include <MT4Orders.mqh> // https://www.mql5.com/ru/code/16006

#define  VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#define  VIRTUAL_LIMITS_TP_SLIPPAGE // Лимитники и TP исполняются по первой цене акцепта - положительные проскальзывания
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#define  REPORT_TESTER             // В тестере будут автоматически записываться отчеты
//#define REPORT_TESTER_INPUTS      // В отчете одиночного прохода будут видны входные параметры советника - требует разрешения DLL.
#define  REPORT_BROWSER            // Создание отчета с запуском браузера - требует разрешения DLL.
#include <Report.mqh> // https://www.mql5.com/ru/code/18801

int OnInit()
{
  // Если стоп/фриз-уровень не нулевой - выходим.
  return(!MQLInfoInteger(MQL_TESTER) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_STOPS_LEVEL) ||
         SymbolInfoInteger(_Symbol, SYMBOL_TRADE_FREEZE_LEVEL));
}

void OnTick()
{
  static bool FirstRun = true;
  
  if (FirstRun)
  {
    MqlTick Tick;
    
    if (SymbolInfoTick(_Symbol, Tick) && Tick.bid && Tick.ask/* && Tick.last*/)
    {
      // Сформировали комментарий для ордера: время и цена текущего тика.
      const string comment = TimeToString(Tick.time, TIME_SECONDS) + "." + IntegerToString(Tick.time_msc % 1000, 3, '0') + " " + 
                             DoubleToString(Tick.bid, _Digits) + "/" + DoubleToString(Tick.ask, _Digits);
                             
      OrderSend(_Symbol, OP_BUYLIMIT, 1, Tick.ask, 0, 0, 0, comment); // Выставляем BuyLimit по текущей цене

      FirstRun = false;
    }  
  }    
  else if (!OrdersTotal()) // Если нет открытых ордеров - выходим.
    TesterStop();
  
  if (OrderSelect(0, SELECT_BY_POS) && (OrderType() <= OP_SELL)) // Выставляем TP позиции по текущей цене
    OrderModify(OrderTicket(), OrderOpenPrice(), OrderStopLoss(), OrderClosePrice(), 0);  
}


在策略测试器的设置选项卡中,按CTRL+V查看这些行。

[Tester]
Symbol=EURUSD
Period=M1
Optimization=0
Model=4
FromDate=2019.12.13
ToDate=2019.12.14
ForwardMode=0
Deposit=100000
Currency=EUR
ProfitInPips=1
Leverage=100
ExecutionMode=0
OptimizationCriterion=6
Visual=0
[TesterInputs]
VirtualTester=false
ReverseDeals=false
Report=true


运行。浏览器将弹出一个报告。

然后设置VirtualTester=true 并再次运行,在浏览器中又得到一份报告。


第一次,我们在内置的MT5策略测试器中进行交易,第二次,我们在第三方测试器中进行交易。


让我们来比较一下这些报告。它们在一张图片中(上面是标准的MT5测试仪,下面是第三方的)。



可以清楚地看到,结果是非常不同的。开盘和收盘在时间和价格上并不一致。一般来说,每个人都可以自己决定错误在哪里。


SZZ 解决办法已经 出来了。

 
fxsaber:

你可以清楚地看到,结果是相当不同的。开放和关闭时间和价格不一致。总而言之,每个人都可以自己决定错误在哪里。

为什么MT5在2.6秒后才执行限制?设置后,价格是否立即转移到另一边?还是没有虱子?

 
Andrey Khatimlianskii:

为什么MT5在2.6秒后才执行限制?设定后,价格是否立即向另一边移动?或者是没有虱子?

下一次打勾满足极限是在那个时间之后。当然,在测试器中,有可能在当前的价格 上设置一个限制,但没有得到执行。例如,你可以在一个极值处设置一个限制。

 
fxsaber:

下一次打勾满足限制器是在这样的时间之后。当然,在测试器中,有可能在当前的价格 上设置一个限制,但没有得到执行。例如,可以在一个极值处设置一个极限。

你是否说明我们正在谈论的是什么:外汇、交易所、兰恩?

外汇中没有限价单,也不可能有。

 
Sergey Chalyshev:

你是否说明我们正在谈论的是什么:外汇、证券交易所、兰恩?

我们正在谈论的是泰斯特。

 
fxsaber:

这是关于测试者的问题。

测试器在交易所和外汇账户中的工作方式不同。
 
Sergey Chalyshev:
测试器在股票和外汇账户上的工作方式不同。

在任何角色上都有播放的说明。任何问题--只要运行它。