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

 
GumRai :

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

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

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

일종의 합성이다.

친애하는 검라이,

현재 막대, Bar[0]는 다시 칠하기 위해 필요합니다. 그래서 주제는 Bar[8],..Bar[3],.., Bar[1] 등의 re-painting으로 역사적인 막대가 관찰되는 문제에 관한 것입니다.

표시기의 주요 내용에 대해 약 10줄의 코드에 불과하다는 것을 알 수 있습니다.

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

너무 이상하고 어떻게 역사적인 막대를 그 코드로 다시 칠할 수 있는지 혼란 스럽습니다.

 

내가 말했듯이 표시기는 동일한 막대의 이전 눈금에서 계산된 값을 사용하여 매 눈금마다 막대[0]를 다시 계산합니다.

테스터가 실행되는 동안 지표가 실제로 차트에 없더라도 지표는 의사 실시간으로 계산됩니다.

테스터가 완료되면 표시기가 차트에 추가되고 막대당 한 번만 계산되기 때문에 모든 눈금을 고려하지 않는다고 생각합니다.

차트에 표시기를 시각적 모드로 넣어 사용해 보세요.

 
jollydragon :

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

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

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


확대/축소를 줄여 TSD의 페이지 번호에 액세스하고,


지표가 더 좋다

 
GumRai :

내가 말했듯이 표시기는 동일한 막대의 이전 눈금에서 계산된 값을 사용하여 매 눈금마다 막대[0]를 다시 계산합니다.

차트에 표시기를 시각적 모드로 넣어 사용해 보세요.

GumRai, 내 이전 게시물을 참조하십시오:

. 필요에 따라 bar[0]을 다시 그리는 것은 문제가 되지 않습니다.

. 이 스레드의 주제 또는 문제는 정확히 왜 bar[0] 왼쪽에 있는 과거 막대가 다시 칠해졌고 예상하지 못한 것입니다. 이미 차트에서 관찰하고 이미 스크린샷을 붙여넣었습니다.

친애하는 여러분, 제 코드에 집중하고 근본 원인을 찾아 함께 개선합시다. 더 나은 지표는 필요 없지만 근본 원인을 알고 싶습니다!

이해와 지원에 감사드립니다.

 

당신은 내가 당신에게 말하는 것을 이해하지 못하는 것 같습니다.

제가 설명을 잘 못해서 그런건지 아니면 제 글을 제대로 안읽으신건지 모르겠네요.

표시기를 다시 초기화하면 전체 표시기가 막대당 하나의 눈금을 기준으로 다시 계산되지만 실시간에서는 한 막대의 여러 눈금을 기준으로 합니다.

따라서 인디케이터를 실시간으로 그린 후 다시 초기화하면 차이가 발생합니다.

 
GumRai :

당신은 내가 당신에게 말하는 것을 이해하지 못하는 것 같습니다.

제가 설명을 잘 못해서 그런건지 아니면 제 글을 제대로 안읽으신건지 모르겠네요.

표시기를 다시 초기화하면 전체 표시기가 막대당 하나의 눈금을 기준으로 다시 계산되지만 실시간에서는 한 막대의 여러 눈금을 기준으로 합니다.

따라서 인디케이터를 실시간으로 그린 후 다시 초기화하면 차이가 발생합니다.

영어가 제 모국어가 아니라는 사실을 말씀드려 죄송합니다.

재초기화 시 또는 실시간으로 그려지더라도 모든 과거 막대는 마지막 눈금을 기준으로 계산됩니다.

따라서 역사적 막대는 동일하게 고정되어야 합니다. 옳은? 일정 기간 동안 M1으로 라이브 차트의 지표를 보면 차이나 재도장을 어떻게 관찰할 수 있습니까?

 
이것은 많은 코딩 전문가의 능력 밖의 단순한 문제가 아닌 것 같습니다.
 

글쎄요, 제가 보기에는 간단한 문제인 것 같습니다. 단지 당신이 답을 이해하지 못하는 것뿐입니다.

첨부된 코드 를 시도해 보십시오. 그러면 어떤 일이 발생하는지 확인할 수 있습니다.

방금 표시기 그리기 루프를 다음으로 변경했습니다.

   for (i=limit- 1 ; i>= 0 ; i--)
     {
      ExtBuffer1[i]= 1.1 *Fish1;
      Fish1=ExtBuffer1[i];
       if (Fish1>= EMPTY_VALUE )
         Fish1= 1 ;
     }

Fish1의 초기값

Fish1= 0.00001 ;

규칙적인 눈금이 있는 M1 차트에서 실행합니다. 다양한 봉우리가 형성되는 것을 볼 수 있습니다.

표시기를 다시 초기화하면 모든 피크가 사라지는 것을 볼 수 있습니다.

또한 인터넷 연결이 좋지 않은 경우 막대가 누락되면 전체 표시기가 다시 계산되므로 피크가 사라집니다.

이유가 보이나요?

파일:
 
GumRai :

글쎄요, 제가 보기에는 간단한 문제인 것 같습니다. 단지 당신이 답을 이해하지 못하는 것뿐입니다.

첨부된 코드를 사용해 보세요. 어떤 일이 일어나는지 확인할 수 있기를 바랍니다.

방금 표시기 그리기 루프를 다음으로 변경했습니다.

Fish1의 초기값

규칙적인 눈금이 있는 M1 차트에서 실행합니다. 다양한 봉우리가 형성되는 것을 볼 수 있습니다.

표시기를 다시 초기화하면 모든 피크가 사라지는 것을 볼 수 있습니다.

또한 인터넷 연결이 좋지 않은 경우 막대가 누락되면 전체 표시기가 다시 계산되므로 피크가 사라집니다.

이유가 보이나요?

친애하는 검라이,

제 요점을 파악하신 것 같습니다.

아래 스크린샷을 참조하세요. 표시기를 마우스 오른쪽 버튼으로 클릭하고 "새로 고침"을 선택한 후 피크 위치가 변경되었습니다.

그러나 여전히 이유를 알 수 없습니다. 그래서 다시 페인팅 지표에서 근본 원인을 찾을 수 없습니다.

. 수정한 지표에 따르면 지수선을 그려야 한다는 것을 이해합니다. 간격으로 피크를 그리는 이유는 무엇입니까? "빈 값"이 있기 때문입니까?

. 새로 고침 후 봉우리의 위치가 변경되는 이유는 무엇입니까?

. 나는 아직도 봉우리가 사라지는 것을 볼 수 없습니다. "재초기화"하는 방법은 무엇입니까?

새로고침하기 전에:

새로고침 후:

 
jollydragon : 그러나, 나는 아직도 그 이유를 알 수 없습니다. 그래서 다시 페인팅 지표에서 근본 원인을 찾을 수 없습니다.

   for (i=limit- 1 ; i>= 0 ; i--)
     {
      ExtBuffer1[i]= 1.1 *Fish1;
      Fish1=ExtBuffer1[i];
       if (Fish1>= EMPTY_VALUE )
         Fish1= 1 ;
     }

모든 반복(첫 번째 제외)에서 Fish1 은 이전 버퍼 요소의 값이지만 ExtBuffer1[limit] 로 초기화하지 않습니다.

따라서 초기 반복의 경우(limit == 막대일 때) ExtBuffer1[0] = 1.1* ExtBuffer1[1] 을 설정합니다.

그러나 후속 틱(limit == 1일 때)의 경우 ExtBuffer1[0] = 1.1* 0.00001 로 설정합니다.