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

 
svds75 :

안녕하세요. W1 또는 MN1만 표시하도록 플래그를 수동으로 설정했지만 추세선 의 속성을 요청할 때 res 변수가 항상 true인 이유는 무엇입니까?

반쪽 중 하나만 표시해야합니다.

...get... 속성을 가져오는 중입니다. 그리고 res=true인 경우 성공적인 부동산 취득의 신호일 뿐입니다.

속성을 설정하려면 ...set...을 사용하십시오.

 

내 이전 게시물에 계속됩니다. 과학적 찌르기의 방법을 사용하여 버그로 이어지는 문제가 있는 곳을 찾을 수 있었습니다.

다음과 같은 기능이 있는 라이브러리가 있습니다.

//---- testbuglib.mq5 ------

#property library

class A { }; class B   { private :    A* a; public :    A* b; }; int Test() export {    return 0 ; }

다음은 기본 파일입니다.

#include <Files\File.mqh>   // тут можно указать любой файл mqh

#import "testbuglib.ex5"
   int Test();
#import  

int OnInit () {  Test(); return 0 ; }

결과 어드바이저가 작동하지 않고 로그에 "EX5 로드 실패"가 표시됩니다.

파일:
TestBug.mq5  1 kb
 
svds75 :

안녕하세요. W1 또는 MN1만 표시하도록 플래그를 수동으로 설정했지만 추세선 의 속성을 요청할 때 변수 res가 항상 true인 이유는 무엇입니까?

반쪽 중 하나만 표시해야합니다.

매개변수 수가 잘못되었습니다. 함수를 첫 번째 옵션으로 호출했지만 두 번째 옵션으로 사용하거나 결과를 비교해야 합니다.
 
TheLiteShadow :
그것이 방법이지만 각각의 새로운 막대로 지정된 버퍼의 마지막 "인덱스"를 모두 "지울" 필요가 있다는 것이 밝혀졌습니다. 왜냐고? MT4에는 그런 상황이 없었습니다, 제가 이해합니다. 초기 초기화 중에 청소했지만 이론상으로는 MT 자체에서 해야 하지만, 이론상으로는 MT가 초기화 중에 수행해야 하며 프로그래머가 아니라 초기화 중에 수행해야 합니다. 어떤 목적으로 표시기 버퍼가 메모리 할당 을 이해하지 못하는지...
몇 년 전에 이 질문을 했을 때 최적화 목적으로 한 것이라고 들었습니다. 필요한 만큼 정확하게 초기화합니다. 그리고 거기에 계산된 데이터를 즉시 채우면 0을 미리 쓸 필요가 전혀 없습니다. MT5는 여러 면에서 MT4와 다릅니다.
 
marketeer :
몇 년 전에 이 질문을 했을 때 최적화 목적으로 한 것이라고 들었습니다. 필요한 만큼 정확하게 초기화합니다. 그리고 거기에 계산된 데이터를 즉시 채우면 0을 미리 쓸 필요가 전혀 없습니다. MT5는 여러 면에서 MT4와 다릅니다.
모두가 MT4가 MT5와 다르다는 것을 이해하지만 최적화에 대해서는 동의하지 않을 것이고 프로그래머는 추가로 추적할 것이 너무 많고 저급 언어와 비교할 수 없지만 나에게는 너무 불필요하고 일반적으로 분명합니다. 감사해요 ...
 
TheLiteShadow :
매개변수 수가 잘못되었습니다. 함수를 첫 번째 옵션으로 호출했지만 두 번째 옵션으로 사용하거나 결과를 비교해야 합니다.
그것도 시도했다. 플래그는 실제로 작동하지만(선은 절반에만 나타남) 전문가는 두 플래그가 모두 켜져 있음을 확인합니다.
 long res;
ObjectGetInteger ( 0 , "line" , OBJPROP_TIMEFRAMES , OBJ_PERIOD_W1 | OBJ_PERIOD_MN1 ,res);
if (( bool )res) Alert ( "линия line показывается на OBJ_PERIOD_W1 и OBJ_PERIOD_MN1" );
 
svds75 :
그것도 시도했다. 플래그는 실제로 작동하지만(선은 절반에만 나타남) 전문가는 두 플래그가 모두 켜져 있음을 확인합니다.

그리고 당신이 실제로 원하는 것은 무엇입니까? 매주 또는 매월 기간에 대한 가시성을 요청하고 있습니다. 따라서 프로그램은 그 중 하나가 활성화되어 있으면 true를 반환합니다.

2번의 통화 후 별도로 요청하세요.

 
svds75 :
그것도 시도했다. 플래그는 실제로 작동하지만(선은 절반에만 나타남) 전문가는 두 플래그가 모두 켜져 있음을 확인합니다.

그래서 가시성을 직접 설정해야 할까요?

 ObjectSetInteger ( 0 , "line" , OBJPROP_TIMEFRAMES , OBJ_PERIOD_W1 );
 
svds75 :

안녕하세요. W1 또는 MN1만 표시하도록 플래그를 수동으로 설정했지만 추세선 의 속성을 요청할 때 res 변수가 항상 true인 이유는 무엇입니까?

반쪽 중 하나만 표시해야합니다.

라인이 항상 존재하기 때문에 값은 항상 읽혀집니다. 선이 보이지 않는다고 해서 선이 없는 것은 아닙니다.
 
barabashkakvn :

그래서 가시성을 직접 설정해야 할까요?

아니요, 수동으로 설정해야 하지만 프로그래밍 방식으로 확인해야 합니다.