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

 
TheXpert :

타에메...

이적하기 전에 롱에서 더블을 넣어야 합니다. 전역 변수의 경우 . 0 값이 아니라 불도저의 두 배 숫자입니다. 예를 들어 1.34 * e-307, 4.29 * e + 120이 될 수 있습니다. 긴 비트가 있기 때문입니다.

옮긴 후 포장을 2배에서 길게 풉니다.

모두.

알겠습니다 ;)

 
artmedia70 :

알겠습니다 ;)

글쎄, 나는 그것을 이해하지 못한다.

Double은 데이터를 자르므로 double에서 직접 long하는 것은 불가능합니다. 그러나 둘 다 각각 8바이트이므로 예제에서 했던 것처럼 double을 컨테이너로 사용하기만 하면 손실 없이 전송할 수 있습니다.

 
TheXpert :

글쎄, 나는 그것을 이해하지 못한다.

Double은 데이터를 자르므로 double에서 직접 long하는 것은 불가능합니다. 그러나 둘 다 각각 8바이트이므로 예제에서 했던 것처럼 double을 컨테이너로 사용하기만 하면 손실 없이 전송할 수 있습니다.

Andrey, GV 터미널의 저장 및 표시 형식을 이해하지 못했습니다. 차트의 ID를 표시하는 것 같았지만 0으로 표시됩니다.
 
artmedia70 :
Andrey, GV 터미널의 저장 및 표시 형식을 이해하지 못했습니다. 차트의 ID를 표시하는 것 같았지만 0으로 표시됩니다.

GV에서 외관상 쓰레기와 유사한 것을 볼 수 있습니다. 이 "쓰레기"는 역변환 후에 차트 ID로 바뀝니다.

Double은 자체 데이터 형식을 가지고 있습니다. long을 미끄러질 때 우리는 그것을 double 형식에 넣고 8바이트의 메모리처럼 사용합니다.

 
TheXpert :

GV에서 외관상 쓰레기와 유사한 것을 볼 수 있습니다. 이 "쓰레기"는 역변환 후에 차트 ID로 바뀝니다.

Double은 자체 데이터 형식을 가지고 있습니다. long을 미끄러질 때 우리는 그것을 double 형식에 넣고 8바이트의 메모리처럼 사용합니다.

네, 이미 이해했습니다. 감사합니다.
 
내가 알아차린 것은 다른 스크립트(표시기)에 연결된 라이브러리 또는 리소스를 업데이트하면 터미널에서 해당(표시기) 재컴파일 및 다시 로드로 이어진다는 것입니다. 묻지 않고! 이것은 버그입니까, 아니면 기능입니까? 추신: 우리는 MT4에 대해 이야기하고 있습니다.
 
artmedia70 :

더 많은 질문:

이름으로 기존 GV 터미널을 찾고 있습니다. 이를 통해 EA가 작업 중인 차트의 ID가 지표에 전달됩니다. 표시기가 다른 기호에 달려 있습니다. 즉, 매니징 어드바이저가 작업하는 차트의 ID를 지표에 전달하고 싶습니다. 나는 이렇게 보고 있다:

터미널이 알려주는 내용은 다음과 같습니다.


그가 변수를 계산하려고 하자마자. 그리고 즉시 라인으로 출력하여 로그에 출력하고 다양한 유형의 변수에 출력합니다. 모두 동일합니다. 2 차이.

뭐가 문제 야?

https://www.mql5.com/en/docs/basis/types/casting "단순한 구조 유형으로 데이터 캐스팅" 단락을 읽으십시오.

그냥 당신의 경우. Double은 long보다 _number_ 문자의 정확도가 훨씬 낮습니다. 그렇기 때문에 간단한 할당으로 이 결과를 얻을 수 있습니다.

그러나 64비트 전역 변수를 최대한 활용하여 _모든_ 64비트 정보(예: 8바이트의 짧은 문자열. long은 말할 것도 없음)를 저장할 수 있습니다.

Документация по MQL5: Основы языка / Типы данных / Приведение типов
Документация по MQL5: Основы языка / Типы данных / Приведение типов
  • www.mql5.com
Основы языка / Типы данных / Приведение типов - справочник по языку алгоритмического/автоматического трейдинга для MetaTrader 5
 
다음 문제에 직면했습니다. 터미널을 다시 시작한 후 표시기는 EA에서 호출될 때 다른 시간 프레임의 "이상한" 값을 반환합니다.
EA는 M2에 있고 지표 데이터는 M3에서 가져옵니다.
1) 14:40에 터미널을 다시 시작하는 로그에서:
체육 0 14:39:50.524 단말기 멈췄다
MD 0 14:40:06.009 단말기 MetaTrader 5 Alfa-Forex x64 빌드 930 시작(Alfa-Forex)
II 0 14:40:06.586 단말기 OpenCL을 찾을 수 없습니다. 성능 향상을 위해 최신 OpenCL 드라이버를 설치하십시오.
0 14:40:07.257 전문가 전문가 FX_Money_Flow_v1_06(EURUSD,M2)이 성공적으로 로드되었습니다.
EA는 얻은 지표 값을 마지막 및 끝에서 두 번째 막대에 기록합니다.
0 14:40:11.540 FX_Money_Flow_v1_06 (EURUSD,M2) TF1 표시기 값: -1.#QNAN -1.#QNAN
이미 다음 막대에 데이터가 정확합니다.
뉴저지 0 14:41:46.622 FX_Money_Flow_v1_07 (EURUSD,M2) TF1 표시기 값: -0.02798411604597126 -0.04893498839583753
2) 19:55에 두 번째 재시작:
CO 0 19:55:06.918 단말기 멈췄다
RO 0 19:55:28.399 단말기 MetaTrader 5 Alfa-Forex x64 빌드 930 시작(Alfa-Forex)
OP 0 19:55:28.992 단말기 OpenCL을 찾을 수 없습니다. 성능 향상을 위해 최신 OpenCL 드라이버를 설치하십시오.
RD 0 19:55:29.507 전문가 전문가 FX_Money_Flow_v1_07(EURUSD,M2)이 성공적으로 로드되었습니다.
다시 같은 노래:
PQ 0 19:55:38.168 FX_Money_Flow_v1_07 (EURUSD,M2) TF1 표시기 값: -1.#QNAN -1.#QNAN

하지만 항상 다음과 같이 더 이상 정상적으로 작동하지 않습니다.

KF 0 23:59:51.987 FX_Money_Flow_v1_07 (EURUSD,M2) TF1 표시기 값: -1.#QNAN -1.#QNAN


동시에 M3 차트가 열리고 모든 것을 올바르게 표시하는 표시기가 적용됩니다.
(터미널과 로그 사이의 시차는 5시간이며, 스크린샷은 두 번째 재시작을 나타냅니다)
파일:
 
OBJ_LABEL 이 MT4에서 UNICODE를 지원하지 않는 것 같습니까? 프로그래밍 방식으로 그리고 레이블 속성 대화 상자에서 값을 변경했습니다. 기호가 삽입되고 대화 상자 자체에서 올바르게 표시되지만 차트에는 물음표(?)가 표시됩니다. 선택한 글꼴은 유니코드이며 레이블 속성 대화 상자에서 글꼴이 있는 드롭다운 목록에서 올바르게 선택되었습니다.
 
stringo :

https://www.mql5.com/en/docs/basis/types/casting "단순한 구조 유형으로 데이터 캐스팅" 단락을 읽으십시오.

그냥 당신의 경우. Double은 long보다 _number_ 문자의 정확도가 훨씬 낮습니다. 그렇기 때문에 간단한 할당으로 이 결과를 얻을 수 있습니다.

그러나 64비트 전역 변수를 최대한 활용하여 _모든_ 64비트 정보(예: 8바이트의 짧은 문자열. long은 말할 것도 없음)를 저장할 수 있습니다.

네, 감사합니다.