오류, 버그, 질문 - 페이지 2976

 
Nikolai Semko :
어떤 단점을 말씀하시는 건가요?
자원 집약도에 대해?
이것은 잘못된 진술이었습니다.
댓글 은 리소스를 덜 소모합니다.
전체 창에 텍스트가 있는 캔버스를 형성하고 표시하는 데 1-3밀리초가 걸립니다.
MT5에서는 주석 출력이 조금 더 오래 걸립니다. 텍스트 정보를 초당 30번 업데이트하려고 하면 여전히 브레이크가 표시되지 않습니다.

Canvas가 느려지는 이유를 자세히 이해하지 못했지만 모든 것이 같은 이유인 것 같습니다... 배열의 픽셀은 선택적으로 변경하고 다시 그리도록 명령할 수 없습니다. 먼저 배열을 변경한 다음 ResourceCreate를 확인합니다. 픽셀을 하나씩 복사한 다음 유사하게 하나씩 차트에 표시한 다음 차트의 또 다른 업데이트(ChartRedraw)를 표시합니다. 얼마나 많은 불필요한 작업이 ... 이것은 유용한 데이터 처리로 바쁠 때 어떤 경우에도 프로세서 로드를 완료합니다. 레이블은 최소한 더 적은 픽셀을 차지합니다(즉, 더 빨리 표시됨). 그런 다음 출력 메커니즘은 완전히 차트 내부에 있습니다( 배열 을 전달할 필요가 없음). 확신 하지만   나는 그들의 작업 알고리즘을 모르지만 그들이 더 빨리 작동하는 것 같습니다. 캔버스를 기반으로 텍스트 출력 패널을 만들곤 했습니다. 그리고 테스터에서 그러한 패널로 Expert Advisor를 시각적으로 테스트했을 때 나는 그 결과에 감명을 받지 못했습니다. EA 자체의 로드 외에 패널을 다시 그려 작업 속도가 느려졌습니다. 매 틱마다 지속적으로 업데이트( ResourceCreate - ChartRedraw ). 레이블이 있는 동안 나는 그러한 브레이크를 눈치채지 못했습니다.

 

아니면 내가 바보입니까 아니면 스키가 가지 않습니까? mt4 빌드 1320

 double LotStep = SymbolInfoDouble ( Symbol (), SYMBOL_VOLUME_STEP );
double Lot= 0.7 ;
PrintFormat ( "LotStep %f, lot %f, %f, %f %f" ,LotStep,Lot,Lot/LotStep, MathFloor (Lot/LotStep),( int ) double (Lot/LotStep));
//Print
//2021.03.07 23:42:46.507	2021.02.25 07:36:40  EA_CCIcross_v1.0 AUDJPY,M5: LotStep 0.010000, lot 0.070000, 7.000000, 6.000000 6.000000

p / s / 7이 6.9999라는 것을 이해하지만 0.7을 0.1로 나눈 이유는 6.9999가 아닌 7.000으로 인쇄 출력이 잘못된 것입니다.
 
Mihail Matkovskij :

Canvas가 느려지는 이유를 자세히 이해하지 못했지만 모든 것이 같은 이유인 것 같습니다... 배열의 픽셀은 선택적으로 변경하고 다시 그리도록 명령할 수 없습니다. 먼저 배열을 변경한 다음 ResourceCreate를 확인합니다. 픽셀을 하나씩 복사한 다음 유사하게 하나씩 차트에 표시한 다음 차트의 또 다른 업데이트(ChartRedraw)를 표시합니다. 얼마나 많은 불필요한 작업이 ... 이것은 유용한 데이터 처리로 바쁠 때 어떤 경우에도 프로세서 로드를 완료합니다. 레이블은 최소한 더 적은 픽셀을 차지합니다(즉, 더 빨리 표시됨). 그런 다음 출력 메커니즘은 완전히 차트 내부에 있습니다( 배열 을 전달할 필요가 없음). 확신 하지만   나는 그들의 작업 알고리즘을 모르지만 그들이 더 빨리 작동하는 것 같습니다. 캔버스를 기반으로 텍스트 출력 패널을 만들곤 했습니다. 그리고 테스터에서 그러한 패널로 Expert Advisor를 시각적으로 테스트했을 때 나는 그 결과에 감명을 받지 못했습니다. EA 자체의 로드 외에 패널을 다시 그려 작업 속도가 느려졌습니다. 매 틱마다 지속적으로 업데이트( ResourceCreate - ChartRedraw ). 레이블이 있는 동안 나는 그러한 브레이크를 눈치채지 못했습니다.

그것은 당신에게만 보인다.
공짜는 없지만 캔버스는 MT5에 존재하는 모든 것의 화면에 텍스트를 표시하는 가장 빠른 방법입니다. 캔버스가 기본이고 댓글과 레이블이 캔버스의 2차 제품이기 때문입니다.
프로세서 리소스에 너무 욕심이 있으면 인쇄물을 사용하십시오 ...
 
Mihail Matkovskij :

Canvas가 느려지는 이유를 자세히 이해하지 못했지만 모든 것이 같은 이유인 것 같습니다... 배열의 픽셀은 선택적으로 변경하고 다시 그리도록 명령할 수 없습니다. 먼저 배열을 변경한 다음 ResourceCreate를 확인합니다. 픽셀을 하나씩 복사한 다음 유사하게 하나씩 차트에 표시한 다음 차트의 또 다른 업데이트(ChartRedraw)를 표시합니다. 얼마나 많은 불필요한 작업이 ... 이것은 유용한 데이터 처리로 바쁠 때 어떤 경우에도 프로세서 로드를 완료합니다. 레이블은 최소한 더 적은 픽셀을 차지합니다(즉, 더 빨리 표시됨). 그런 다음 출력 메커니즘은 완전히 차트 내부에 있습니다( 배열 을 전달할 필요가 없음). 확신 하지만   나는 그들의 작업 알고리즘을 모르지만 그들이 더 빨리 작동하는 것 같습니다. 캔버스를 기반으로 텍스트 출력 패널을 만들곤 했습니다. 그리고 테스터에서 그러한 패널로 Expert Advisor를 시각적으로 테스트했을 때 나는 그 결과에 감명을 받지 못했습니다. EA 자체의 로드 외에 패널을 다시 그려 작업 속도가 느려졌습니다. 매 틱마다 지속적으로 업데이트( ResourceCreate - ChartRedraw ). 레이블이 있는 동안 나는 그러한 브레이크를 눈치채지 못했습니다.

당신이 모르는 것에 대해 이야기하지 마십시오. @Nikolai Semko 는 절대적으로 옳고 Canvas는 문제나 결함 없이 빠르게 작동합니다.
 

@일리아스

컴파일러 버그? 빌드 2817.

   const ushort AN_USHORT_CONSTANT = 1 ;
//---
   ushort avariable = 1 ;

   switch (avariable)
     {
       case AN_USHORT_CONSTANT :
         Print ( "Compiler bug ?" );
         break ;
     }


 
Nikolai Semko :
그것은 당신에게만 보인다.
공짜는 없지만 캔버스는 MT5에 존재하는 모든 것의 화면에 텍스트를 표시하는 가장 빠른 방법입니다. 캔버스가 기본이고 댓글과 레이블이 캔버스의 2차 제품이기 때문입니다.
프로세서 리소스에 너무 욕심이 있으면 인쇄물을 사용하십시오 ...

캔버스 자체가 OBJ_BITMAP_LABEL의 추가 기능이고 레이블이 OBJ_LABEL인 경우 레이블이 캔버스를 기반으로 한다는 것을 어떻게 결정했는지 궁금합니다.

여기 포럼에서 이야기하는 동안 나는 이미 주어진 수의 행과 열을 사용하여 레이블에 출력 패널을 스케치했습니다. 캔버스의 경우 다른 응용 프로그램에 다른 작업이 있습니다. 그리고 그녀는 그곳에서도 아주 좋은 일을 합니다.

알랭 벌리앙 :
당신이 모르는 것에 대해 이야기하지 마십시오. @Nikolai Semko 는 절대적으로 옳고 Canvas는 문제나 결함 없이 빠르게 작동합니다.

그럼 아마 다 알고 계시겠죠? 그런 다음 MetaTrader에서 차트에 대해 읽을 수 있는 지식이나 링크를 공유하여 내가 알고 있는 것을 알 수 있습니까? :)

 
Alain Verleyen :

@일리아스

컴파일러 버그? 빌드 2817.

MQL에서 const는 전혀 const가 아닙니다. 사실 const는 매크로를 통해서만 수 있습니다.

 //const ushort AN_USHORT_CONSTANT      = 1; //(*)
#define         AN_USHORT_CONSTANT  ushort ( 1 ) //(**)
void main()
{
         int i[AN_USHORT_CONSTANT];      //(1) нормально
         ushort avariable = 1 ;
         switch (avariable) {
         case AN_USHORT_CONSTANT:        //(2) нормально
                 break ;
        }
}
void f( int = AN_USHORT_CONSTANT ) {}   //(3) нормально
enum { e = AN_USHORT_CONSTANT };         //(4) нормально    
 
A100 :

MQL에서 const는 전혀 const가 아닙니다. 사실 const는 매크로를 통해서만 수 있습니다.

예, 그것은 실수입니다 :-D
 
Alain Verleyen :
예, 그것은 실수입니다 :-D

이것은 한 가지 경우가 아니라 (1) (2) (3) (4) 전체에서 그렇게 생각된다는 점에 유의하십시오. (*)에는 오류가 있고 (**)에는 정상입니다. 저것들. 엔티티로 누락된 상수

 
A100 :

이것은 한 가지 경우가 아니라 (1) (2) (3) (4) 전체에서 그렇게 생각된다는 점에 유의하십시오. (*)에는 오류가 있고 (**)에는 정상입니다. 저것들. 엔티티로 누락된 상수

알아요. 따라서 개발자에게 이 문제를 해결해 달라고 요청합니다.
사유: