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

 
mql5 :
아니오, 이것은 32비트 터미널 문제만이 아닙니다. 그러나 오늘날 32비트용 솔루션이 준비되었으며 64비트에서는 여전히 256Kb의 스택 제한이 있습니다.
그러나 프로그래머 자신이 속성을 통해 필요한 스택 크기를 지정하지 않으면 터미널의 EX5가 기본 스택 크기(256Kb)로 작동합니다.

큰 크기에 대해.
함수 내부의 각 변수 선언(정적 변수 제외)은 스택에 공간이 할당되는 반면, 로컬 변수 에 대한 스택 공간 할당은 호출할 때마다 발생합니다.

따라서 함수의 크기가 64Kb인 지역 변수가 있으면 스택은 3번의 중첩 호출에 충분하며 4번째 호출에서는 스택이 오버플로됩니다(스택의 일부가 터미널의 내부 요구 사항으로 이동하기 때문에). 따라서 대용량 로컬 데이터가 필요한 경우 동적 메모리를 사용하는 것이 좋습니다. 함수에 들어갈 때 로컬에 필요한 메모리가 시스템에 할당되고(new, ArrayResize) 함수가 종료되면 메모리가 삭제됩니다( 삭제, ArrayFree).

자세한 설명 감사합니다. 그러나 그것은 확실히 내 문제가 아닙니다. 다리가 자라는 기능이 이미 발견되었고 그러한 볼륨(64Kb - 256Kb)이 없기 때문에 이 오류를 감지하기 위해 테스트 EA를 작성하려고 합니다. 밤이 되면 기능에 문제가 있는 전문가를 서비스데스크에 보내겠습니다.

 

동일한 기능( CLBufferWrite ( ) ) 의 작업에 대한 또 다른 후속 질문(도움말에서 이를 명확히 하십시오 ).

ArrayIsSeries 플래그가 설정된(==true) 표시기 버퍼 에서 직접 버퍼에 정보를 쓰는 경우 입력 배열을 어떤 방향으로 읽습니까?

나는 깃발이 무시될 것이라고 의심하고, 게다가 그것이 어디에서 읽힐지 명확하지 않습니다. 지정된 오프셋은 어레이의 물리적 끝에서 계산됩니까 아니면 처음부터 계산됩니까?

물론 지금 은 만일의 경우를 대비하여 물을 날릴 것입니다(ArrayIsSeries == false로 작업할 것입니다). 하지만 여전히?

 
현재 OpenCL 버퍼로 작업하는 기능은 완전하지 않으며 보완/추가될 예정입니다.
offset - 이 함수에서 실제로 OpenCL 버퍼의 시작부터 바이트 단위의 오프셋과 함수에 전달된 배열은 ArrayIsSeries 플래그를 고려하지 않고 0 요소에서 복사됩니다.
 
mql5 :
1. 현재 OpenCL 버퍼로 작업하는 기능은 완전하지 않으며 보완/추가될 예정입니다.
2. 오프셋 - 이 함수에서 실제로 OpenCL 버퍼의 시작부터 바이트 단위의 오프셋과 함수에 전달된 배열은 ArrayIsSeries 플래그를 고려하지 않고 0 요소에서 복사됩니다.

1. 카그베를 의심했는데... :)

2. 네. 항해했다. 이것은 부분적 으로 표시기 버퍼 에서 직접 쓰기가 (아직) 작동하지 않는다는 것을 의미합니다.

물론 시작 위치를 소스와 수신기 모두에서 이동할 수 있도록 해야 합니다. 여기처럼:

int   ArrayCopy (
    void    dst_array[] ,        // куда копируем
    void    src_array[] ,        // откуда копируем
    int     dst_start=0 ,        // с какого индекса пишем в приемник
    int     src_start=0 ,        // с какого индекса копируем из источника
    int     cnt=WHOLE_ARRAY      // сколько элементов
   );

인덱싱(방향 및 측정 단위(바이트/요소))과 함께 도움말에서 더 주의하시기 바랍니다. 그리고 이 ..시간이 많이 아쉽네요.. :)))

--

답변 해주셔서 감사합니다. 기능 개선을 위한 귀하의 노력에 진심으로 감사드립니다.

연회가 계속되기를 참을성 있게 기다리겠습니다. 그 사이에 당신은 단검의 끝에서 춤을 추어야 합니다. :)

 

빌드 597 x64, 방금 설치했습니다.

2012.02.23 21:43:24 OpenCLTest(EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:13 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:12 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:10 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:09 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:08 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:07 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 21:43:06 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류

이전에는 그렇지 않았습니다.

// Win7x64

 
MetaDriver :

빌드 597 x64, 방금 설치했습니다.

이전에는 그렇지 않았습니다.

// Win7x64

예제를 다시 컴파일해 보십시오. 나는 확인했다 - 모든 것이 나를 위해 작동합니다.
 
Renat :
예제를 다시 컴파일해 보십시오. 나는 모든 것이 나를 위해 작동하는지 확인했습니다.

이미 백 번 다시 컴파일되었습니다. 다시 재부팅하겠습니다.

 
MetaDriver :

... 바로 지금 다시 재부팅하겠습니다.

아니요, 도움이 되지 않았습니다.

레나트 :

...... 나는 확인했다 - 모든 것이 나를 위해 작동합니다.

그래서 그것은 나에게도 효과가 있습니다. 그러나 10-40주기마다 한 번씩 그러한 카카가 날아갑니다.

2012.02.23 23:16:44 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 23:16:43 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 23:16:42 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
2012.02.23 23:16:36 OpenCLTest (EURUSD,M30) SaveBitmapToFile 'Mandelbrot.bmp' 열기 오류
 
MetaDriver :

아니요, 도움이 되지 않았습니다.

그래서 그것은 나에게도 효과가 있습니다. 그러나 10-40주기마다 그러한 kaka가 날아갑니다.

또한 발견했습니다.

이는 지정된 파일이 동기화 없이 두 개의 다른 스레드에서 작업 중이고 주기적으로 파일 이 잠겨 있기 때문입니다.

  1. 스크립트 스레드는 초당 10번 파일을 덮어씁니다(카드 속도에 따라 다름).
  2. 차트는 스크립트의 요청에 따라 스트림의 이미지를 다시 로드합니다.

그림이 있는 예제는 OpenCL로 작업하는 원리를 보여주기 위해 만든 것이기 때문에 문제가 되지 않습니다.

Документация по MQL5: Файловые операции / FileMove
Документация по MQL5: Файловые операции / FileMove
  • www.mql5.com
Файловые операции / FileMove - Документация по MQL5
 
Renat :

그림이 있는 예제는 OpenCL로 작업하는 원리를 설명하기 위해 만든 것이기 때문에 문제가 되지 않습니다.

동의한다. 또한 GraphLabel 개체의 버퍼에 직접 보낼 시간입니다. :)