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

 

나는 내 자신을 보았고, 실제로 일부 기호에 대해 틱 기록이있는 파일이 나타나지 않았고 로그를 살펴 보았고 거기에 있습니다:

2020.02.12 16:02:30.144 Core 1  NZDUSD : real ticks begin from 2017.01.02 00:00:00

이제 나는 나머지는 시뮬레이션이었다는 것을 이해합니다.


그런데 멀티 테스터는 최소화 된 터미널에서 기호를 전환하지 않으므로 새 패스를 시작하기 전에 창 열기를 추가하는 것이 좋습니다. 지금은 fInit에 이러한 기능을 추가했습니다.

bool ActivateTerminalWindow(){
   HANDLE ChartWindow = (HANDLE)ChartGetInteger(0, CHART_WINDOW_HANDLE);
   if(ChartWindow){
      HANDLE TerminalWindow = GetParent(ChartWindow);
      TerminalWindow = GetParent(TerminalWindow);
      TerminalWindow = GetParent(TerminalWindow);
      if(TerminalWindow){
         ShowWindow(TerminalWindow, 3);
         return true;
      }
   }
   return false;
}
 
Evgenii Kuznetsov:

멀티 테스터는 최소화 된 터미널에서 기호를 전환하지 않으므로 새 패스를 시작하기 전에 창 열기를 추가하는 것이 좋습니다.

확인해보지 않았고 경험해보지 못했습니다.

 
fxsaber:

결국 저는 이렇게 했습니다. ini-파일에서 작업 배치를 구성하고 실행을 위해 전송합니다.

트레이딩, 자동매매 시스템 및 트레이딩 전략 테스트 포럼

전문가 자문: 검증

fxsaber, 2020.02.22 10:46 AM

다양한 테스터 작업을 수행해야 할 때 저는 Validate를 사용합니다.


1. 테스터에서 실행할 작업을 설정합니다.

2. 설정 탭에서 CTRL+C를 누릅니다. 모든 설정이 클립보드에 나타납니다.

3. CTRL+V를 사용하여 이러한 설정을 ini-파일에 복사하여 작업이 있는 폴더에 넣습니다.

4. 이것이 필요한 수의 작업인 ini-파일(화면에 4개의 작업)을 만드는 방법입니다.


5. 유효성 검사를 시작할 때 작업이 있는 폴더의 이름을 지정합니다.


이제 모든 트릭을 갖춘 Validate가 이러한 작업을 실행합니다.


저는 작업을 실행하면서 작업을 만들어야 하는 특정 경우에만 멀티테스터 파생 프로그램을 사용합니다.

미리 만들어진 작업의 배치를 실행할 때는 Validate를 사용하는 것이 좋습니다.

 

GA를 올바르게 수행하는 방법에 대한 경험을 공유해 주세요. GA가 필요한 로컬 극한값 중 하나만 찾는 상황이 발생했습니다.

특정 TS/심볼의 경우 어디를 찾아야 하는지 알기 때문에 다른 범위에서 GA를 수행합니다. 하지만 일반적으로 어떻게 진행해야 하는지 명확하지 않습니다.

 
fxsaber:

GA를 올바르게 수행하는 방법에 대한 경험을 공유해 주세요. GA가 필요한 로컬 극한값 중 하나만 찾는 상황이 발생했습니다.

특정 TS/심볼의 경우 어디를 찾아야 하는지 알기 때문에 다른 범위에서 GA를 수행합니다. 하지만 일반적으로 어떻게 진행해야 하는지 명확하지 않습니다.

여기에 주제에 대한 내용이 있다고 생각합니다 - https://www.mql5.com/ru/forum/87536.

또는 저자(@Andrey Dik)에게 전화하세요.

Чемпионат Алгоритмов Оптимизации.
Чемпионат Алгоритмов Оптимизации.
  • 2016.06.09
  • www.mql5.com
Чемпионат алгоритмов оптимизации задуман как соревнование для людей ищущих, любознательных, для которых стоять на месте означает движение назад...
 
Andrey Khatimlianskii:

여기에 관련 내용이 있는 것 같습니다 - https://www.mql5.com/ru/forum/87536

또는 저자(@Andrey Dik)에게 문의하세요.

저는 MT5-Tester를 사용하는 맥락에서 질문하고 있습니다. 따라서 사용자 지정 최적화 알고리즘은 적합하지 않습니다.

 
fxsaber:

GA를 올바르게 수행하는 방법에 대한 경험을 공유해 주세요. GA가 필요한 로컬 극한값 중 하나만 찾는 상황이 발생했습니다.

특정 TS/심볼의 경우 어디를 찾아야 하는지 알기 때문에 다른 범위에서 GA를 수행합니다. 하지만 일반적으로 어떻게 진행해야 하는지 명확하지 않습니다.

이제 드로다운이 크면 테스트를 중단합니다.

그리고 총회를 조금이라도 격려하기 위해 이렇게 하고 있습니다:

#define  TESTER_STOP(ret) { EA_STOP = true; TesterStop(); return ret; }
double OnTester()
{
   srand((int)TimeCurrent());
// if(StartHour==20 && CountHours==22) return (-(rand() % 1000));// 런타임에 따라 GA가 최대 1에 수렴하기 시작하면 이 방법을 사용합니다.

   if(EA_STOP) return (-(rand() % 1000));                                                               // 실패한 테스트, 대규모 다운로드로 인해 중단됨

   int o_count = 0;
   for(int i = OrdersHistoryTotal() - 1; i >= 0; i--)
   {
      if(OrderSelect(i, SELECT_BY_POS, MODE_HISTORY) && OrderType() < 2) o_count++;
   }
   if(o_count < 160) return (-(rand() % 1000));                                                         // 6개월 동안 최소 160개의 거래를 찾고 있습니다.

   return(AccountInfoDouble(ACCOUNT_BALANCE));
}


void OnTick()
{
   if(IS_OPTIMIZATION)
   {
      double balance = AccountInfoDouble(ACCOUNT_BALANCE);
      MaxBalance = fmax(MaxBalance, balance);
      if(MaxBalance - balance > 200) TESTER_STOP();                                                     // $200이 떨어지면 테스트를 중지합니다.
   }


지난 한 주 동안 테스트해 본 결과, 현재 GA에 매우 만족하고 있습니다.

 

최적화 프로그램에서 마지막 결과에서 개선이 없을 때까지 GA를 4회 반복합니다. 12회 이상 시도할 수도 있습니다. 보통 좋은 결과를 얻습니다. 시간이 오래 걸리긴 하지만요.

현재 날짜에 다시 최적화할 때 개선된 새로운 로컬 최대값을 얻을 수 있고, 그렇지 않은 경우 이전 최적화에서 시작하여 느린 최적화(상호 의존적인 변수 그룹을 선택하고 각 조합을 쌍으로 반복적으로 최적화)를 통해 새로운 시장에 맞게 개선합니다.

또한 OnTester에 마이크로 페널티(추가 돌연변이 유발 물질)를 도입했습니다. 이 경우 GA는 더 빈번한 돌연변이로 인해 더 많은 패스를 수행하며 결과적으로 새로운 맥시마가 더 자주 발견됩니다.

// 결과가 같을 때 더 작은 매개변수 값을 선택하도록 하는 미세 페널티
res -= BP * 0.0001 / 200;       // 최적화 범위(0...200)로 나눕니다.
 
Igor Makanu:

큰 문제가 발생하면 지금 테스트를 중단할 것입니다.

그리고 총회를 조금이라도 격려하기 위해 이렇게 하려고 합니다:

지난 일주일 동안 이 방법으로 테스트를 해봤는데, 지금은 GA에 매우 만족하고 있습니다.

저는 거의 같은 방식으로 테스트합니다. 드로다운 제어는 더 빠른 최적화를 위한 것이고, 거래 횟수 제어는 쓰레기를 걸러내어 GA를 더 잘 지시하기 위한 것입니다.

하지만 이것만으로는 충분하지 않습니다.


ZY 더 저렴합니다.

TesterStatistics(STAT_TRADES)
 
Edgar Akhmadeev:

온테스터에 마이크로 페널티(추가 돌연변이 유발 물질)를 도입했습니다. 이 경우 GA는 더 빈번한 돌연변이로 인해 더 많은 패스를 수행하며 결과적으로 새로운 맥시마가 더 자주 발견됩니다.

명확히 설명해 주세요.