MT5 교환 터미널에서 표시기(선, 화살표, 히스토그램)가 깜박이는 이유는 무엇입니까? - 페이지 2

 

OnCalculate의 맨 처음에 prev_calculated를 인쇄해 보십시오.

그리고 깜박이는지 여부와 같은 일부 표준 표시기와 비교하십시오.

 
Andrey Khatimlianskii : OnCalculate의 맨 처음에 prev_calculated를 인쇄해 보십시오. 그리고 깜박이는지 여부와 같은 일부 표준 표시기와 비교하십시오.
현재 값을 이전 값과 비교하기 위해 OnCalculate() 함수 에 두 개의 정적 변수를 추가했습니다.

정적 정수 last_rates_total=0; // 이전 값 "이전의 입력 시계열 크기"
정적 int last_prev_calculated=0; // 이전 값 "이전 호출에서 처리된 막대"

및 로그 출력이 있는 인증 코드

 //+------------------------------------------------------------------+
//| Custom indicator iteration function
//+------------------------------------------------------------------+
int OnCalculate ( const int rates_total,       // размер входных таймсерий 
                 const int prev_calculated,   // обработано баров на предыдущем вызове 
...

{
   int N=rates_total-prev_calculated; if (N>MAX_PERIOD) N-=MAX_PERIOD;

   static int last_rates_total= 0 ;     // размер входных таймсерий 
   static int last_prev_calculated= 0 ; // обработано баров на предыдущем вызове 
   if (rates_total!=last_rates_total || prev_calculated!=last_prev_calculated) {
       Print ( "N=" , N,   ", rates_total=" , rates_total, ", prev_calculated=" , prev_calculated);
      last_rates_total=rates_total; last_prev_calculated=prev_calculated;
   }

   for ( int i=N; i> 0 && ! IsStopped (); i--) {
...
   }
   aUP[ 0 ]= EMPTY_VALUE ; aDN[ 0 ]= EMPTY_VALUE ;
   return (rates_total);
}

AOM 표시기를 1분 동안 실행하고 이 보고서를 받았습니다.

FH       0        12 : 38 : 02.271     AOM (Si- 6.17 ,M1)        N= 41934 , rates_total= 41969 , prev_calculated= 0
FN       0        12 : 38 : 02.275     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41969 , prev_calculated= 41969
DE       0        12 : 38 : 51.845     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41970 , prev_calculated= 41969
GH       0        12 : 38 : 51.845     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41970 , prev_calculated= 41970
PO       0        12 : 39 : 51.207     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41971 , prev_calculated= 41970
EE       0        12 : 39 : 51.215     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41971 , prev_calculated= 41971
MH       0        12 : 40 : 52.423     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41972 , prev_calculated= 41971
IO       0        12 : 40 : 52.700     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41972 , prev_calculated= 41972
CR       0        12 : 41 : 51.214     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41973 , prev_calculated= 41972
OH       0        12 : 41 : 51.214     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41973 , prev_calculated= 41973
RO       0        12 : 42 : 51.207     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41974 , prev_calculated= 41973
HR       0        12 : 42 : 51.207     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41974 , prev_calculated= 41974
NI       0        12 : 43 : 51.439     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41975 , prev_calculated= 41974
RO       0        12 : 43 : 51.446     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41975 , prev_calculated= 41975
RR       0        12 : 44 : 51.373     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41976 , prev_calculated= 41975
DI       0        12 : 44 : 51.373     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41976 , prev_calculated= 41976
ML       0        12 : 45 : 51.449     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41977 , prev_calculated= 41976
GR       0        12 : 45 : 51.902     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41977 , prev_calculated= 41977
II       0        12 : 46 : 51.541     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41978 , prev_calculated= 41977
GL       0        12 : 46 : 51.541     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41978 , prev_calculated= 41978
PS       0        12 : 47 : 51.286     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41979 , prev_calculated= 41978
PI       0        12 : 47 : 51.303     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41979 , prev_calculated= 41979
QL       0        12 : 48 : 51.395     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41980 , prev_calculated= 41979
IS       0        12 : 48 : 51.408     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41980 , prev_calculated= 41980
DF       0        12 : 49 : 51.790     AOM (Si- 6.17 ,M1)        N= 1 , rates_total= 41981 , prev_calculated= 41980
PL       0        12 : 49 : 51.790     AOM (Si- 6.17 ,M1)        N= 0 , rates_total= 41981 , prev_calculated= 41981

예상하지 못한 것은 없습니다. 새로운 바만 도착하도록 처리하는 정상적인 과정이 있습니다.

 
Eugene Myzrov :
현재 값을 이전 값과 비교하기 위해 OnCalculate() 함수 에 두 개의 정적 변수를 추가했습니다.

예상하지 못한 것은 없습니다. 새로운 바만 도착하도록 처리하는 정상적인 과정이 있습니다.

표준 표시등이 깜박입니까?
 
Andrey Khatimlianskii : 표준 패키지의 표시등이 깜박입니까?

아니요, 차트에 "이동 평균", "Awesome Oscillator"라는 한 쌍의 일반 지표를 넣었습니다. 내가 봤다. 아니요, " 데이터 창 "에서 깜박임 또는 누락된 값이 관찰되지 않았습니다.

 
Eugene Myzrov :

아니요, 차트에 "이동 평균", "대박 오실레이터"라는 한 쌍의 일반 지표를 넣었습니다. 내가 봤다. 아니요, " 데이터 창 "에서 깜박임 또는 누락된 값이 관찰되지 않았습니다.

소스(mq5)에 있는 표시기에 대해 이야기하고 있습니다.

깜박이지 않으면 문제가 분명히 코드에 있는 것입니다. 깜박임을 멈출 때까지 단순화하십시오. 또는 그 반대의 경우 - 깜박이기 시작할 때까지 표준 코드를 현재 상태로 수정하십시오.

 
MT5, IMHO의 기능입니다.
 
Stanislav Korotky : MT5, IMHO의 기능입니다.

저것들. 우리는 이것을 받아들이고 당연하게 받아들이고 이유를 찾는 것을 멈춰야 합니까?

 
Andrey Khatimlianskii : 소스(mq5)에 있는 지표에 대해 이야기하고 있습니다. 깜박이지 않으면 문제가 분명히 코드에 있는 것입니다. 깜박임을 멈출 때까지 단순화하십시오. 또는 그 반대의 경우 - 깜박이기 시작할 때까지 표준 코드를 현재 상태로 수정하십시오.
하지만 이미 코드를 완전히 단순화했습니다. 알겠습니다. 다른 길로 가겠습니다.


그건 그렇고, 나는 OnCalculate() 함수에 대한 보편적인 "래퍼"를 아직 만나지 못했습니다. 일반 표시기 중에서도 한 번만 사용할 수 있습니다.
참조로 사용할 "래퍼"가 있는 표시기를 알려주실 수 있습니까?

 
Eugene Myzrov :

저것들. 우리는 이것을 받아들이고 당연하게 받아들이고 이유를 찾는 것을 멈춰야 합니까?

서비스 데스크에 씁니다.
 
Eugene Myzrov :
하지만 이미 코드를 완전히 단순화했습니다. 알겠습니다. 다른 방법을 시도해 보겠습니다.

그것은 모든 작은 일에 관한 것일 수 있습니다.


유진 미즈로프 :

그건 그렇고, 나는 OnCalculate() 함수에 대한 보편적인 "래퍼"를 아직 만나지 못했습니다. 일반 표시기 중에서도 한 번만 사용할 수 있습니다.
참조로 사용할 "래퍼"가 있는 표시기를 알려주실 수 있습니까?

여러 옵션을 보았습니다. 검색하여 선택하실 수 있습니다.
나 자신은 다음과 같은 것을 사용합니다.

         //---
         if ( rates_total < MinBars ) return ( 0 );

         //--- last counted bar will be recounted
         int limit=rates_total-prev_calculated- 1 ;
         if (prev_calculated> 0 ) limit++;

         //---
         for ( int i=limit; i>= 0 ; i--)
        {
           IndBuffer[i] = Add your code here
        }

         //---
         return (rates_total);