MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안 - 페이지 41

 
Slava :
그리고 거래가 시작되면 다른 상품이 로드됩니다 - EURUSD

아니요, 로드되지 않습니다. 나는 시각화 도구를 보았고 모든 것이 정확합니다. 거래 중 하나의 기호입니다.

 
fxsaber :

사용자 정의 기호의 경우 모든 통화는 계정 통화와 동일합니다. 저것들. 모드는 "by pips"와 거의 동일하므로 여백 계산 등을 위해 다른 기호를 연결할 필요가 없습니다.

실제 틱 모드에서 커미션( ForexTimeFXTM-Demo01, EUR, Hedge에서 재현)이 있는 서버에서 첫 번째 거래 작업 후 표준 기호에서 추가 기호가 연결됩니다. 물론 모든 것이 원래보다 훨씬 느린 것으로 간주됩니다.


커미션이 없는 MQ-Demo에서는(메인 데모 서버에서 커미션 정확성 테스트를 수행할 수 없기 때문에 이것은 잘못된 것입니다) 모든 것이 올바르게 작동합니다.


이 문제를 재현할 수 있습니까?

이 버그로 인해 커미션이 필요한 경우 최적화 중에 강력한 브레이크가 필요합니다.

 

이 슬라이더에 위치 번호를 표시할 수 있습니까?

슬라이더를 클릭하고 LEFT/RIGHT 키보드 키를 사용하여 속도를 변경합니다. 때로는 끝에서 두 번째 속도가 필요합니다. 슬라이더가 현재 정확히 어떤 위치에 있는지 시각적으로 볼 수 없습니다. 그리고 마지막 속도를 선택하는 것은 매우 쉽습니다.

글쎄, 그것이 선택되면 이것은 Visualizer의 중단입니다. 그리고 모든 결과를 휴지통에 버릴 수 있습니다. 화면에서와 같이 속도를 높이는 디지털 도움말이 유용할 것입니다.


추신 거래 작업 을하지 않으면 Visualizer의 최대 속도가 정지되지 않는 것으로 나타났습니다. 거의 데드 행(dead hang)이 거래 작업과 관련되어 있음이 밝혀졌습니다.

 

MT5 테스터가 이전에 사용했던 경쟁 테스터와 다른 백테스트 결과를 보여주는 이유를 이해하지 못하는 사람들이 있습니다.

아래는 이를 재현한 것입니다.


테스터의 MQ-Demo, EUR, Hedge 에서 이러한 Expert Advisor를 설치하고 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 테스터에서 처음 거래했을 때, 두 번째로 제3자 테스터에서 거래했습니다.


보고서를 비교합니다. 여기 그들은 한 장의 사진에 있습니다 (상단 - 일반 MT5-Tester, 하단 - 타사 사진).



결과가 상당히 다르다는 것을 분명히 알 수 있습니다. 열고 닫는 시간과 가격이 일치하지 않습니다. 일반적으로 모든 사람이 오류가 있는 위치를 스스로 결정할 수 있습니다.


ZY 바이패스가 그려졌습니다 .

 
fxsaber :

결과가 상당히 다르다는 것을 분명히 알 수 있습니다. 열고 닫는 시간과 가격이 일치하지 않습니다. 일반적으로 모든 사람이 오류가 있는 위치를 스스로 결정할 수 있습니다.

MT5가 2.6초 만에 한계에 도달한 이유는 무엇입니까? 설치 직후 가격이 다른 방향으로 갔습니까? 아니면 진드기가 없었습니까?

 
Andrey Khatimlianskii :

MT5가 2.6초 만에 한계에 도달한 이유는 무엇입니까? 설치 직후 가격이 다른 방향으로 갔습니까? 아니면 진드기가 없었습니까?

한계를 만족하는 다음 틱은 그런 시간 이후였습니다. 물론 테스터에서 현재 가격 으로 지정가 주문을 설정하고 실행하지 않을 수 있습니다. 예를 들어 극한으로 한계를 설정합니다.

 
fxsaber :

한계를 만족하는 다음 틱은 그런 시간 이후였습니다. 물론 테스터에서 현재 가격 으로 지정가 주문을 설정하고 실행하지 않을 수 있습니다. 예를 들어 극한으로 한계를 설정합니다.

당신은 당신이 말하는 것을 지정합니다: 외환, 증권 거래소, rann?

외환에는 지정가 주문이 없으며 있을 수 없습니다.

 
Sergey Chalyshev :

당신은 당신이 말하는 것을 지정합니다: 외환, 증권 거래소, rann?

테스터에 관한 것입니다.

 
fxsaber :

테스터에 관한 것입니다.

테스터는 주식 및 외환 계정에서 다르게 작동합니다.
 
Sergey Chalyshev :
테스터는 주식 및 외환 계정에서 다르게 작동합니다.

모든 캐릭터에 대한 플레이 지침을 사용할 수 있습니다. 질문이 있습니다. 그냥 실행하십시오.