TF 변경이 문제 - 페이지 3

 
Vasyl Nosal :

나는 아이디어가. 나중에 쓰겠습니다.

아이디어가 떠올랐다.

개발자에게 HistoryUpdated() 시스템과 같은 작업을 수행하여 전체 기록이 업데이트되었는지 여부를 확인하도록 요청할 것입니다.

최고의 옵션. 모든 기간의 기록을 최신 상태로 유지하십시오. 비슷한 지표가 최근 CodeBase 에 나타났습니다.
 
Slawa :

개발자 는 도움이 되지 않기 때문에 도움이 되지 않습니다.

그것은 이미 말했습니다: 만약 Rates_total과 prev_calculated의 차이가 1보다 크면 이것은 HistoryUpdated입니다.

1이 아니라 0보다 크다.

그리고? 문제가 해결됩니까?

아니면 새 막대 마다 전체 기록을 다시 계산하는 것이 문제가 되지 않습니까?

 
Vasyl Nosal :

1이 아니라 0보다 크다.

그리고? 문제가 해결됩니까?

아니면 새 막대 마다 전체 기록을 다시 계산하는 것이 문제가 되지 않습니까?

당신은 올바르게 들었습니다. 1보다 큼. 새 막대가 나타날 때 차이는 1입니다.

그리고 이것은 문제를 완전히 해결합니다.

완전한 재계산을 위한 일반적인 지표는 매우 짧은 시간을 소비합니다. 1초 미만

 
Victor Nikolaev :

당신은 올바르게 들었습니다. 1보다 큼. 새 막대가 나타날 때 차이는 1입니다.

그리고 이것은 문제를 완전히 해결합니다.

완전한 재계산을 위한 일반적인 지표는 매우 짧은 시간을 소비합니다. 1초 미만

버퍼가 재설정된 경우에만 작동합니다.

 //history update
   int all=rates_total;
   int counted=prev_calculated;
   if (all-counted> 1 )
  { 
   ArrayInitialize (up_arr, EMPTY_VALUE );
   ArrayInitialize (down_arr, EMPTY_VALUE );
  counted= 0 ;
  }
   
   //main
 for ( int i=all-counted;i>= 0 ;i--)
{
 
Vasyl Nosal :

버퍼가 재설정된 경우에만 작동합니다.

 //history update
   int all=rates_total;
   int counted=prev_calculated;
   if (all-counted> 1 )
  { 
   ArrayInitialize (up_arr, EMPTY_VALUE );
   ArrayInitialize (down_arr, EMPTY_VALUE );
  counted= 0 ;
  }
   
   //main
 for ( int i=all-counted;i>= 0 ;i--)
{

죄송하지만 묻겠습니다.

  • 각 틱 에서 생성된 개별 변수에 Rates_total 및 prev_calculated 값을 할당해야 합니까?
  • if() 조건부 연산자의 표현식과 for() 루프에서 이러한 변수의 차이를 다시 계산하려면?
  • 제한과 같이 rate_total과 prev_calculated의 차이에 대한 변수를 도입하지 않는 이유는 무엇입니까?
작업에 따라 구현이 다를 수 있습니다. 뉘앙스가 다를 수 있습니다. 다양한 조건에 따라 다른 사람들이 어떻게 구현했는지 볼 수 있습니까? 포함하고 인쇄물의 도움으로 작업에 따라 수용 가능한 옵션을 파악하고 결정하십시오.
 
Vasyl Nosal :

나는 포스트 스크립트를 추가할 것이다:

조건문의 if(){} 블록에서 영점화(counted= 0 )에 대한 당신의 생각은 나에게 분명한 것 같습니다.

만일을 대비하여 위에서 간략하게 염두에 두었던 내용을 포함하여 더 명확하게 하기 위해 Documentation 섹션에서 발췌한 내용을 제공하겠습니다. Language Basics / Functions / Event Handling Functions :

... OnCalculate() 함수에 대한 마지막 호출 이후 가격 데이터가 변경된 경우(더 깊은 기록이 업로드되었거나 기록 간격이 채워진 경우) prev_calculated 입력 매개변수의 값은 터미널 자체에 의해 0으로 설정됩니다. .

 
Vasyl Nosal :

버퍼가 재설정된 경우에만 작동합니다.

아무것도 재설정할 필요가 없습니다.

 int OnCalculate (...)
{
   // индекс последнего посчитанного на прошлом вызове бара
   // с которого начинаем расчёт
   int nStartBar = rates_total - MathMax (prev_calculated, 1 );

   for ( int i = nStartBar; i >= 0 ; i--)
   {
       // рассчитываем индикатор на всех непосчитанных барах
   }
}

prev_caclulated가 재설정되면 표시기가 완전히 다시 계산됩니다. 그리고 당연히 그렇습니다. 역사에서 정확히 무엇이 바뀌 었는지 모릅니다. 일부 구멍이로드되었거나 스터드가 어딘가에서 청소되었을 수 있습니다 ... 완전히 다시 계산하는 것이 필수적입니다. 다른 모든 경우에는 마지막 막대 하나만 다시 계산됩니다( 새 막대 가 나타나면 마지막 막대 2개).

 
Dina Paches :

죄송하지만 묻겠습니다.

  • 각 틱에서 생성된 개별 변수에 Rates_total 및 prev_calculated 값을 할당해야 하는 이유는 무엇입니까?
  • if() 조건부 연산자의 표현식과 for() 루프에서 이러한 변수의 차이를 다시 계산하려면?
  • 제한과 같이 rate_total과 prev_calculated의 차이에 대한 변수를 도입하지 않는 이유는 무엇입니까?
작업에 따라 구현이 다를 수 있습니다. 뉘앙스가 다를 수 있습니다. 다양한 조건에 따라 다른 사람들이 어떻게 구현했는지 볼 수 있습니까? 포함하고 인쇄물의 도움으로 작업에 따라 수용 가능한 옵션을 파악하고 결정하십시오.

고맙습니다. 좋은 지적.

하지만. 이는 공백이 있는 경우 전체 기록을 다시 계산할 수 있도록 하기 위한 것입니다.

 
Dina Paches :

나는 포스트 스크립트를 추가할 것이다:

if(){} 조건문의 블록에서 0으로 설정(counted= 0 )한다는 당신의 생각은 분명해 보입니다.

만일을 대비하여 위에서 간략하게 염두에 두었던 내용을 포함하여 더 명확하게 하기 위해 Documentation 섹션에서 발췌한 내용을 제공하겠습니다. Language Basics / Functions / Event Handling Functions :

... OnCalculate() 함수에 대한 마지막 호출 이후 가격 데이터가 변경된 경우(더 깊은 기록이 업로드되었거나 기록 간격이 채워진 경우) prev_calculated 입력 매개변수의 값은 터미널 자체에 의해 0으로 설정됩니다. .

가지 않을 것이다. 0이고 0이 아니라 다시 0입니다(히스토리가 몇 번 로드될 때).
 
Sergei Vladimirov :

아무것도 재설정할 필요가 없습니다.

prev_caclulated가 재설정되면 표시기가 완전히 다시 계산됩니다. 그리고 당연히 그렇습니다. 역사에서 정확히 무엇이 바뀌 었는지 모릅니다. 일부 구멍이로드되었거나 스터드가 어딘가에서 청소되었을 수 있습니다 ... 완전히 다시 계산하는 것이 필수적입니다. 다른 모든 경우에는 마지막 막대 하나만 다시 계산됩니다( 새 막대 가 나타나면 마지막 막대 2개).

아니요. 재설정하지 않으면 스크린샷에 있는 그대로입니다.