MTTester.mqh가 다시 업데이트되었습니다. 이번에는 어떤 점이 어려웠는지 알려드리겠습니다.
#include <fxsaber\Benchmark\Benchmark.mqh> // https://www.mql5.com/ko/code/31279#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ko/code/26132constbool Init = EventSetTimer(3);
voidOnTimer()
{
if (MTTESTER::IsReady()) // 시작 버튼을 누를 준비가 된 경우Print(_B(MTTESTER::ClickStart(), 1)); // 시작 버튼을 눌렀는지 여부 및 소요 시간.
}
이 전문가 조언자는 중지되지 않은 경우 3 초마다 시작 버튼을 누릅니다. 나는 그것을 누를 수있었습니다-참, 그렇지 않으면 거짓.
You can add this draft function for reading settings from file to string array. автоматическим торговым системам и тестированию торговых стратегий. Validate умеет запускать последовательно много ini-задайний
테스트에 도움을 주셔서 감사합니다! MTTester.mqh 업데이트가 게시되었습니다.
라이브러리에 감사드립니다.
이 전문가 조언자는 중지되지 않은 경우 3 초마다 시작 버튼을 누릅니다. 나는 그것을 누를 수있었습니다-참, 그렇지 않으면 거짓.
표준 상황.
시작을 눌렀습니다 - 계산이 시작되었습니다.
이 작업에는 약 125ms가 소요됩니다.
드문 일은 아닙니다.
시작을 누르면 즉시 계산이 시작되거나 테스터가 계산을 수행할 수 없다고 보고합니다(예: FromDate >= ToDate).
이 작업은 약 1초 정도 걸립니다. 라이브러리가 변경되지만 버튼을 눌렀을 때 True를 반환합니다.
드문 상황입니다.
시작을 누르지 않았습니다. 이 문제는 터미널을 재부팅해야만 해결할 수 있습니다.
이 상황에 대한 로그가 없습니다. 이러한 상황을 식별하는 데 10초 미만이 소요됩니다. 다음과 같은 경고가 표시됩니다.
거짓 반환 - 버튼을 누르지 않았습니다.
드문 상황입니다.
시작을 누르지 않았습니다. 이 문제는 터미널을 재부팅해야만 해결할 수 있습니다.
원격 WinServer 컴퓨터가 아무런 실패 없이 수백 번의 단일 패스를 계속하고 있었습니다.
이 컴퓨터에 로그인(RDP)하자마자 시작 버튼이 더 이상 클릭되지 않았습니다. 항상 그렇듯이 해결 방법은 터미널을 재부팅하는 것입니다.
이 동작은 컴퓨터에 대한 유사한 로그인과 관련이 있는 것 같습니다. RDP를 통해 수십 번 로그인해도 모든 것이 정상적으로 작동합니다. 그러나 일부 로그인은 테스터에게 치명적입니다.
시작 버그가 발생하는 분들은 머신에 로그인하는 것과 시작 버튼의 관계에 주의를 기울이세요.
우연의 일치인지 아닌지, WinServer는 이 머신에 로그온하는 동안 업데이트를 확인하겠다고 제안했습니다.
좋은 라이브러리
테스트를 위해 프로그래밍 방식으로 전달할 매개변수 설정이 있는 *.set 파일을 지정할 수 있나요?
기본적으로 동일한 설정만 사용되므로 그다지 편리하지 않습니다.
테스트를 위해 프로그래밍 방식으로 전달할 파라미터 설정이 포함된 *.set 파일을 지정할 수 있나요?
예시.
감사합니다.
설정을 \n 문자로 행을 구분하여 한 줄로 전달하는 것이 더 낫나요?
아니면 예제에서와 같이 행 배열로 전달하는 것이 더 낫나요?
그리고 다음에서 수정할 수 있나요?
MTTester 클래스 정적 메서드 Run
static bool Run( const string ExpertName = NULL,
const string Symb = NULL,
const ENUM_TIMEFRAMES period = PERIOD_CURRENT,
const datetime iBeginTime = 0,
const datetime iEndTime = 0 )
.set EA 설정을 지정하는 매개변수 문자열(또는 문자열 배열)을 하나 추가하시겠습니까?
감사합니다.
설정을 \n 문자로 행을 구분하여 한 줄로 전달하는 것이 더 낫나요?
아니면 예제에서처럼 행 배열로 전달하는 것이 더 낫나요?
GetSettings는 테스터에서 CTRL+C입니다.
SetSettings는 테스터에서 CTRL+V입니다.
CTRL+C/V가 작동하는 데이터를 확인하세요.
그리고 다음에서 수정할 수 있는지 여부
MTTester 클래스 정적 메서드 실행
저는 이 메서드를 사용하지 않습니다. 기록으로 남습니다.
이 예제는 필요한 모든 MTTESTER 메서드를 보여줍니다.
테스트를 위해 프로그래밍 방식으로 전달할 파라미터 설정이 포함된 *.set 파일을 지정할 수 있나요?
Validate는 테스터의 전체 ini 파일과 축소된 버전인 테스터용 set 파일로 작동합니다.
많은 ini/set 파일을 실행해야 하는 경우, Validate가 바로 실행합니다. 사용.
Validate는 전체 테스터 이니 파일과 제거된 버전인 테스터용 설정 파일로 작동합니다.
많은 ini/설정 파일을 실행해야 하는 경우 Validate를 사용하면 바로 실행할 수 있습니다. 사용하세요.
감사합니다.
이 댓글에서 세트 파일이 필요한 형식으로 문자열 배열로 로드되는 해결책을 찾았습니다.
https://www.mql5.com/ru/forum/318305/page34#comment_51842356
나는 또한 대체했다
typedef bool (*INITDEINIT)( void );
각 실행의 초기화 및 초기화 해제 시 콜백 호출의 포인터를
를 인터페이스로 대체했습니다.
인터페이스 InitDeInit {
bool RunInit();
bool RunDeInit();
};
구조체와 유사한 클래스의 상속자에서 구현되는
구조체와 유사한 클래스의 상속자에서 구현됩니다.
구조체와 유사한 클래스의 상속자에서 구현되며, 런인트() 메서드에서도 마찬가지입니다.
필요한 도구의 설정 파일을 로드합니다.
typedef bool (*INITDEINIT)( void ); - 이 포인터를 사용하면 어떤 도구가 초기화/비초기화 중인지 알 수 없으므로 메서드에 대한 포인터는 아직 MQL에서 지원하지 않으므로 인터페이스에 대한 포인터를 사용하는 것이 더 좋습니다.
이 접근 방식을 사용하면 MTTester::Run 메서드를 수정할 필요가 없습니다.