표시기의 OnDeinit - 페이지 2

 
eevviill :

아니요, 삭제되지 않습니다. 나는 터미널을 끕니다.

Deinit를 Init에 밀어 넣으면 작동하지 않습니다.

사용자 정의 개체 삭제 기능만 도움이 되었습니다.

글쎄, 그것이 삭제되지 않는다면, 당신이 거기에서 무엇을 상상했는지 누가 알겠습니까? :)

 
keekkenen :

글쎄, 그것이 삭제되지 않는다면, 당신이 거기에서 무엇을 상상했는지 누가 알겠습니까? :)

논리적으로. 그러나 차트에서 지표를 단순히 제거하면 영역이 제거됩니다. 단말기가 꺼져 있을 때, 아니요. 영역을 제거하기 위해 init에 함수를 밀어 넣은 경우에만(deinit의 동일한 기능).

즉, deinit가 모든 사람에게 효과가 있음을 이해합니다. 그리고 터미널을 닫거나 열 때 언제 발동해야 합니까?

 
int deinit()
  {

deinit2();

return(0);
}

//////////////////////

void deinit2()

{

  for(int i=ObjectsTotal()-1;i>=0;i--)

  {

  if(StringFind(ObjectName(i),Highest_vol_zones_name)!=-1)

  ObjectDelete(ObjectName(i));

  }

 

}
 
eevviill :

논리적으로. 그러나 차트에서 지표를 단순히 제거하면 영역이 제거됩니다. 단말기가 꺼져 있을 때, 아니요. 영역을 제거하기 위해 init에 함수를 밀어 넣은 경우에만(deinit의 동일한 기능).

즉, deinit가 모든 사람에게 효과가 있음을 이해합니다. 그리고 터미널을 닫거나 열 때 언제 발동해야 합니까?

예, 터미널을 닫으면 작동합니다.

어쩌면 당신은 오랫동안 어떤 종류의 논리를 가지고 있습니까?

표시기를 끄는 순간에 무언가를 엄청나게 계산하고 터미널이 어떻게 든 비뚤어진 상태로 기다리거나 전체를 중단한다는 의미에서 OnDeinit가 작동하지 않습니까?

분명히 헬프데스크에 가는 길..

 
keekkenen :

예, 터미널을 닫으면 작동합니다.

어쩌면 당신은 오랫동안 어떤 종류의 논리를 가지고 있습니까?

표시기를 끄는 순간에 무언가를 엄청나게 계산하고 터미널이 어떻게 든 비뚤어진 상태로 기다리거나 전체를 중단한다는 의미에서 OnDeinit가 작동하지 않습니까?

분명히 헬프데스크에 가는 길..

글쎄, 그것이 당신을 위해 작동한다면 모든 것이 정상입니다. 나는 나 자신을 바라볼 것이다.
 

변경된 사항도 없고 추가된 사항도 없습니다.

버퍼 표시기. 작동 차트를 열었습니다 - M1 표시기를 부착했습니다 - 터미널을 닫았습니다 - 몇 분 안에 열었습니다. 스크린샷의 결과입니다.

그리고 이것은 코드에서 내가 또한 등록했다는 사실에도 불구하고

 //////////////////////////////////////////////////////////////////
int OnCalculate ( const int rates_total, const int prev_calculated, const datetime &time[], const double &open[], const double &high[],
                 const double &low[], const double &close[], const long &tick_volume[], const long &volume[], const int &spread[])
  {
     //new bar
if (Time[ 0 ] != prevtime) 
{
 ArrayInitialize (body_up, EMPTY_VALUE );
ArrayInitialize (body_down, EMPTY_VALUE );
ArrayInitialize (shadow_up, EMPTY_VALUE );
ArrayInitialize (shadow_down, EMPTY_VALUE );
   ArrayInitialize (yell_body_up, EMPTY_VALUE );
ArrayInitialize (yell_body_down, EMPTY_VALUE );
ArrayInitialize (yell_shadow_up, EMPTY_VALUE );
ArrayInitialize (yell_shadow_down, EMPTY_VALUE );


prevtime = Time[ 0 ];
}

 

개발자 여러분, 문제를 해결하시겠습니까?

여기 당신을 위한 지표가 있습니다. 위의 게시물에서 내가 한 것을 시도하십시오.

차트를 열었습니다 - M1 표시기가 부착되어 있음 - 터미널을 닫았음 - 몇 분 안에 열었습니다.  

파일:
 
eevviill :

개발자 여러분, 문제를 해결하시겠습니까?

여기 당신을 위한 지표가 있습니다. 위의 게시물에서 내가 한 것을 시도하십시오.

차트를 열고 M1 표시기를 부착하고 터미널을 닫고 몇 분 안에 열었습니다.  

귀하의 지표와 관련된 상황이 정리되었습니다.

문제는 표시기가 진드기의 도착뿐만 아니라 첫 번째 그림과 누락 된 기록의 도착에 대해서도 계산된다는 것입니다.

1. 새로운 틱이 도착했습니다 - 지표가 안정되었습니다

2. 누락된 히스토리가 와서 터미널의 마지막 실행 에서 마지막 데이터와 마지막 틱 사이의 구멍을 막았습니다. 지표가 계산됩니다. 그러나 동시에 새로운 바의 상태는 없습니다!

이 문제를 해결하려면 막대의 수를 확인해야 합니다. 이 정도

   if (Time[ 0 ]!=prevtime || Bars !=prevbars)
     {
       ArrayInitialize (body_up, EMPTY_VALUE );
       ArrayInitialize (body_down, EMPTY_VALUE );
       ArrayInitialize (shadow_up, EMPTY_VALUE );
       ArrayInitialize (shadow_down, EMPTY_VALUE );
       ArrayInitialize (yell_body_up, EMPTY_VALUE );
       ArrayInitialize (yell_body_down, EMPTY_VALUE );
       ArrayInitialize (yell_shadow_up, EMPTY_VALUE );
       ArrayInitialize (yell_shadow_down, EMPTY_VALUE );

      prevtime=Time[ 0 ];
      prevbars= Bars ;
     }
 
stringo :

귀하의 지표와 관련된 상황이 정리되었습니다.

문제는 표시기가 진드기의 도착뿐만 아니라 첫 번째 그림과 누락 된 기록의 도착에 대해서도 계산된다는 것입니다.

1. 새로운 틱이 도착했습니다 - 지표가 안정되었습니다

2. 누락된 히스토리가 와서 터미널의 마지막 실행에서 마지막 데이터와 마지막 틱 사이의 구멍을 막았습니다. 지표가 계산됩니다. 그러나 동시에 새로운 바의 상태는 없습니다!

이 문제를 해결하려면 막대의 수를 확인해야 합니다. 이 정도

고맙습니다.

그러나 이것은 내 지표에만 있는 것은 아닙니다. 나는 당신이 이 문제를 해결할 것이라고 생각했습니다.

예를 들어, Deinit 터미널을 닫을 때 모든 프로그램에서 실행하십시오.

 
eevviill :

고맙습니다.

그러나 이것은 내 지표에만 있는 것은 아닙니다. 나는 당신이 이 문제를 해결할 것이라고 생각했습니다.

예를 들어 Deinit 터미널을 닫을 때 모든 프로그램에서 실행하십시오.

사실, 모든 프로그램의 deinit는 터미널이 닫힐 때 호출됩니다.

특별한 초기화 해제 이유 코드 도 있습니다. REASON_CLOSE