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

 

안녕하세요! 오픈씨엘! 디버그 모드에서 코드는 훌륭하게 작동합니다.... 테스터에서는 CLContextCreate... Service Desk를 호출할 때 오류 5100이 발생합니다.

Terminal CPU: GenuineIntel Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz with OpenCL 1.1 (4 units, 2095 MHz, 5990 Mb, version 2.0)

터미널 GPU: Advanced Micro Devices, Inc. OpenCL 1.1을 사용하는 Turks(6개 장치, 725MHz, 1024Mb, 버전 CAL 1.4.1703(VM))

빌드 619 Windows 7 SP1 64-x

...

나는 다른 vidyukha와 함께 돼지에서 그것을 반복했습니다. 도움이되지 않았습니다 ...

파일:
 
MigVRN :

디버그 모드에서 코드는 훌륭하게 작동합니다.... 테스터에서는 CLContextCreate... Service Desk를 호출할 때 오류 5100이 발생합니다.

이것은 거의 버그가 아닙니다. OpenCL 테스터에서 작동하지 않는다고 생각합니다. 지원이 비활성화되었습니다. 일시적으로 비활성화되거나 영구적으로 질문이 열려 있습니다.
 
MigVRN :

안녕하세요! 오픈씨엘! 디버그 모드에서 코드는 훌륭하게 작동합니다.... 테스터에서는 CLContextCreate... Service Desk를 호출할 때 오류 5100이 발생합니다.

...

나는 다른 vidyukha와 함께 돼지에서 그것을 반복했습니다. 도움이되지 않았습니다 ...

테스터에서 OpenCL이 활성화되었다고 발표했는지 기억나지 않습니다. 아마도 제가 놓친 부분이 있었을 것입니다.

기능이 터미널에서 디버깅되는 동안 지원은 준비되는 대로 테스터에서 연결됩니다.

결국 원격 테스트를 지원하는 것이 필요합니다.

 
MetaDriver :
이것은 거의 버그가 아닙니다. OpenCL 테스터가 작동하지 않는다고 생각합니다. 지원이 비활성화되었습니다. 일시적으로 비활성화되거나 영구적으로 질문이 열려 있습니다.
우크라이나 :

테스터에서 OpenCL이 활성화되었다고 발표했는지 기억나지 않습니다. 아마도 제가 놓친 부분이 있었을 것입니다.

기능이 터미널에서 디버깅되는 동안 지원은 준비되는 대로 테스터에서 연결됩니다.

결국 원격 테스트를 지원하는 것이 필요합니다.

고맙습니다! :( 초조하게 기다리겠습니다.. 벌써 해보고 싶네요.
 

고문을 쓰기로 결정했습니다. 처음부터 작성을 시작할 때 각 단계에서 오류가 있는지, 코드가 작동하는지 확인합니다. 나는 "새로운 바" 이벤트에 대한 작업과 같은 일을 전문가 고문의 준비만으로 해결하는 방식이 당분간 마음에 들지 않았습니다. 길고 지루한 시간 동안 이유를 찾았습니다 - 코드에 줄만 남아있을 때만 바닥에 도달했습니다

//+----------------------------------------------- --------------------+
//| 전문가 틱 기능 |
//+----------------------------------------------- --------------------+
무효 OnTick()
{
Alert("새 틱",TimeCurrent());
}
//+----------------------------------------------- --------------------+

그 결과 테스터의 보고서에 따르면 100% 시뮬레이션 품질을 얻었고 시뮬레이션된 틱의 수 는 38242987이었고 테스터의 로그(하루 종일)에 거친 간격이 있었고 13259 틱만 계산했습니다...
이유는 무엇입니까?

파일:
20120408.log  2074 kb
 

Renat, Slava, #include와 유사하게 작동하지만 동일한 인스턴스의 재컴파일을 허용하는 특수 전처리기 지시문 을 (쉽게) 만든다면 매개변수화에 가까워질 수 있습니다. 예시:

 #define ArrayType double
#include "ISTemplate.mqh"
#define ArrayType float
#include "ISTemplate.mqh"
#define ArrayType int
#include "ISTemplate.mqh"
#define ArrayType uint
#include "ISTemplate.mqh"
#define ArrayType long
#include "ISTemplate.mqh"
#define ArrayType ulong
#include "ISTemplate.mqh"
#define ArrayType short
#include "ISTemplate.mqh"
#define ArrayType ushort
#include "ISTemplate.mqh"
#define ArrayType char
#include "ISTemplate.mqh"
#define ArrayType uchar
#include "ISTemplate.mqh"
#define ArrayType string
#include "ISTemplate.mqh"

이제 컴파일되지만 작동하지 않습니다(또는 오히려 첫 번째 #include에 대해서만 작동합니다). 특수 지시문(#reinclude, #Include 또는 #template)을 사용하면 문제를 해결할 수 있습니다. 그건 그렇고, 표준 유형에 대한 함수 오버로드를 작성할 때 많은 시간을 절약할 수도 있습니다. 그리고 표준 라이브러리는 작고 아름답게 될 수 있습니다. 그리고 이미 "일반" 매개변수화된 클래스와 멀지 않습니다. 언어에 새 구문을 추가하고 숨겨진 #reinclude를 자동화하기만 하면 됩니다.

// 이 포함이 내 자신의 전처리기에 의해 확장되는 작업 예제 here .

파일:
ISort.mqh  2 kb
 

또한 클래스 매개변수화의 변형입니다.

#define _MyContainer(name,type,size) class name { public : type array[size]; virtual type At( int i){ return array[i];}}
#define  ASize 8
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
   _MyContainer(MyClass, int ,ASize);
   MyClass MyVar;
   Print( sizeof (MyVar)); 
   for ( int i= 0 ;i<ASize;i++)
     {
      MyVar.array[i]=i*i;
     }
   for ( int i= 0 ;i<ASize;i++)
     {
      Print(MyVar.At(i));
     }
  }

공장. 상속을 고정하는 것도 가능합니다. ;)

그러나 이 옵션을 어느 정도 허용 가능하게 사용하려면 최소한 매크로에서 줄 바꿈을 수행해야 합니다.

// 예, 그런 기능은 (습관적으로?) 꽤 거칠게 보입니다. :))

파일:
DefTest.mq5  2 kb
 
MetaDriver :

Renat, Slava, #include와 유사하게 작동하지만 동일한 인스턴스의 재컴파일을 허용하는 특수 전처리기 지시문 을 (쉽게) 만든다면 매개변수화에 가까워질 수 있습니다. 예시:

아이디어는 명확하지만 템플릿을 즉시 구현하는 것이 좋습니다.

이 문제는 잠시 후에 다시 다루겠습니다.

 
Renat :

아이디어는 명확하지만 템플릿을 즉시 구현하는 것이 좋습니다.

이 문제는 잠시 후에 다시 다루겠습니다.

만세!!! 고맙습니다.
 

다음은 테스터에 쾅 소리가 나는 기록입니다. 차트에 전문가를 첨부하려고 하면 오류가 발생합니다.

 int OnInit ()
  {
   hPerCros= iCustom ( _Symbol , 0 , "\\Каналы\PercentageCrossoverChannel" ,Percent,Shift) ;
   if ( hPerCros < 0 )
       Print ( "Ошибка создания индикатора=  " , GetLastError ());
   return ( 0 );
  }