mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 132

 
Igor Makanu :

클래스의 랩 표시기 계산 - 버퍼를 클래스 필드에 바인딩

아아...
아무것도 성공하지 못했습니다. 버퍼가 클래스 내부에 있고 핸들이 있더라도 클래스 인스턴스를 삭제한 후에도 생성된 모든 내부 중간 계산 버퍼는 여전히 RAM에 남아 있습니다.

메모리는 TF를 변경해야만 지워집니다.

분명히 핸들로 메모리를 지우는 명령이 충분하지 않습니다. 예를 들어 MemErase(int 핸들);

 
Nikolai Semko :

아아...
아무것도 성공하지 못했습니다. 버퍼가 클래스 내부에 있고 핸들이 있더라도 클래스 인스턴스를 삭제한 후에도 생성된 모든 내부 중간 계산 버퍼는 여전히 RAM에 남아 있습니다.

메모리는 TF를 변경해야만 지워집니다.

분명히 핸들로 메모리를 지우는 명령이 충분하지 않습니다. 예를 들어 MemErase(int 핸들);

1. 개체에 대한 포인터와 개체 인스턴스의 조합(* 에 대해 이야기하고 있음) - 확인되었습니까?

2. 소멸자 가 배열의 크기를 쓰고 삭제했습니까? (ArrayFree() 및 ArrayResize(arr,0,0) )

 
Nikolai Semko :

아아...
아무것도 성공하지 못했습니다. 버퍼가 클래스 내부에 있고 핸들이 있더라도 클래스 인스턴스를 삭제한 후에도 생성된 모든 내부 중간 계산 버퍼는 여전히 RAM에 남아 있습니다.

메모리는 TF를 변경해야만 지워집니다.

분명히 핸들로 메모리를 지우는 명령이 충분하지 않습니다. 예를 들어 MemErase(int 핸들);

IndicatorRelease를 사용하셨습니까?

하지만 여전히 시간 낭비라고 생각합니다. 말해봐, 왜 필요해? 만화를 그리세요? 그리고 무역? 직선으로 늘어날 때까지 이동 평균 을 평균합니까?

 
Nikolai Semko :

아아...
아무것도 성공하지 못했습니다. 버퍼가 클래스 내부에 있고 핸들이 있더라도 클래스 인스턴스를 삭제한 후에도 생성된 모든 내부 중간 계산 버퍼는 여전히 RAM에 남아 있습니다.

메모리는 TF를 변경해야만 지워집니다.

분명히 핸들로 메모리를 지우는 명령이 충분하지 않습니다. 예를 들어 MemErase(int 핸들);

터미널은 프로그램에서 캐시를 사용하지 않더라도 일정 시간 동안 캐시를 저장합니다.

메모리가 해제된 시간을 감지할 수 있습니다.

 
Alexey Viktorov :

IndicatorRelease를 사용하셨습니까?

하지만 여전히 시간 낭비라고 생각합니다. 말해봐, 왜 필요해? 만화를 그리세요? 그리고 무역? 직선으로 늘어날 때까지 이동 평균을 평균합니까?

네, 알렉스 감사합니다. 이 기능을 잊어버렸습니다. 전에 본 적이 있지만 한 번도 사용하지 않았습니다.

시험을 마친. 문제가 발생하고 있습니다. 삭제하면 삭제되지만 제거 후에는 모든 것이 중지됩니다.

다음 매개변수를 사용 하여 표시기를 계산 하기 전에 DrawSetup() 함수에 한 줄의 코드를 추가했습니다.

 IndicatorRelease (handle);
handle= iMA ( _Symbol , _Period ,per1, 0 ,MaMethod,PriceBase);
for ( int i= 0 ;i<N;i++) handle= iMA ( _Symbol , _Period ,per2, 0 ,MaMethod,handle);

표시기가 단순히 작동을 멈추고 아직 이유를 이해할 수 없습니다.

알렉세이 빅토로프 :

하지만 여전히 시간 낭비라고 생각합니다. 말해봐, 왜 필요해? 만화를 그리세요? 그리고 무역? 직선으로 늘어날 때까지 이동 평균을 평균합니까?

나는 당신에게 절대적으로 동의합니다. 그냥 쓸모없는 장난감일 뿐입니다.

 
Andrey Khatimlianskii :

터미널은 프로그램에서 캐시를 사용하지 않더라도 일정 시간 동안 캐시를 저장합니다.

메모리가 해제된 시간을 감지할 수 있습니다.

나는 6분을 기다렸다 - 아무것도 청소되지 않았다.

 
Igor Makanu :

1. 개체에 대한 포인터와 개체 인스턴스의 조합(* 에 대해 이야기하고 있음) - 확인되었습니까?

2. 소멸자가 배열의 크기를 쓰고 삭제했습니까? (ArrayFree() 및 ArrayResize(arr,0,0) )

1. 예, 포인터, new 및 delete를 통해 수행했습니다.

2. 따라서 배열이 없습니다. 저것들. 내부 배열이 있지만 그 이름은 없습니다. 번호만 처리합니다.

또한 for 루프가 반복될 때마다 핸들 변수의 값이 1씩 증가합니다. 저것들. 내부 버퍼가 곱해지고 이전 버퍼는 모두 다음 버퍼 계산에 포함됩니다.

논리적으로 IndicatorRelease(handle)를 수행해야 합니다. 지표의 다음 완전히 새로운 계산 전에, 그러나 나는 이미 이것이 지표를 죽인다고 위에서 썼습니다. 이유는 명확하지 않습니다.

 
Nikolai Semko :

네, 알렉스 감사합니다. 이 기능을 잊어버렸습니다. 전에 본 적이 있지만 한 번도 사용하지 않았습니다.

시험을 마친. 문제가 발생하고 있습니다. 삭제하면 삭제되지만 제거 후에는 모든 것이 중지됩니다.

다음 매개변수를 사용 하여 표시기를 계산 하기 전에 DrawSetup() 함수에 한 줄의 코드를 추가했습니다.

표시기가 단순히 작동을 멈추고 아직 이유를 이해할 수 없습니다.

나는 당신에게 절대적으로 동의합니다. 그냥 쓸모없는 장난감일 뿐입니다.

나는 조금 그렇게 생각하지 않았다. 차트 정렬과 같은 몇 가지 핸들을 만들어야 하는 것 같습니다.

currChart= ChartNext (prevChart); // на основании предыдущего получим новый график

그리고 새 손잡이를 받으면 중고는 중고처럼 버릴 수 있습니다 ...

 
Alexey Viktorov :

나는 조금 그렇게 생각하지 않았다. 차트를 반복하는 것과 같이 몇 가지 핸들을 만들어야 하는 것 같습니다.

그리고 새 손잡이를 받으면 중고는 중고처럼 버릴 수 있습니다 ...

그것은 가지 않을거야

 
Nikolai Semko :

그것은 가지 않을거야

왜요?