오류, 버그, 질문 - 페이지 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 );

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