MQL5에 대한 소원 - 페이지 117

 
HideYourRichess писал(а) >>
iPod에 거래?! - 맙소사, 바로 경고했어야 했는데. 아무 말도 하지 않고 쓰십시오. 한 마디도 하지 않겠습니다. 이제 모든 것이 명확해졌으니 이해심과 인내심을 가지고 대하겠습니다. iPod에서 거래하세요! - 아아아아....

당신의 동정에 감사하고 당신은 아프지 않고 적어도 진전이 없습니다

 

MT4에서 문제가 발생했습니다. MT5에서는 문제가 발생하지 않는지 확인하십시오(확인하지 않음).


맨 처음(init 이전)에 배열이 제공되었습니다.

xsell[3];

엑스바이[3];


그 전에 외부 변수:

외부 정수 Max_Array_Size = 13;


start() 루프에서:

ArrayResize(xsell, Max_Array_Size);

ArrayResize(xbuy, Max_Array_Size);


그런 다음 for() 루프:


for(int kss= Max_Array_Size; kss>0; kss--) {

x구매[kss] = . . . ;

. . .

}


Sell( Custom Indicator ) 및 Buy 모듈 모두에서 동일한 체계가 사용되었습니다. 변수가 다릅니다

그러나 원칙은 동일합니다. 처음에는 판매용으로 모든 것을 작성하고 편집했습니다. 모든 것이 훌륭하고 문제가 없습니다. 그런 다음 복사

이 모듈은 변수, 기호 등을 대체했습니다. 쇼핑 - 컴파일이 훨씬 오래 걸리고 전환

시간 프레임 사이에도 훨씬 더 많은 시간이 걸리기 시작했습니다. 판매 중지 - 아무 것도 변경되지 않았으며 제동이 걸렸습니다.

왼쪽만 판매 - 빠르게 실행됩니다. 컴파일러는 불평하지 않고 훨씬 더 오래 실행되었습니다.

나는 의심스러워 보이는 모든 것을 검토하고 구매에서 일부 부분을 다시 작성했습니다 - 속도가 느려집니다! ..

문제는 배열의 차원에 있는 것으로 나타났습니다: 13 => 0-12, 그리고 for-loop에서 13도 입력하려고 했습니다!


수정 후:

ArrayResize(xsell, Max_Array_Size+1);

ArrayResize(xbuy, Max_Array_Size+1);


예상대로 판매와 구매가 집계되기 시작했고 시간대 전환이 빨라졌습니다.

그것은 단지 오류가 컴파일 중에 표면화되어야 한다는 것입니다. 이러한 경우 원인을 찾아

전혀 쉽지 않습니다(문제의 존재에 대해 알지 못하는 것이 가능했습니다).

그리고 판매 모듈에서 모든 것이 문제 없이 실행된 이유는 여전히 명확하지 않습니다.

 
chief2000 писал(а) >>

컴파일하는 동안 오류가 발생했을 뿐입니다. 이러한 경우 원인을 찾는 것이 전혀 쉽지 않습니다(문제의 존재에 대해 알지 못할 수도 있음).

컴파일러는 정의에 따라 변수의 값을 추적할 수 없고 추적해서는 안 됩니다.

그리고 판매 모듈에서 모든 것이 문제 없이 실행된 이유는 여전히 명확하지 않습니다.

하나의 오류가 둘 이상의 오류보다 빠르게 처리되기 때문입니다.

 
fwiq >> :

컴파일러는 정의에 따라 변수의 값을 추적할 수 없고 추적해서는 안 됩니다.

그게 사실이라면 너무 나쁩니다.

결국 이것은 이전에 정의되지 않은 변수에 액세스하는 것과 거의 동일합니다.

fwiq 작성 >>

하나의 오류가 둘 이상의 오류보다 빠르게 처리되기 때문입니다.

아니오, 다른 것입니다 - 판매 모듈만 남았을 때 문제가 없었다고,

그리고 판매를 삭제하고 구매만 남겼을 때 문제가 발생했습니다. 두 모듈 모두

반전된 일부 연산(>/<, High[]/Low[] 등)을 제외하고는 완전히 동일합니다.

 
chief2000 писал(а) >>

아뇨 딴거요 - 세일즈 모듈만 남으면 문제 없다고 했는데 세일즈 삭제하고 구매만 남겼을 땐 문제가 있었다. 두 모듈이 완전히 동일하다는 사실에도 불구하고 그 차이는 매우 눈에 띄었습니다. 단, 일부 작업이 반대로 된 경우(>/<, High[]/Low[] 등)입니다.

변수나 배열을 정의하는 것이 아닐 수도 있습니다. MT4 표시기에서는 프로그래밍 방식으로 행 추가를 시작하고 반사된 배열의 이름을 변경하는 순간을 신중하고 정확하게 추적해야 합니다. 이 경우와 같이 혼선이 발생하여 라인이 반영되지 않거나 계산이 정지되는 경우가 있습니다. 농담처럼 "당신은 단지 나가고 들어갈 필요가 있습니다. 그러면 모든 것이 잘 될 것입니다."

 

문자 그대로의 의미에서 과부하도 도움이되지 않았습니다.

어쨌든 이 판매와 구매의 차이는 문제의 존재를 인식하는 데 도움이되었습니다 ..

행복은 없지만 불행이 도움이되었습니다 :)

 
다른 질문이 있습니다. 표시기에서 MQL5 디버거를 시작할 수 없습니다. 모든 것이 스크립트와 전문가에서 작동하지만 칠면조에서 멈추지 않으며 단계를 거칠 수 없습니다. 문서화되지 않은 기능이 있을 수 있습니다. 아시는 분은 알려주세요.
 
fwiq >> :
다른 질문이 있습니다. 표시기에서 MQL5 디버거를 시작할 수 없습니다. 모든 것이 스크립트와 전문가에서 작동하지만 칠면조에서 멈추지 않으며 단계를 거칠 수 없습니다. 문서화되지 않은 기능이 있을 수 있습니다. 아시는 분은 알려주세요.

일주일 전에 프로세서는 이것이 의도적이며 칠면조에서 디버거 디버깅이 나중에 작동한다고 썼습니다.

 

MT4에서는 항상 Ask나 Bid나 다른 것(Close, Open 등)이 소수점 이하로 모아져서 오류가 발생했습니다.

엄청난 수의 숫자(예: 1.4323111111111111). 결과적으로 " NormalizeDouble ( Bid , Digits ) ; "를 추가해야 했습니다.

그러나 이것은 MT 수준에서 한 번 해결할 수 있습니다.

 

* ,? _

기본적으로는 물론 ObjectFind만 관리하는 것이 가능합니다. 이전 버전과의 호환성을 유지해야 하는 경우 이전 기능을 변경하지 않고 세트를 보완합니다(예: ObjectFindM(다중 검색)).

예: "Signal"로 시작하는 텍스트 레이블을 찾고 싶습니다.

구현: 처음 발견된 개체의 이름을 반환합니다(또는 핸들, 하지만 이에 따라 작업할 수 있는 다른 함수가 필요함).

표기법: ObjectFind M(" 신호*");

예: "0" 창에서 "Signal"로 시작하는 텍스트 레이블만 제거해야 합니다.

표기법: ObjectDelete(0," 신호*");