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

 
fxsaber:

KB 버그 활용: zip 파일에 첫 번째 릴리스가 포함되어 있습니다.

아쉽게도 그 안에는 2020년 12월 25일의 파일이 들어 있습니다.
2019년 11월의 파일은 아직 가지고 있지만 이미...
혹시 있나요?
 
Edgar Akhmadeev:
가지고 계신가요?

2019년 12월에 하나만 찾았습니다. MTTester에서 이전 기능을 삭제하지 않은 것 같습니다.

 
fxsaber:

2019년 12월에만 발견되었습니다. MTTester에서 이전 기능을 삭제하지 않은 것 같습니다.

아마도 적어도 아이디어의 형태로 - 코드에서 Expert Advisor 최적화 매개 변수를 설정하는 방법?
아마도 나는 오래 전에 혼란스러워서 그런 가능성이 없을 것입니다.
 
Edgar Akhmadeev:
어쩌면 적어도 아이디어의 형태로 - 코드에서 Expert Advisor 최적화의 매개 변수를 설정하는 방법은 무엇입니까?
아마도 나는 오래 전에 혼란스러워서 그런 가능성이 없을 것입니다.

그러한 가능성 만 있습니다.



그러나 공통 클립보드를 통해 병렬로 작업하는 것을 방해하는 것은 없습니다. 추가 확인만 하면 됩니다.

 
fxsaber:

하지만 공통 클립보드를 통해 병렬로 작업하는 것을 막을 수 있는 방법은 없습니다. 추가 확인만 하면 됩니다.

이것이 제가 가장 먼저 시도한 것입니다. COMMON에서 파일 세마포어를 디버깅하는 데 며칠을 보냈지만 안정적인 작업을 얻지 못했습니다. 아마도 내장된 파일 기능이 제가 생각하는 것과는 조금 다르게 타이밍이 초과되는 것 같습니다.
WinAPI, 공유 메모리 또는 세마포어 API를 통해 파일을 시도해야 할 수도 있습니다 (확실히 하나가있을 수 있습니다. 누군가 나에게 말할 수 있습니다. MutEx가 한 번에 떠 올랐으니 생각해 보겠습니다).
내 잠금 및 해제 기능을 분석하고 싶다면 (짧습니다) 내일 모레 게시 할 수 있습니다. 아니요?
 
Edgar Akhmadeev:
이것이 제가 처음 시도한 것입니다. COMMON에서 파일 세마포어를 디버깅하는 데 며칠을 보냈지만 일관되게 작동하도록 만들지 못했습니다. 아마도 내장된 파일 기능이 제가 생각하는 것과는 조금 다르게 시간이 초과되는 것 같습니다.
WinAPI, 공유 메모리 또는 세마포어 API를 통해 파일을 시도해야 할 수도 있습니다 (확실히 누군가가 제안 할 수 있습니다. MutEx가 즉시 떠올랐으니 생각해 보겠습니다).
제 잠금 및 해제 기능을 분석하고 싶다면 (짧지만) 내일 모레 게시 할 수 있습니다. 아니요?

글쎄요, 일을 엉망으로 만들었네요! 버퍼를 통해 터미널 경로를 밀어 넣는 문자열 입력을 입력합니다. 설정을 밀어 넣은 후 설정을 읽고 올바른지 확인합니다. 특히 이 문자열 입력으로 확인이 성공적으로 완료되면 바로 시작 버튼을 누릅니다.


비슷한 작업도 수행됩니다.

  static bool SetSettings2( string Str, const int Attempts = 5 )
  {
    bool Res = false;

    for (int j = 0; (j < Attempts) && !Res; j++)
    {
      string Str1;
      string Str2;
      string Str3;

      Res = MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str1) &&
            MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str2) &&
            MTTESTER::SetSettings(Str) && MTTESTER::GetSettings(Str3) &&
            (Str1 == Str2) && (Str1 == Str3);
    }

    return(Res);
  }
 
fxsaber:

많은 도움이 되셨어요! 버퍼를 통해 터미널 경로를 밀어 넣는 문자열 입력을 입력합니다. 설정을 밀어 넣은 후 설정을 읽고 올바른지 확인합니다. 특히 이 문자열 입력으로 확인이 성공적으로 완료되면 바로 시작 버튼을 누릅니다.

제가 영리한 게 아니라 너무 직설적인 것일 뿐입니다. 다중 액세스는 세마포어를 의미합니다.
글쎄요, 제가 아이디어를 요청했고 얻었습니다. 고마워요!
 

GA 가속화.

프레임 모드의 Expert Advisor가 상담원으로부터 OnTester를 수신합니다. 100-1000개의 패스에서 좋은 결과를 찾지 못하면 중지를 누릅니다.

최적화를 훨씬 더 가속화할 수 있습니다.
 
fxsaber:
최적화 속도를 엄청나게 높일 수 있습니다 .

실제 4.5시간(한 달) 동안 470개의 최적화(각각 다른 심볼에 대해)를 수행했습니다.

 

1. Sleep2에서 GetTickCount() GetTickCount64() 전환합니다. 그렇지 않으면 오버플로로 인해 논리가 올바르지 않을 위험이 있습니다. 그리고 64 변형에서는 눈에 띄게 덜 자주 발생합니다. 다른 작품에서도 이 방식으로 전환해야 할 것입니다.


2. 두 번째 ArrayResize는 여기서 의문을 제기합니다.

      ::ArrayResize(Buffer, (int)Size / sizeof(T));

      kernel32::ReadFile(handle, Buffer, (uint)Size, Read, 0);
      Res = ::ArrayResize(Buffer, Read);

아마도 다음과 같을 것입니다.

Res = ::ArrayResize(Buffer, Read / sizeof(T));


3. 그리고 마지막으로 몇 가지 다른 유형

static void Sleep2( const uint Pause )


  static bool IsReady( const int Pause = 100 )
  {
    if (MTTESTER::IsReady2())
      MTTESTER::Sleep2(Pause);