오류, 버그, 질문 - 페이지 1962

 
Andrey Khatimlianskii :

어떻게 도움이 될까요?

최적화가 통과되었으며 값 범위 가 있는 모든 반복 매개변수를 기록했습니다.

그런 다음 단일 테스트를 실행하고 매개변수 목록을 읽고 화면에 표시합니다. 매개변수 = 값입니다. 동시에, 우리는 을 알지 못하기 때문에 이름으로 입력 변수를 참조할 수 없습니다.

입력 매개변수 bool을 Optim으로 설정하십시오. OnInit에서 Optim == true인 경우 INIT_FAILED를 반환합니다. 동시에 OnTesterPass에서는 FrameInputs 및 ParameterGetRange(또는 전역 클래스 개체의 소멸자)를 통해 실제로 Optimization SET 파일을 작성합니다.

다음으로 Optim = false를 설정합니다. 그리고 또 다른 sinput int Range 매개변수를 가져와서 ParameterSetRange를 통해 0에서 1로 변경하도록 설정합니다. OnTesterInit에서 SET 파일을 읽고 ParameterSetRange에 있는 파일의 모든 매개변수 값을 설정합니다. Range == 0인 OnInit에서는 INIT_FAILED를 반환합니다.

모두! 단일 최적화 대신 가상 최적화가 있으며 단일 최적화보다 빠릅니다. .... 게다가 입력 매개변수 읽기/쓰기도 가능합니다.

 

주제를 벗어난 질문이지만 , MQL5 참고서에 알고리즘 구현에 대한 추가 예제를 점점 더 명확하게 추가하는 것이 가능한지 묻거나 묻겠습니다.

 
fxsaber :

입력 매개변수 bool을 Optim으로 설정하십시오. OnInit에서 Optim == true인 경우 INIT_FAILED를 반환합니다. 동시에 OnTesterPass에서는 FrameInputs 및 ParameterGetRange(또는 전역 클래스 개체의 소멸자)를 통해 실제로 Optimization SET 파일을 작성합니다.

다음으로 Optim = false를 설정합니다. 그리고 또 다른 sinput int Range 매개변수를 가져와서 ParameterSetRange를 통해 0에서 1로 변경하도록 설정합니다. OnTesterInit에서 SET 파일을 읽고 ParameterSetRange에 있는 파일의 모든 매개변수 값을 설정합니다. Range == 0인 OnInit에서는 INIT_FAILED를 반환합니다.

모두! 단일 최적화 대신 가상 최적화가 있으며 단일 최적화보다 빠릅니다. .... 게다가 입력 매개변수 읽기/쓰기도 가능합니다.

자세한 알고리즘 감사합니다.

 
1643년의 컴파일 시간
'TesterBenchmark_Example.mq5'   TesterBenchmark_Example.mq5     1       1
'TesterBenchmark.mqh'   TesterBenchmark.mqh     1       1
0 error(s), 0 warning(s), compile time: 3113 msec                1       1

1648년의 컴파일 시간

'TesterBenchmark_Example.mq5'   TesterBenchmark_Example.mq5     1       1
'TesterBenchmark.mqh'   TesterBenchmark.mqh     1       1
0 error(s), 0 warning(s), compile time: 219 msec                 1       1

뭔가 멋진 반전!

 

컴파일 중 오류

 typedef void (*fn)( int );
struct A {
                 void f() { return   ; } //(*)
         static    void f( int ) {}
};
void g( fn ) {}
void OnStart ()
{
        g( A::f ); //error: 'f' - cannot resolve function address
}

행(*)을 다음으로 바꾸면

                 int   f() { return 0 ; } //(*)
괜찮아요. 차이점이 뭐야?

https://www.mql5.com/en/forum/1111/page1977#comment_5595772 와 유사하지만 다른 오류 코드


Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2017.08.11
  • www.mql5.com
Форум алго-трейдеров MQL5
 

컴파일 중 오류

 template < typename T>
void g( T ) {}
void f() {}
void OnStart ()
{
        g( f ); //error: 'g' - cannot to apply function template
}

그리고 다음과 같이:


template < typename T>
void g( T ) {}
void f() {}
typedef void (*fn)();
void OnStart ()
{
        fn ff = f;
        g( ff ); //нормально
}

좋아. 차이점이 뭐야?
 
A100 :

컴파일 중 오류

그리고 다음과 같이:

좋아. 차이점이 뭐야?

차이가 큽니다. g(f)가 호출되면 컴파일러는 f가 무엇인지 전혀 알지 못합니다. 템플릿만 등록됩니다. 템플릿에 과부하가 걸리면 문제가 없습니다.

 typedef void (*fn)();

template < typename T>
void g( T Value ) { Print ( typename (Value)); }
void f() {}

void g( fn Value ) { Print ( typename (Value)); }
void OnStart ()
{
        g( f ); // void(*fn)()
}
 
fxsaber :
1643년의 컴파일 시간

1648년의 컴파일 시간


뭔가 멋진 반전!

나는 그대로 있었고 컴파일이 가속되지 않았습니다.

 
Vitaly Muzichenko :

나는 그대로 있었고 컴파일이 가속되지 않았습니다.

TesterBenchmark.mqh에서 이전에 느려졌던 것을 사용하지 않을 수도 있습니다.

 
fxsaber :

차이가 큽니다. g(f)가 호출되면 컴파일러는 f가 무엇인지 전혀 알지 못합니다. 템플릿만 등록됩니다. 템플릿에 과부하가 걸리면 문제가 없습니다.

차이가 크면 두 버전이 C++에서 정상적으로 컴파일되는 이유는 무엇입니까?