최적화 및 샘플 외 테스트. - 페이지 6

 
Mathemat :
비타 , 좋은 지적이다. 하지만 일반화하는 능력은 Expert Advisor 뿐만 아니라 이 능력을 정확히 식별해야 하는 학습 알고리즘의 속성이라고 말하고 싶습니다. 메타쿼타 알고리즘은 그러한 능력을 드러내지 않고 재최적화에 의해 싹에서 그것을 파괴합니다.

메타쿼타 알고리즘은 그러한 능력을 드러내지 않고 재최적화에 의해 싹에서 그것을 파괴합니다. -- 예시를 보고 싶습니다.
 

충분한 예보다. 나는 어렴풋이 나를 표현했다. 옵티마이저를 성급하게 사용하는 것은 "하나, 둘, 셋!" 성배 작가들의 과도하고 불합리한 낙관주의로 이어진다. 예를 들어, 최신에서 - 'Forex가 우리를 반대하고 있습니까? 또는 내가 뭔가를 이해하지 못합니다 . 또는 '트렌드 전문가 고문'. 피드백을 기다리고 있습니다.' . 모든 것이 적합합니다.

"새싹 죽이기"의 경우: 하나의 데이터 세그먼트에 대한 극단적인 곡선 맞춤이 샘플 외 세그먼트에서 실생활에서 지속 가능한 수익성으로 이어질 가능성은 매우 낮습니다. 최적은 초고수익성과 손익분기점 중간에 있으며 이는 신경망 훈련 알고리즘에 내재되어 있습니다.

알려주세요, Vita , 우리의 유전적 최적화기가 순수한 형태로 테스트/최적화 사이트에서 엄청난 수익을 내더라도 미래에 Expert Advisor의 수익성에 대해 최소한 일부 보장을 제공합니까? 테스터에 대해 말하는 것이 아니라 테스터가 좋은 것뿐입니다.

추신: 마침내 유전자 옵티마이저에 대한 MQ의 첫 번째 언급 중 하나를 찾았습니다: https://www.mql5.com/en/forum/50805 . Filin 의 게시물과 Slava 의 답변을 참조하십시오. 옵티마이저는 Expert Advisor의 기능에 대한 대략적인 추정에만 유용하며 그 이상은 아니라는 답변에서 알 수 있습니다. 대부분의 grail 작성자는 이를 Expert Advisors의 "완전한" 테스트를 위한 최초이자 유일한 도구로 사용합니다. 이것은 잘못된 환상이 나타나는 아마추어 비즈니스 접근 방식입니다. 사실, 비열함의 법칙에 따라 대략적인 추정만을 목적으로 하는 그러한 도구는 명백히 부정적인 결과가 발생한 경우 명백히 나쁜 조언자 를 거부하는 데에만 적합하지만 조언자의 가치에 대한 긍정적인 결론에는 적합하지 않습니다. ...

 

Mathemat писал (а):

충분한 예보다. 나는 어렴풋이 나를 표현했다. 옵티마이저를 성급하게 사용하는 것은 "하나, 둘, 셋!" 성배 작가들의 과도하고 불합리한 낙관주의로 이어진다. 예를 들어, 최신에서 - 'Forex가 우리를 반대하고 있습니까? 또는 내가 뭔가를 이해하지 못합니다 . 또는 '트렌드 전문가 고문'. 피드백을 기다리고 있습니다.' . 모든 것이 적합합니다.

--> :) 알았습니다. 그러나 메타따옴표가 "최적화 프로그램의 부적절한 사용"에 대해 책임을 질 수 없다는 데 동의할 것입니다. 나는 생각하는 사람과 최적화 도구에 찬성합니다. 예를 들어, 저는 제 고문이 거래하는 법을 알고 있습니다. 옵티마이저는 많은 수익성 있는 매개변수 세트를 제공합니다. 어떻게 그가 이마에 "바보같이", 유전적으로 "교활하게", 신경망을 통해 "똑똑하게" 가져오는지 - 상관없어요. 왜냐하면. 어쨌든 나는 비판적으로(말하자면 고의적으로) 결과를 살펴보고 즉시 커틀릿에서 파리를 분리할 것입니다. 왜냐하면 내 고문이 거래하는 법을 정확히 아는 사람은 나뿐입니다.

--> 스스로 판단해 보십시오. "스마트" 옵티마이저가 만들어졌다고 가정해 봅시다. "여기에 최적의 작동 매개변수 세트가 있습니다. 조정은 필요 없습니다!"라고 정확하게 말할 수 있습니다. 또는 "아니요, 여러분, 이 Expert Advisor에 대한 작동 매개변수를 찾을 수 없으며 단지 곡선에 맞추는 것이 아닙니다." 그 시간이 될 것입니다! Expert Advisors에 내장된 전략을 인증하는 옵티마이저! metaquote에서 자유롭게 사용할 수 있습니다! 수업! 을 정말 원하다.

"새싹 죽이기"의 경우: 하나의 데이터 세그먼트에 대한 극단적인 곡선 맞춤이 샘플 외 세그먼트에서 실생활에서 지속 가능한 수익성으로 이어질 가능성은 매우 낮습니다. 최적은 초고수익성과 손익분기점 중간에 있으며 이는 신경망 훈련 알고리즘에 내재되어 있습니다.

--> "최적 - 중간 어딘가에" - 한계에 최적화된 "grails"가 미래에 병합된다는 사실의 결과인 직관적인 이해이므로 한계에 최적화할 가치가 없거나 "진실은 가까운 곳에 있다", 또는 토고와 같은 것. 이 느낌은 현실과 관련이 없습니다. 패턴은 극한까지 최적화될 수 있으며 그곳에서만 모든 영광으로 나타날 것입니다. 규칙성 부족은 아무리 생각해도 아무 의미가 없지만 최적이 중간 어딘가에 있다는 느낌이 들 수 있습니다.

알려주세요, Vita , 순수한 형태의 유전자 최적화 프로그램이 테스트/최적화 사이트에서 엄청난 수익을 내더라도 미래에 Expert Advisor의 수익성에 대해 최소한 일부 보장을 제공합니까? 테스터에 대해 말하는 것이 아니라 테스터가 좋은 것뿐입니다.

--> 아니요, 옵티마이저 결과에서 그런 보장을 요구하는 것은 부적절하다고 생각합니다. 최적화를 보장하는 "스마트"에 대해서는 위를 참조하십시오.

추신: 마침내 유전자 옵티마이저에 대한 MQ의 첫 번째 언급 중 하나를 찾았습니다.

https://www.mql5.com/ru/forum/50805

. Filin 의 게시물과 Slava 의 답변을 참조하십시오. 옵티마이저는 Expert Advisor의 기능에 대한 대략적인 추정에만 유용하며 그 이상은 아니라는 답변에서 알 수 있습니다. 대부분의 grail 작성자는 이를 Expert Advisors의 "완전한" 테스트를 위한 최초이자 유일한 도구로 사용합니다. 이것은 잘못된 환상이 나타나는 아마추어 비즈니스 접근 방식입니다. 사실, 비열함의 법칙에 따라 대략적인 추정만을 목적으로 하는 그러한 도구는 명백히 부정적인 결과가 발생한 경우 명백히 나쁜 조언자 를 거부하는 데에만 적합하지만 조언자의 가치에 대한 긍정적인 결론에는 적합하지 않습니다. ...

--> "옵티마이저는 Expert Advisor의 능력을 대략적으로 추정하는 데에만 유용합니다." - Expert Advisor의 기능을 정확하게 평가할 수 없으며 실제로 Expert Advisors에 포함된 전략을 인증할 수 없는 옵티마이저에 대해 다시 주장합니다. . 남은 일은 전략을 생성하고, 이를 옵티마이저에 제공하고, 적합성에 대한 결론을 받고, 보장 된 직원의 잔디 깎기를 전달하는 로봇을 만드는 것뿐입니다. 이 환상은 어떠세요?


 

환상은 위대하지만 환상일 뿐입니다. 그러나 사용 가능한 MQL4 도구를 사용하여 우리가 가지고 있는 것(테스터/옵티마이저)의 사용을 근본적으로 개선할 수 있습니다. 그렇지 않으면 우리는 3일에 한 번 슈퍼 커터를 보게 될 것이고, 장착 결과만 일반 테스트로 제공될 것입니다...

그리고 저는 메타쿼터에 대해 불만이 없습니다. 옵티마이저는 선언된 대로 정확히 수행합니다. 즉, EA 매개변수 공간에서의 유전적 최적화이지만 실제로는 곡선 맞춤입니다.

테스터에게 바라는 것이 있습니다. 모든 것이 테스트되는 히스토리 파일의 이름을 포함하여 필요한 모든 매개변수를 명시적으로 나타내는 test()와 같은 일반 함수를 사용하는 것이 좋습니다. 파일 이름을 내용에 하드 바인딩하는 것은 충분히 유연한 솔루션이 아닙니다.

 
leonid553 :

모두에게 좋은 하루.

Expert Advisor를 최적화한 후에는 옵티마이저가 제안한 12개 이상의 매개변수 집합이 샘플에서 지루하게 고갈되는 경우가 종종 있습니다.

샘플 외부의 전문가를 최적화하려는 아이디어가 있었습니다. 여러 매개변수로 최적화를 위해 EA를 "청구"했다고 가정합니다. 날짜를 설정합니다. 예를 들어 1월 1일부터 2006년 ~ 2007년 1월 1일

수천 가지 옵션을 받았습니다. 그런 다음 OPTIMIZATION RESULTS 페이지를 별도의 파일로 저장합니다. 다음으로 최적화를 위한 추적을 설정합니다. 역사의 기간, 즉 1, 2개월 또는 필요한 모든 것을 추가하십시오.

저것들. 우리의 경우 예를 들어 1월 1일부터 설정했습니다. 2007년 2007년 6월 1일까지 그리고 최적화를 다시 켭니다. 더 정확하게는 최적화되지 않을 것입니다. 최적화 프로그램은 EXPERT PROPERTIES에 없는 매개변수를 가져와야 하지만 첫 번째 최적화 후에 저장한 파일에서 매개변수 세트를 차례로 반복해야 합니다. 이 두 번째 최적화 후에는 샘플에서 이익을 얻은 옵션만 남게 됩니다!

결과적으로 이상적으로는 온라인에서 추가 작업 및 테스트를 위한 "이상적인 매개변수"를 얻습니다!

이것은 MT4 테스터에 유용한 추가 기능이 될 것이라고 생각합니다. 아마도 누군가가 이미 이것을 구현했을 가능성이 큽니다. 아시는 분 링크 공유 부탁드립니다!

나는 겸손한 지식으로 인해 아이디어의 실제 구현에 접근하는 방법을 아직 파악하지 못했습니다.

확실히, 이 알고리즘의 실용적인 구현이 이미 있습니다... 포럼에서 파생물만 찾았습니다... 예를 들어 '자신의 최적화 기준을 구현하는 방법' ...

이 문제에 대한 솔루션을 공유하고 싶습니다....

Expert Advisor를 준비하자... 외부 매개변수를 추가하자...

 extern int      Counter       = 1 ;         // Счетчик подсчета количества оптимизаций. Если равен 0, то обычная оптимизация...
extern string Filename      = "";       // Имя файла с оптимизируемыми параметрами

int      FilePtr = 0 ;                       //  Положение файлового указателя

init() 함수에 다음 블록을 삽입하십시오....

   if ( IsOptimization () && Counter > 0 )
   {
// Для ускорения процесса будем поддерживать сквозной указатель файловой позиции
// с помощью глобальной переменной FilePtr 
// На первом проходе инициализируем её нулём.
       if ( GlobalVariableCheck ( " FilePtr " ) == false || Counter == 1 ) 
       {
         FilePtr = 0 ; 
         GlobalVariableSet ( " FilePtr " , 0 ) ; 
       } 
       else 
       {
         FilePtr = GlobalVariableGet ( " FilePtr " ) ; 
       }

       int handle = FileOpen ( Filename , FILE_CSV | FILE_READ ,';' ) ;
       FileSeek ( handle , FilePtr , SEEK_SET ) ;
       Parametr1 = StrToInteger ( FileReadString ( handle )) ;
       Parametr2 = StrToInteger ( FileReadString ( handle )) ;
       Parametr3 = StrToInteger ( FileReadString ( handle )) ;

       FilePtr = FileTell ( handle ) ; 
       GlobalVariableSet ( " FilePtr " , FilePtr ) ;
      
       FileClose ( handle ) ; 
   }

Parameter1, Parameter2, Parameter3 - 최적화해야 하는 EA의 외부 매개변수....

사실 그게 다야...

 
kharko :

확실히, 이 알고리즘의 실용적인 구현이 이미 있습니다... 포럼에서 파생물만 찾았습니다... 예를 들어 '자신의 최적화 기준을 구현하는 방법' ...

이 문제에 대한 솔루션을 공유하고 싶습니다....

'인기 있는 거래 시스템과 거래 로봇 최적화의 연금술에 기반한 전문가(계속)' 와 같은 Nikolai Kositsin의 기사를 참조하십시오.

 

어떻게 작동합니까?

시간 간격 A에서 매개변수의 일반적인 최적화를 수행합니다( Counter=0)...

결과를 Excel로 전송합니다 ... 이제 우리의 작업은 최적화 된 매개 변수가있는 파일을 만들고 ...\tester\files 디렉토리에 쓰는 것입니다.

Excel에서 매개변수가 있는 열을 선택하고 서식 없는 텍스트로 복사하여 Word 또는 메모장에 전송합니다...

Word 또는 메모장에서 각 줄을 value1, value2, value3 형식으로 가져옵니다.

디렉토리에 저장 ...\tester\files

너무 게으르지 않은 사람이 있다면 매크로를 작성하여 머신에서 위의 작업을 수행하십시오 ...

이제 시간 간격 B에서 최적화를 시작할 수 있습니다... 이제 최적화 매개변수는 Counter... 최대값을 지정합니다(목록의 줄 수)...

그게 다야, 작업이 해결되었습니다... 행운을 빕니다...

 

이 글을 읽어보니... 제 버전이 더 간편하고 편리한 것 같아요.... 그리고 무엇보다 보편적인...

위의 구현은 지점 작성자의 희망과 완전히 일치합니다 ...

 
실제 최적화 예... 첨부 참조
파일:
sample.zip  1201 kb
 

솔루션에 대해 kharko 에게 감사드립니다. 사용해볼게요!