백테스트 중 발견된 문제점과 근본 원인을 찾지 못함! - 페이지 3

 

iHighest()는 'i'의 왼쪽 또는 오른쪽에 있는 마침표 중 막대를 반환합니까?

 MaxH = High[iHighest( NULL , 0 ,MODE_HIGH,period,i)];

또한 이 게시물 바로 앞의 제 이전 게시물도 참조하십시오.

 

친애하는 졸리드래곤,

표시기가 다시 계산되는 것을 보니 기쁩니다.

피셔 코드는 항상 동일하므로 식별하기 쉽습니다.

코드는 많은 지표가 어떤 의미로 데이터를 다시 주입합니다(바 1 2 3에 과거 값 ot 데이터를 저장함). 이 지표는 그렇게 하지 않기 때문에 다시 계산합니다.

 for (i=limit- 1 ; i>= 0 ; i--)
     {
      MaxH = High[iHighest( NULL , 0 ,MODE_HIGH,Solar_period,i)];
      MinL = Low[iLowest( NULL , 0 ,MODE_LOW,Solar_period,i)];
      price = (High[i]+Low[i])/ 2 ;
      Value = 0.33 * 2 *((price-MinL)/(MaxH-MinL)- 0.5 ) + 0.67 * Value1 ;
      Value= MathMin ( MathMax (Value,- 0.999 ), 0.999 );
      ExtBuffer0[i]= 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 *Fish1;
       Value1 =Value;
      Fish1=ExtBuffer0[i];
     
       if (ExtBuffer0[i]> 0 ) ExtBuffer1[i]=Solar_limit;
       else ExtBuffer1[i]=-Solar_limit;
     }
 
jollydragon :

iHighest()는 'i'의 왼쪽 또는 오른쪽에 있는 마침표 중 막대를 반환합니까?


왼쪽으로
 

푸어, 검라이, 고마워.

코드는 bar1의 데이터를 저장하지만 bar0의 왼쪽에 있는 막대를 다시 계산하지 않는 것을 볼 수 있습니다.

그래서 bar0 이전의 막대를 다시 계산하는 코드가 없기 때문에 다시 그리기를 일으킨 원인이 무엇인지 여전히 혼란스럽습니다.

 for (i=limit- 1 ; i>= 0 ; i--)
     {
      MaxH = High[iHighest( NULL , 0 ,MODE_HIGH,period,i)];
      MinL = Low[iLowest( NULL , 0 ,MODE_LOW,period,i)];
      price = (High[i]+Low[i])/ 2 ;
      Value = 0.33 * 2 *((price-MinL)/(MaxH-MinL)- 0.5 ) + 0.67 *Value1;
      Value= MathMin ( MathMax (Value,- 0.999 ), 0.999 );
      ExtBuffer0[i]= 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 *Fish1;
      Value1=Value;
      Fish1=ExtBuffer0[i];
       if (ExtBuffer0[i]> 0 ) ExtBuffer1[i]= 10 ;
       else ExtBuffer1[i]=- 10 ;
     }
 

우리는 한계에 어떤 가치가 부여되었는지 모릅니다.

이 표시기를 마우스 오른쪽 버튼으로 클릭하고 저장소로 이동하는 것이 좋습니다!

       ExtBuffer0[i] = 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 * Fish1 ;
      Value1=Value;
       Fish1=ExtBuffer0[i] ;

Fish1이 전역 또는 정적 변수이고 마지막 막대가 다시 계산된다고 가정합니다.

Fish1은 i==0일 때 Bar[0] 데이터를 기반으로 하는 값이 지정됩니다.

그런 다음 bar[1]이 다시 계산되면 bar[0]에서 생성된 Fish1의 값이 bar[1]의 값을 생성하는 데 사용됩니다.

지표가 무엇을 하려는 것인지 모르지만 i 막대에 관련된 데이터를 사용한 다음 이전 막대에서 이를 사용하는 지표는 잘못된 지표입니다.

 
GumRai :

우리는 한계에 어떤 가치가 부여되었는지 모릅니다.

전체 지표 파일이 첨부된 게시물 20을 참조하십시오. 아래는 다시 붙여넣었습니다.

첨부 파일:
solarjoy.mq4 (6.11KB) 삭제
검라이 :

그런 다음 bar[1]이 다시 계산되면 bar[0]에서 생성된 Fish1의 값이 bar[1]의 값을 생성하는 데 사용됩니다.

지표가 무엇을 하려는 것인지 모르지만 i 막대에 관련된 데이터를 사용한 다음 이전 막대에서 이를 사용하는 지표는 잘못된 지표입니다.

Bars 계산을 위해 왼쪽에서 오른쪽으로 'i'가 'limit-1'에서 '0'으로 변경되는 것을 볼 수 있습니다.

따라서 bar[1]에서 계산된 Fish1의 값은 bar[0]의 값을 생성하는 데 사용됩니다. 왜 반대로 생각하세요?

그러므로 나는 이 지표가 코드에 대한 나의 이해에 따르면 그런 종류의 나쁜 지표라고 생각하지 않습니다.

어쨌든, 나는 마침내 다시 그리기를 관찰했고 그것은 그런 종류의 나쁜 지표를 승인합니다.

그러나 자체 개선으로 다시 그리기를 방지하려면 코드를 수정하는 방법을 알아야 합니다.

 for (i=limit- 1 ; i>= 0 ; i--)
     { 
       ...
      }
 

이 한 명의 피셔는 다시 칠하지 않고 좋아 보입니다. solar_joy와 비교하면 신호가 한 바 늦지만 동일한 지표입니다.

https://www.forex-tsd.com/metatrader-4/474-fisher-14.html#post214965

문제는 지표가 아니라 완벽합니다. 항상 변하는 것은 시장이며 결코 같지 않습니다.

어떤 추세 시장에서는 완벽한 신호를 제공하는 지표가 다른 시장에서는 잘못된 신호만 줄 것입니다.

StopLoss 및 TakeProfit을 사용하여 항상 좋은 오실레이터의 신호를 필터링해야 합니다.

추세 표시기를 사용하여 날씨.


나는 피셔 표시기가 작동한다고 생각합니다. 한 바 늦고 다시 계산하고 다시 칠하지 않고 다시 칠하고 테스터의 EA에 넣으면 다음과 같이 표시됩니다.

https://www.forex-tsd.com/ideas-suggestions/25934-bulletproof-11.html#post351354

 
jollydragon :

따라서 bar[1]에서 계산된 Fish1의 값은 bar[0]의 값을 생성하는 데 사용됩니다. 왜 반대로 생각하세요?

괜찮습니다. 하지만 제가 언급한 귀하의 코드에는 제한에 대한 계산이 포함되지 않았으며 다른 곳에 포함되었는지 확인하기 위해 3페이지 이상을 뒤돌아보지 않을 것입니다.

따라서 이 표시기는 매 틱마다 bar[1] 에 대해 다시 계산하지 않습니다.

하지만 여전히

 ExtBuffer0[i]= 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 *Fish1;
 Fish1=ExtBuffer0[i];

닫힌 막대에서 처음 실행할 때 현재 막대에서 수행하는 것과 다른 계산을 허용합니다.

새 막대의 첫 번째 눈금에서 수행할 작업은

ExtBuffer0[ 0 ]= 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 *ExtBuffer0[ 1 ];

동일한 막대의 후속 틱에서 계산됩니다.

ExtBuffer0[ 0 ]= 0.5 * MathLog (( 1 +Value)/( 1 -Value))+ 0.5 *ExtBuffer0[ 0 ];

일종의 합성이다.

 

이것은 거래 가능합니다. solar_joy/fischer는 재계산되지 않은 어부 와 비교하여 한 바 일찍 신호를 보냅니다.

그런 다음 막대 1과 2의 신호를 받아 막대 2와 3에 신호가 여전히 있는지 확인하십시오.

신호가 사라지면 주문을 닫으십시오.

  if(Joy2 < = EA_Limit && Joy1 > = EA_Limit)  open_order( OP_BUY); 
 if( (Joy3 < = EA_Limit && Joy2 > = EA_Limit)== false ) close_order( OP_BUY); 
 
ffoorr :

이 한 명의 피셔는 다시 칠하지 않고 좋아 보입니다. solar_joy와 비교하면 신호가 한 바 늦지만 동일한 지표입니다.

https://www.forex-tsd.com/metatrader-4/474-fisher-14.html#post214965

나는 피셔 표시기가 작동한다고 생각합니다. 한 바 늦고 다시 계산하고 다시 칠하지 않고 다시 칠하고 테스터의 EA에 넣으면 다음과 같이 표시됩니다.

https://www.forex-tsd.com/ideas-suggestions/25934-bulletproof-11.html#post351354


친애하는 ffoorr, 페이지를 열 수 없고 사이트 www.forex-tsd.com에 액세스할 수 없습니다. 내 인터넷 구성에 문제가 있을 수 있습니다.

내 코드에 집중합시다. 주요 콘텐츠에 대한 코드는 약 10줄에 불과합니다.

그러나 역사적 막대기를 다시 칠하는 근본적인 원인을 찾는 것은 여전히 너무 어렵습니다.