차트 창 새로 고침 - 페이지 2

 

"문제"는 표시기가 제한을 사용하는 것일 수 있습니다. 즉 IndicatorCounted () 함수
바를 다시 칠하지 않기 위해.

시간 프레임을 변경하면 재설정되지만 WindowRedraw()는 그렇지 않을 수 있습니다. 그 기능은 지표 인덱스가 아니라 객체를 다시 그리는 것입니다.

무효 창 다시 그리기( )
현재 차트를 강제로 다시 그립니다. 일반적으로 개체 속성이 변경된 후에 사용됩니다.

나는 보통 내가 쓰는 것의 대부분에 대해 1000바 정도를 다시 계산한다는 것을 알고 있습니다.
새로 고침을 마우스 오른쪽 버튼으로 클릭하면 시작됩니다.

표시기의 루프를 심각하게 제한하지 않으면 매 틱마다 표시기가 새로 고쳐집니다.

 
? 일부는 무슨 일이 일어나고 있는지 약간의 단서가 있습니까? WindowRedraw ()를 사용한 후 효과가 나타나지 않는 이유는 무엇입니까?

정말 감사합니다,
 

당신은 "읽기 어렵다"?

 
안녕 파이,

거의 두 달만에 마지막 답변을 받았습니다. 어떻게 건너뛰었는지 모르겠네요. "내 지표 다시 그리기"에 여전히 문제가 있습니다. 이제 나는 당신이 나에게 준 정보로 문제를 해결하려고 노력할 것입니다. 정말 고마워,,,
 

코드를 보여주세요...

 
brspMA :
안녕 파이,

거의 두 달만에 마지막 답변을 받았습니다. 어떻게 건너뛰었는지 모르겠네요. "내 지표 다시 그리기"에 여전히 문제가 있습니다. 이제 나는 당신이 나에게 준 정보로 문제를 해결하려고 노력할 것입니다. 정말 고마워,,,
이 스레드를 읽고 코드에 문제가 있다고 생각합니다 => WindowRefresh() 함수 가 도움이 되지 않습니다.
 
안녕,

표시기를 재설정하여 처음부터 모두 다시 그리도록 강제하는 것 같습니다!? 내 문제는 새 데이터의 기능에서 과거 데이터를 변경하는 기능 사용하고 있으며 결과는 시간이 지남에 따라 내 차트가 대량이된다는 것입니다. 전체 지표를 주기적으로 다시 그려야 합니다. 최근에 저는 시간 프레임을 변경하여 원래의 시간 프레임으로 돌아가면 차트 창을 깨끗하게(다시 그려짐) 얻을 수 있습니다. 내 코드의 스키마는 다음과 같습니다.

 int start (){
   int limit ;
   int counted_bars = IndicatorCounted () ;
   //---- check for possible errors
   if ( counted_bars < 0 ) return ( - 1 ) ;
   //---- last counted bar will be recounted
   if ( counted_bars > 0 ) counted_bars --;
   limit = Bars - counted_bars ;
   if ( limit > GV ) limit = GV ;
   //---- main loop
   for ( int i = limit ; i >= 1 ; i -- ){
 
 
{ calculates the variable and feed the buffers }
 
return ( 0 ) ; }
정말 감사합니다,,,
 
코드에 2줄 삽입

 int start (){
   int limit ;
   int counted_bars = IndicatorCounted () ;
   //---- check for possible errors
   if ( counted_bars < 0 ) return ( - 1 ) ;
   //---- last counted bar will be recounted
   if ( counted_bars > 0 ) counted_bars --;
   limit = Bars - counted_bars ;
 
   double startTime = GetTickCount () ;
   if ( limit > GV ) limit = GV ;
   //---- main loop
   for ( int i = limit ; i >= 1 ; i -- ){
 
 
{ calculates the variable and feed the buffers }
 
   double finishTime = GetTickCount () ;
   Print ( " Calculation time is " , ( finishTime - startTime ) / 1000.0 , " seconds " ) ;
return ( 0 ) ; }
 

GV는 무엇입니까?

최근에 하고 있는 작업은 다음과 같습니다.

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

모든 눈금 에 표시기의 보이는 부분을 다시 그립니다. 하지만 보이지 않는 막대는 다시 그리지 않습니다.

 
phy :

GV는 무엇입니까?

최근에 하고 있는 작업은 다음과 같습니다.

for( int i = MathMax(WindowFirstVisibleBar(), Bars-IndicatorCounted()); i>= 0; i--){

모든 눈금에 표시기의 보이는 부분을 다시 그리지만 보이지 않는 막대는 다시 그리지 않습니다.


GV는 테스트를 백업하려는 기간에 따라 제한을 설정하는 데 사용하는 전역 변수입니다.

당신들은 멋진데!! 오늘 오후에 이 코드를 구현하겠습니다.

 for ( int i = MathMax ( WindowFirstVisibleBar () , Bars - IndicatorCounted ()) ; i >= 0 ; i -- ){
당신의 관대함에 감사드립니다,,,