기고글 토론 "Expert Advisor 최적화 시 커스텀 조건 만들기" - 페이지 2

 
Karlson:

코드가 다음과 같은 유형이라는 뜻인가요?

if (잔액 < 3000) ExpertRemove();

가 작동하지 않나요?

작동합니다. 이미 이해했습니다. 최적화를 중단하지만 여전히 결과를 표시하기 때문에 작동하지 않는다고 생각했습니다.


칼슨

하지만 제가 말한 건 그게 아니에요. (적어도 이전에는 작동했던) 그러한 고장으로 인해 결국 유전학이 떠나게 되었다는 것이죠.

칼슨: 맞아요.

하지만 OnTester() 결과를 0으로 재설정하거나 위와 같이 하면(마이너스 값 -777 할당), 유전학이 실제로 예측할 수 없는 방식으로 작동할 수 있는데, 이는 OnTester()의 반환 값만으로 선택이 수행되기 때문입니다.

 
보고서에서 불필요한 결과를 제거하는 방법이 남아 있습니다.

MT4에도 그런 기능이 있었습니다:

MT4


개발자가 이러한 기능을 모두 제거했기 때문에 MQL5 도구의 도움으로 확실히 수행 할 수 있습니다.

물론 모든 것을 Excel로 복사할 수 있지만 새로운 플랫폼을 활용하고 싶습니다.

ExpertRemove() 로 한계를 해결했습니다.

보고서에서 쓸모없는 결과를 건너뛰는 것은 어떨까요?

 
sigma7i:

보고서에서 쓸모없는 결과를 건너뛰는 것은 어떻게 하나요?

표준 보고서에서는 그렇게 할 수 없으며 그럴 필요도 없습니다(저는 반대합니다). 나만의 보고서를 만드세요.

이제 최적화 단계에서 필요한 형식으로 보고서를 생성할 수 있습니다(https://www.mql5.com/ko/docs/optimization_frames).

그리고 곧 (후후) 유전학을 직접 관리할 수 있게 될 것입니다.

 

훌륭합니다.

저는 신경망과 유전자 알고리즘으로 미래를 예측하는 분야에서 일하면서 합리적으로 직선인 주식 곡선의 중요성을 깨달았습니다.

그리고 이를 고려한 몇 가지 루틴을 작성했습니다. 이는 예측 시스템의 '견고성'을 나타내는 척도이기도 합니다.

 
그리고 이제 저는 마침내 그 가능성을 시험하고 탐구하기 시작했습니다. 저도 동의합니다. 완전히 새로운 세상이 열렸습니다. 매우 강력한 도구입니다. 기사 작성해 주셔서 다시 한 번 감사드립니다.
 

실제 작업을 수행한 결과.

직진성 모듈은 좋은 시작이지만 불완전합니다. 수익이 전혀 없는 상태에서 아주 좋은 평가를 받을 수 있습니다. 따라서 수익이 방정식에 들어가야 합니다. 총 수익에서 어떤 종류의 척도를 추가하는 것만으로는

는 작동하지 않습니다. 처음에 약간의 승리가 있고 중간에 약간의 손실이 있으며 마지막에 더 나은 승리가 있으면 좋은 가치의 매우 직선을 얻을 수 있습니다. 이렇게 하면 잘 맞는 평탄한 직선이 만들어지고 수익도 어느 정도 나올 것입니다. 하지만 우리가 원하는 것은 그런 것이 아닙니다.

우리는 정말 좋은 적합도와 함께 위로 올라가는 회귀선을 원합니다. 따라서 가능한 한 편차가 적은 회귀선을 사용하려면 상향 경사 계수를 방정식에 포함시켜야 합니다. 이것이 바로

우리가 보고자 하는 것입니다. 잘 맞는 상향 경사 회귀선입니다. 이를 통합하려고 시도해 보겠습니다. 제안과 도움을 환영합니다 :-)

 
사용자 지정 기준의 값은 결과 목록에 '표준' 기준과 함께 표시됩니다. 사용자 지정 기준에 2개의 값을 만들 수 있나요? 직진도와 기울기를 결합하는 좋은 방법을 찾지 못했습니다.
 

CSTS 코드를 시도하고 있습니다.

이 결과가 조금 이상합니다:


결과 수익 #거래 수익률 드로다운 기대 수익률 회복 계수

0.58 1237 84 1.26 12.70 14.74 0.93

0.57 1598 90 1.38 8.69 17.36 1.76


다른 예는 다음과 같습니다.

0.61 3175 123 1.33 21.04 25.82 1.48

0.60 4460 145 1.49 11.32 30.77 2.56

모든 관점에서 두 번째 줄의 값이 더 좋습니다 !!! 그러나 점수는 더 낮습니다.

제가 추론할 수 있는 유일한 것은 많은 거래에 페널티가 있다는 것입니다. 나는 그것을 다른 방향으로 가질 것입니다

그리고 마지막으로. 이 주제에 관심이있는 사람은 정확히 한 명인 것 같습니다. 저입니다.


이에 대해 더 자세히 설명하겠습니다. 제가 코드에 실수를 해서 보류 중인 주문이 청산되지 않았습니다. 또한 12 개월 동안 테스트 기간 동안 5 건의 주문 만 이루어졌습니다. 좋은 수익으로.

이로 인해 최적화 결과가 100 이상으로 크게 향상되었습니다. 분명히 "평균 승리"의 값이 매우 높았기 때문에 이러한 극단적인 점수가 나온 것입니다. 기술적으로는 맞지만 백테스팅의 맥락에서는

백테스팅의 맥락에서는 의미가 없습니다. 이와 같은 장기 추세가 대표성을 가질 확률은 얼마나 될까요? 그래서 어떤 식으로든 거래 횟수를 방정식에 포함시켜야 한다고 생각했습니다.

시행착오를 겪으며 코드를 변경한 끝에 유용한 결과를 산출하는 방법을 찾아냈습니다.

변경 내용

// CSTS:
double tssf=real/teor;
if(tssf <= 0) return 0;

work = TesterStatistics( STAT_TRADES );
if( work <= 0) work = 1;
work = MathSqrt(work/4);

tssf = tssf * work;
if( tssf < 1 ) tssf = 0;
if(TesterStatistics(STAT_PROFIT) <= 0) tssf = 0;

return(tssf);

원래 방법은 실행 중인 시스템을 판단하는 데는 좋지만 기본적으로 백 테스트 실행에서 매개 변수를 기반으로 하는 데는 쓸모가 없습니다.

Documentation on MQL5: Standard Constants, Enumerations and Structures / Trade Constants / Order Properties
  • www.mql5.com
Standard Constants, Enumerations and Structures / Trade Constants / Order Properties - Documentation on MQL5
 

이 우주에서 외로운 늑대인 제가 다시 돌아왔네요 :-)

계산된 직선의 기울기를 방정식에 넣으려고 직진성 사용자 정의 기준을 시도해 보았습니다. 그대로 사용하면 매우 미약한 수익에 대해 매우 높은 등급을 받을 수 있습니다. 최종 수익을 계산에 추가하는 것만으로는

을 추가하는 것만으로는 더 나아지지 않습니다. 실제 기울기를 방정식에 추가하기 위해 아래에 표시된 코드 릴케를 변경했습니다.

완벽한 해결책은 아니지만 제가 원하는 것에 더 가깝습니다. 결과를 잔액 또는 이익과 함께 사용하면 다음 코드를 사용하면 잘 작동합니다.


//---------------------------------------------------------------------
// 최적화 결과 값을 가져옵니다:
//---------------------------------------------------------------------
double  TBalanceSlopeCriterion::GetCriterion()
  {
// 밸런스 곡선의 기울기를 계산해 보겠습니다:
   double   current_slope=1000.0*this.balance_Ptr.CalcSlope();

// 아래로 기울어져 있는 경우:
   if(current_slope<0.0)
     {
      return(-1.0);
     }

   double   temp=this.balance_Ptr.GetCurrentSKO();
   if(temp>0.0)
     {
      
   // return(this.scale/temp); // 이것은 결과가 수평선부터 위쪽을 가리키는 선까지 모든 직선에 얼마나 잘 부합하는지 반환합니다.
      double temp2 = this.scale/temp;   // 잉바르 추가
      
      return(temp2 * current_slope);    // 잉바르 추가
      
     }

   return(0.0);
  }
 
ingvar_e:

이 우주에서 외로운 늑대인 제가 다시 돌아왔네요 :-)

계산된 직선의 기울기를 방정식에 넣으려고 직진성 사용자 정의 기준을 사용해 보았습니다. 그대로 사용하면 매우 미약한 수익에 대해 매우 높은 등급을 받을 수 있습니다. 최종 수익을 계산에 추가하는 것만으로는

을 추가하는 것만으로는 더 나아지지 않습니다. 실제 기울기를 방정식에 추가하기 위해 아래에 표시된 코드 릴케를 변경했습니다.

완벽한 해결책은 아니지만 제가 원하는 것에 더 가깝습니다. 결과를 잔액 또는 이익과 함께 사용하면 다음 코드가 잘 작동합니다.


ingvar_e, 그렇게 혼자가 아니라, 나는이 분야를 너무 좋아하고 당신의 진화에 놀랐습니다.

예를 들어, 유전 알고리즘의 경우 좋은 적합성 알고리즘이 있어야하며이 적합성에 맞는 사용자 정의 기준을 만들어야합니다.

균형 곡선의 기울기를 계산하는 것이 더 나은 방법인지는 확실하지 않지만 다른 여러 방법이 있기 때문에 어쨌든이 아이디어를 탐구하고 토론 할 수 있도록 저를 믿으세요.