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

 
Konstantin Karpov :
컴파일 단계에서 터미널의 비트 수를 결정하는 방법은 무엇입니까? 식별자 TERMINAL_X64는 다음과 같은 이유로 적합하지 않습니다. 기능을 위한 것입니다. 도움말에 작성되지 않은 매크로가 있을 가능성이 가장 높지만 때때로 이러한 형식 또는 다른 형식으로 표시되는 매크로가 있습니다. :)
아아, 그들은 오지 않습니다. 변수 _IsX64가 있지만 런타임에 작동합니다.
 

32비트 터미널용, 64비트 터미널용으로 2개의 dll을 사용하는 경우 어떻게 빠져나옵니까? 프로그램 사본을 두 개 보관하는 것은 정결하지 않습니다 ...

그건 그렇고, 경험이 있는 사람은 코드가 ME x64에서 컴파일되면 32비트 터미널에서 오류 없이 작동하거나 코드 실행의 숨겨진 기능이 여전히 남아 있습니까?

 

예를 들어, 32비트 터미널 library_x86.dll 및 64비트 터미널 library_x64.dll용 라이브러리에는 funcTest(...) 함수가 있습니다.

전체 파일 내에서 가져오기 가 표시되는 경우 다음과 같은 구성을 작성하는 것이 옳습니다.

 void CClass::Test(...) {
  код метода...

   if ( TerminalInfoInteger ( TERMINAL_X64 )) {
       #import library_x64.dll
         library_x64::funcTest(...);
       #import
   } else {
       #import library_x86.dll
         library_x86::funcTest(...);
       #import
   }

   код метода...
}
아니면 이 트릭이 작동하지 않을까요?
 
Konstantin Karpov :
아니면 이 트릭이 작동하지 않을까요?

내가 아는 한, 아니다. 두 dll을 모두 가져올 수 있으며 터미널의 비트 수에 따라 둘 중 하나 의 기능을 호출 할 수 있습니다.

일반적으로 비트 깊이에 따라 두 가지 버전으로 나누는 것은 그렇게 미친 옵션이 아닙니다.

 

나는 지표 (표준 세트 중 하나)를 취하고 고문에게 전화합니다.

 iCustom ( NULL , 0 , "Momentum" , 0 , 1 );

테스터에서 시각화로 EA를 실행하면 모든 것이 작동하고 표시기가 그려집니다.

이제 표시기에서 한 줄을 변경합니다.

ExtMomBuffer[i]=close[i]* 100 /close[i-InpMomPeriod];

이것에:

ExtMomBuffer[i]= 100 ;

이제 표시기는 아무 것도 그리지 않습니다. 세로 눈금 도 표시되지 않습니다.

실수는 어디에 있습니까? 메타 트레이더 4 빌드 765.

 
눈금이 나타나려면 창 내에서 두 개의 다른 값이 필요합니까? EMNIP. 이것이 버그로 간주될 수 있는지 확실하지 않습니다.
 

좋아요, 관습에 얽매이지 않는 행동이라고 합시다 :)

정말 감사합니다만, 한가지 더 질문이 있습니다. 예, 다음과 같이 작동했습니다.

ExtMomBuffer[i]=i% 2 ;

그래서 다시 멈췄습니다.

ExtMomBuffer[ 0 ]=i% 2 ;

이전 버전의 MT에서는 작동했지만 새 버전에서는 어떤 문제가 있습니까?

 

따라서 두 번째 옵션에서 하나의 값.

사실 제가 틀릴 수도 있습니다.

 

글쎄, 다음과 같이 할 수 있지만 여전히 작동하지 않습니다.

ExtMomBuffer[ 0 ]=cnt++;

문제의 본질은 어드바이저의 각 단계에서 표시기의 0 번째 막대에 쓰려는 시도가 아무 것도주지 않는다는 것입니다.

 

파낼 곳을 찾은 것 같습니다. 변경

 ArraySetAsSeries (ExtMomBuffer, false );

사실로 바뀌었고 무언가가 나타나기 시작했습니다. 취해서 갈게.