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

 
Alexey Viktorov :

그래서 베타에 계정을 등록하지 못했습니까?

아니요.
 

MT4 Tester에는 GA를 위한 그런 조수가 있었습니다.


이는 최적화 시간을 줄이는 데 크게 도움이 되었습니다. 예를 들어, 저울이 바닥에 놓여 있다면 왜 더 운전합니까? MT5에서는 그렇지 않습니다. 따라서 이러한 합리적인 것들을 Expert Advisor에 구축해야 합니다. 나는 많은 작가들이 이것을 하지 않는다고 생각한다. 따라서 이러한 기능을 MT5 Tester로 이전하는 것이 합리적일 것입니다.


GA용 어시스턴트도 관련이 있습니다. 여기 가장 간단한 것이 있습니다.

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

전문가 자문: 검증

fxsaber , 2020.01.29 15:55

내 Expert Advisors에서 이러한 GA 도우미를 사용하는 것이 좋습니다.

 sinput int inMinTrades = 500 ; // Минимальное количество трейдов (позиций).
sinput int inMaxTrades = 90000 ; // Максимальное количество трейдов (позиций).

double OnTester ()
{
   return ((( TesterStatistics ( STAT_TRADES ) >= inMinTrades) && ( TesterStatistics ( STAT_TRADES ) <= inMaxTrades)) ? TesterStatistics ( STAT_PROFIT ) : 0 );
}

GA가 약한 통계 방향으로 가는 것을 허용하지 않습니다. 결과. 이것은 결과의 품질과 성취 속도를 향상시킵니다. 그리고 검증을 위해 통계에 약한 사람들의 필터도 있습니다. 구절의 의미.


예를 들어 3개월 동안의 계산을 기반으로 재구성할 때 최소 거래 수를 > 100으로 설정합니다. 그렇지 않으면 GA에서 적은 수의 성공(랜덤 ) 거래. 그러한 구절은 추가 거래를 위해 그것을 선택하는 것과 아무 관련이 없어야 합니다.

테스터에게 그런 도우미가 있는 것이 합리적이라고 생각합니다. 또한 계산 비용이 필요하지 않습니다.

 

안녕하세요.

멀티마켓 로봇이 있습니다. 통계적 차익거래, 스프레드를 거래합니다. 로봇은 시장 개요에서 도구를 가져오거나 스프레드 파일(파일 폴더에 있는 프로그램의 루트 디렉토리에 있음)에서 도구를 가져오도록 설계되었습니다. 로봇은 데이터를 분석하고 가장 유망한 도구 쌍을 선택하여 거래합니다.

문제는 MT5 전략 테스터가 그것을 테스트할 수 있느냐는 것입니다. 거래 상품이 평소와 같이 로봇의 입력 매개변수에 나열되지 않고 상품이 시장 개요 또는 파일 폴더에서 가져온 경우 테스터 기능이 의도된 것입니까?

 
Peresvet Timonkin :

안녕하세요.

멀티마켓 로봇이 있습니다. 통계적 차익거래, 스프레드를 거래합니다. 로봇은 시장 개요에서 도구를 가져오거나 스프레드 파일(파일 폴더에 있는 프로그램의 루트 디렉토리에 있음)에서 도구를 가져오도록 설계되었습니다. 로봇은 데이터를 분석하고 가장 유망한 도구 쌍을 선택하여 거래합니다.

문제는 MT5 전략 테스터가 그것을 테스트할 수 있느냐는 것입니다. 거래 상품이 평소와 같이 로봇의 입력 매개변수에 나열되지 않고 상품이 시장 개요 또는 파일 폴더에서 가져온 경우 테스터 기능이 의도된 것입니까?

시장 개요는 코드의 기호를 참조하여 구성됩니다. 테스터의 경우 모든 변형의 통화 목록이 있어야 합니다. 그러나 실생활에서는 문제가 없습니다.

화면에 보이는 것은 최적화를 위한 것입니다.
 
Alexey Viktorov :

시장 개요는 코드의 기호를 참조하여 구성됩니다. 테스터의 경우 모든 변형의 통화 목록이 있어야 합니다. 그러나 실생활에서는 문제가 없습니다.

화면에 보이는 것은 최적화를 위한 것입니다.

나와 같은 설정으로 테스트하면 작동하지 않는다는 것을 올바르게 이해하고 있습니까?

테스터는 이력에서 시장 리뷰의 데이터를 가져올 수 없습니까?

거래 상품이 등록된 파일은 테스터도 사용할 수 없습니까?

방금 테스터에 대한 전체 지침을 다시 읽었습니다. 그것에 대한 단어를 찾지 못했습니다. 다중 링크 전략을 테스트하고 최적화한 다음 은밀하게 최적화할 수 있다고 쓰여졌습니다.

 
Peresvet Timonkin :

나와 같은 설정으로 테스트하면 작동하지 않는다는 것을 올바르게 이해하고 있습니까?

테스터는 기록에서 시장 리뷰의 데이터를 가져올 수 없습니까?

거래 상품이 등록된 파일은 테스터도 사용할 수 없습니까?

방금 테스터에 대한 전체 지침을 다시 읽었습니다. 그것에 대한 단어를 찾지 못했습니다. 다중 링크 전략을 테스트하고 최적화한 다음 은밀하게 최적화할 수 있다고 쓰여졌습니다.

노력하면 모든 것이 가능합니다. 예를 들어, OnInit()에서 필요한 통화의 틱을 요청하여 시장 개요에 추가한 다음 시장 개요로 작업합니다. 그러나 이 경우에는 통화 목록이 있어야 합니다. 그리고 두 가지 옵션을 수행할 수 있습니다. 목록에 따라 작업하고 시장 개요에서 사용할 수 있는 작업에 따라 작업합니다. 따라서 OnInit()에 조건을 넣고 테스터에 작업이 있으면 목록으로만 작업합니다. 시장에 그런 고문이 있습니다.

파일 관련: 물론 가능합니다. 파일 위치만 고려하면 됩니다. 테스터의 경우 테스터의 폴더 또는 모든 터미널에 공통적인 폴더에 있어야 합니다. 또는 리소스로 포함합니다.
 

거래, 자동 거래 시스템 및 거래 전략 테스트에 관한 포럼

MetaTrader 5 전략 테스터: 오류, 버그, 개선 제안

fxsaber , 2020.01.22 23:08

빌드 2300. 핍스 모드에서는 볼륨이 고려됩니다. 감사합니다!


그러나 이 모드에서 InOut 거래의 이익은 잘못 계산됩니다.


일반 모드로 실행하면 이익이 맞습니다.



따라서 Netting에서 핍 모드는 현재 작동하지 않습니다(과대평가된 이익을 가져옴).


2310 - 실제. Netting에서는 pip 모드를 사용할 수 없습니다.

 

2310년, 나는 자주 수정하는 나의 Expert Advisor를 프로파일링할 수 없다는 것을 알게 되었습니다.

테스트를 스케치했습니다.

 input int inFakeRange = 0 ;
sinput int inOffset = 10000 ;

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

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnTick ()
{
   static long Ticket = - 1 ;
  
   if (Ticket == - 1 )
    Ticket = OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask - inOffset * _Point , 0 , 0 , 0 );
   else
    OrderModify(Ticket, Ask - inOffset * _Point , 0 , 0 , 0 );
}

리얼틱 모드에서 문자 그대로 바로 프로파일링 불가능을 재현하기 때문에 모든 것이 매우 느립니다.


그러나 실제 틱에서 단일 패스를 실행하는 경우에도 터미널이 중단됩니다(핍 모드에서도)! 그냥 살인마.


최적화(첫 번째 매개변수로)를 수행하면 잘 되지만 성능에 대한 몇 가지 나쁜 생각이 생깁니다...


ZY Visualizer에서 실행하고 종료를 기다리지 않고 닫으면 터미널이 멈춥니다.

 
fxsaber :

최적화(첫 번째 매개변수로)를 수행하면 잘 되지만 성능에 대한 몇 가지 나쁜 생각이 있습니다...

가상 버전과만 비교할 수 있습니다.

 input int inFakeRange = 0 ;
sinput int inOffset = 10000 ;

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

#define VIRTUAL_TESTER // Запуск в виртуальном торговом окружении
#include <fxsaber\Virtual\Virtual.mqh> // https://www.mql5.com/ru/code/22577

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnTick ()
{
   static long Ticket = - 1 ;
  
   if (Ticket == - 1 )
    Ticket = OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask - inOffset * _Point , 0 , 0 , 0 );
   else
    OrderModify(Ticket, Ask - inOffset * _Point , 0 , 0 , 0 );
}


일반적인 옵션입니다.

optimization finished, total passes 5
optimization done in 1 minutes 04 seconds
shortest pass 0 : 00 : 12.560 , longest pass 0 : 00 : 13.608 , average pass 0 : 00 : 12.808
local 5 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)


가상으로.

optimization finished, total passes 5
optimization done in 0 minutes 06 seconds
shortest pass 0 : 00 : 00.954 , longest pass 0 : 00 : 02.060 , average pass 0 : 00 : 01.231
local 5 tasks ( 100 %), remote 0 tasks ( 0 %), cloud 0 tasks ( 0 %)


테스터는 검사가 없는 pip 모드의 기본 EA에서 13배 더 느립니다! 빌드 2310.

 
fxsaber :

테스터는 검사가 없는 pip 모드의 기본 EA에서 13배 더 느립니다! 빌드 2310.

이러한 Expert Advisor조차도 핍 모드에서 가상보다 2배 이상 느립니다.

 input int inFakeRange = 0 ;
sinput int inOffset = 10000 ;

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

#define Ask SymbolInfoDouble ( _Symbol , SYMBOL_ASK )

void OnTick ()
{
   static long Ticket = - 1 ;
  
   if (Ticket == - 1 )
    Ticket = OrderSend ( _Symbol , OP_BUYLIMIT, 1 , Ask - inOffset * _Point , 0 , 0 , 0 );
}

왜 이런 일이 발생합니까? 전체 EA는 첫 번째 눈금에 BuyLimit을 배치합니다. 그리고 더 이상 아무것도!