라이브러리: 멀티 테스터 - 페이지 41

 
10초 동안 절전 모드로 전환해도 도움이 되지 않습니다. 해당 폴더를 지워야만 문제가 해결됩니다.
 
klycko 절전 모드로 전환해도 도움이 되지 않습니다. 해당 폴더를 지워야만 문제가 해결됩니다.

MQL5\Experts\Examples\MACD\MACD Sample.mq5에 최적화 코드를 게시하세요. 그런 다음 재현을 시도해 볼 수 있습니다. 지금은 건설적인 작업이 거의 없습니다.

 
fxsaber #:

MQL5\Experts\Examples\MACD\MACD Sample.mq5에 최적화 코드를 업로드합니다. 그런 다음 재현을 시도해 볼 수 있습니다. 지금은 건설적인 작업이 거의 없습니다.

감사합니다! 파일을 준비해서 게시해 보겠습니다. 지금은 모든 것이 아직 어수선한 상태입니다.

 
fxsaber #:

MQL5\Experts\Examples\MACD\MACD Sample.mq5에 최적화 코드를 업로드합니다. 그런 다음 재현을 시도해 볼 수 있습니다. 지금은 건설적인 작업이 거의 없습니다.

안녕하세요!

파일을 준비해서 첨부했습니다.

25.03에서 20.05.2024까지의 최적화 기간 M1.

예치금 17000. 레버리지 40. 복잡한 기준의 최대값.


먼저 실험의 순수성을 위해 "C:\사용자\ASUS\앱데이터\로밍\MetaQuotes\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더를 정리해야 합니다.

Nocturne 스크립트는 한 번에 하나의 매개변수씩 실행하여 최적화해야 합니다.

그런 다음 출력합니다:

첫 번째 매개변수: ProfitNow -1478 ParamMax 0.37을 처음으로 출력합니다.

두 번째 매개변수의 경우: 처음으로 ProfitNow -379 ParamMax 30.

세 번째 매개변수의 경우: 처음으로 ProfitNow -379 ParamMax 6.


세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복해서 입력합니다.

세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6 반복

세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복합니다.


이것은 세 번째 매개 변수에 대한 데이터 캐시 중단을 보여줍니다.


이제 "C:\사용자\ASUS\앱데이터\로밍\MetaQuotes\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더를 다시 지워야 합니다.

그리고 반복합니다:


첫 번째 매개변수: ProfitNow -1478 ParamMax 0.37을 처음으로 설정합니다.

두 번째 매개변수의 경우: ProfitNow -379 ParamMax 30을 처음으로 설정합니다.

세 번째 매개변수의 경우: 처음으로 ProfitNow -379 ParamMax 6.


세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복해서 입력합니다.

세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6 반복

세 번째 매개 변수의 경우: ProfitNow -379 ParamMax 6 반복


녹턴 스크립트의 151~154줄에 지시한 대로 모든 내용이 나와 있습니다:

Run(Odinar);

int GLOC = MTTESTER::GetLastOptCache(Bytes); // 옵 파일을 바이트 배열 Bytes로 가져옵니다.

TESTERCACHE<ExpTradeSummary> 캐시;

bool CL = Cache.Load(Bytes); // Bytes 바이트 배열을 Cache에 공급합니다.


물론 제가 작성한 코드에 버그가 있지만 아직 어떻게 고쳐야 할지 모르겠습니다.

하지만 실험적으로 "C:\ 바이츠" 폴더에서 모든 옵트 파일을 수동으로 제거한 후 실행을 실행하면 문제가 해결된다는 것을 발견했습니다.

"C:\사용자\ASUSAppData\로밍\메타쿼트\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더에서 옵 파일을 모두 제거했습니다,

를 지우면 내 코드가 올바르게 작동하고 선택한 매개변수에 대해 최적화를 수행합니다.


이 폴더를 정리하지 않으면 테스터는 (변경되지 않은 동일한 데이터로) 반복 최적화를 수행하지 않고, 이 폴더에서 이미 존재하는

이 폴더에서 이미 존재하는 옵트 파일을 읽습니다. 이는 동일한 최적화를 수동으로 반복적으로 실행할 때 명확하게 확인할 수 있습니다.

실제 최적화는 처음 한 번만 수행된 다음 폴더에서 옵트 파일만 읽는 것을 볼 수 있습니다.

이렇게 반복적으로 읽으면 캐시의 내용이 업데이트되지 않는 것 같고, 이것이 제 코드에서 오류를 일으키는 원인인 것 같습니다.


해당 폴더를 지우면 오류를 해결하는 데 도움이 될 수 있습니다. 물론 이것은 나쁜 해결책이며 캐시에서 올바른 데이터를 복원 할 수 있다면 더 우아 할 것입니다.

하지만 어떻게 해야 할지 모르겠습니다. 지금은 이전 실제 최적화의 데이터가 캐시에 남아 있습니다(폴더에서 다시 읽은 데이터와 일치하지 않음).

안타깝게도 이 폴더는 MQL5에서 금지되어 있기 때문에 FolderClean을 사용하여 스크립트에서 정리할 수 없습니다.

이 폴더는 "샌드박스"에서 벗어나 있으며 전략 테스터에 의해서만 채워집니다.


C++를 사용하여 외부 애드온을 만들고 스크립트에서 실행해야 할 수도 있습니다.


안부, 알렉산더

파일:
 

텍스트에 오류가 있습니다:



안녕하세요!

파일을 준비하여 첨부했습니다.

25.03~20.05.2024 기간 M1에서 최적화.

예치금 17000. 레버리지 40. 복잡한 기준의 최대값.


먼저 실험의 순수성을 위해 "C:\사용자\ASUS\앱데이터\로밍\MetaQuotes\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더를 정리해야 합니다.

Nocturne 스크립트는 한 번에 하나의 매개변수씩 실행하여 최적화해야 합니다.

그런 다음 출력합니다:

첫 번째 매개변수: ProfitNow -1478 ParamMax 0.37을 처음으로 출력합니다.

두 번째 매개변수의 경우: 처음으로 ProfitNow -379 ParamMax 30.

세 번째 매개변수의 경우: 처음으로 ProfitNow -379 ParamMax 6.


첫 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복해서 입력합니다.

두 번째 매개변수의 경우: ProfitNow -379 ParamMax 6 반복

세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복합니다.


이는 세 번째 매개변수에 대한 데이터 캐시가 중단되었음을 보여줍니다.


이제 "C:\사용자\ASUS\앱데이터\로밍\메타쿼트\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더를 다시 지워야 합니다.

그리고 반복합니다:


첫 번째 매개변수: ProfitNow -1478 ParamMax 0.37을 처음으로 설정합니다.

두 번째 매개변수의 경우: ProfitNow -379 ParamMax 30을 처음으로 설정합니다.

세 번째 매개변수의 경우: 처음으로 ProfitNow -379 ParamMax 6.


첫 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복해서 입력합니다.

두 번째 파라미터의 경우: ProfitNow -379 ParamMax 6 반복

세 번째 매개변수의 경우: ProfitNow -379 ParamMax 6을 반복합니다.


녹턴 스크립트의 151~154줄에 지시한 대로 모든 것이 나와 있습니다:

Run(Odinar);

int GLOC = MTTESTER::GetLastOptCache(Bytes); // 옵 파일을 바이트 배열로 가져옵니다.

TESTERCACHE<ExpTradeSummary> 캐시;

bool CL = Cache.Load(Bytes); // Bytes 바이트 배열을 Cache에 공급합니다.


물론 제가 작성한 코드에 버그가 있지만 아직 어떻게 고쳐야 할지 모르겠습니다.

하지만 실험적으로 "C:\ 바이츠" 폴더에서 모든 옵트 파일을 수동으로 제거한 후 실행을 실행하면 문제가 해결된다는 것을 발견했습니다.

"C:\사용자\ASUSAppData\로밍\메타쿼트\터미널\D0E8209F77C8CF37AD8BF550E51FF075\Tester\cache" 폴더에서 옵 파일을 모두 제거했습니다,

를 지우면 내 코드가 올바르게 작동하고 선택한 매개변수에 대해 최적화를 수행합니다.


이 폴더를 정리하지 않으면 테스터는 (변경되지 않은 동일한 데이터로) 반복 최적화를 수행하지 않고, 이 폴더에서 이미 존재하는

이 폴더에서 이미 존재하는 옵트 파일을 읽습니다. 이는 동일한 최적화를 수동으로 반복적으로 실행할 때 명확하게 확인할 수 있습니다.

실제 최적화는 처음 한 번만 수행된 다음 폴더에서 옵트 파일만 읽는 것을 볼 수 있습니다.

이렇게 반복적으로 읽으면 캐시의 내용이 업데이트되지 않는 것 같고, 이것이 제 코드에서 오류를 일으키는 원인인 것 같습니다.


해당 폴더를 지우면 오류를 해결하는 데 도움이 될 수 있습니다. 물론 이것은 나쁜 해결책이며 캐시에서 올바른 데이터를 복원 할 수 있다면 더 우아 할 것입니다.

하지만 어떻게 해야 할지 모르겠습니다. 지금은 이전 실제 최적화의 데이터가 캐시에 남아 있습니다(폴더에서 다시 읽은 데이터와 일치하지 않음).

안타깝게도 이 폴더는 MQL5에서 금지되어 있기 때문에 FolderClean을 사용하여 스크립트에서 정리할 수 없습니다.

이 폴더는 "샌드박스"에서 벗어나 있으며 전략 테스터에 의해서만 채워집니다.


C++를 사용하여 외부 애드온을 만들고 스크립트에서 실행해야 할 수도 있습니다.


안부, 알렉산더

 

녹턴이 매개변수 목록에서 지향하는 대로 로봇을 최적화하여 게시했습니다.

하지만 MQL5\Experts\Examples\MACD\MACD Sample.mq5의 경우 많은 수정이 필요합니다.


그런데 매개변수 입력 int inNum = 0이 필요한 이유는 무엇인가요?

아니면 그냥 아타비즘일까요?

 
fxsaber #:

MQL5\Experts\Examples\MACD\MACD Sample.mq5에 최적화 코드를 업로드합니다. 그런 다음 재현을 시도해 볼 수 있습니다. 지금은 건설적인 작업이 거의 없습니다.

안녕하세요!

Alexander Slavsky의 도움으로 모든 문제를 해결했습니다 (https://www.mql5.com/ko/users/s22aa).

그는 캐시 내용을 삭제하는 코드를 보냈습니다.

캐시는 샌드 박스 밖에 있기 때문에 직접 정리할 수 없었습니다.

아마도 실행 절차를 실행하기 전에 누군가에게 유용 할 수 있으므로 과거 최적화 결과가 새로운 최적화를 방해하지 않습니다.

이 스크립트를 첨부합니다.

여러분의 라이브러리와 이 정리 절차 덕분에 로봇을 일관되게 최적화할 수 있었습니다.

이 코드와 도움을 주셔서 대단히 감사합니다.

안부, 알렉산더

Aleksandr Slavskii
Aleksandr Slavskii
  • 2024.05.27
  • www.mql5.com
Профиль трейдера
파일:
 
klycko 반복적인 최적화를 수행하지 않고 다음을 읽습니다.

폴더에 이미 존재하는 옵트 파일을 읽습니다. 이는 동일한 최적화를 수동으로 반복적으로 실행할 때 명확하게 확인할 수 있습니다.

실제 최적화는 처음 한 번만 수행되고 폴더에서 옵트 파일만 읽는 것을 볼 수 있습니다.

이렇게 반복적으로 읽으면 캐시의 내용이 업데이트되지 않는 것 같고, 이것이 제 코드에서 오류를 일으키는 원인입니다.

sinput uint Range = 2;

void OnTesterInit( void )
{
  ::MathSrand((int)::TimeLocal());

  const int Start = ::MathRand();
  const int Step = ::MathRand();

  const uint TmpRange = (::Range < 2) ? 2 : ::Range;

  ::ParameterSetRange("Range", true, TmpRange, Start, Step, Start + (TmpRange - 1) * Step);
}
 
klycko #:

코드를 사용하여 캐시 내용을 삭제할 수 있습니다.

MTTester.mqh에는 단일 실행을 많이 할 때 매우 요구되는 기능이 있습니다.

  static bool DeleteLastTST( void )
  {
    const string Path = ::TerminalInfoString(TERMINAL_DATA_PATH)+ "\\Tester\\cache\\";
    string FileNames[];

    const int Size = MTTESTER::GetFileNames(Path, "*.tst", FileNames);

    return(Size && kernel32::DeleteFileW(Path + FileNames[Size - 1]));
  }

tst를 opt로 바꾸면 마지막 opt 파일을 삭제합니다. 전체 캐시 폴더를 정리하는 것은 중복되는 것 같습니다.

 
감사합니다!