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

 
Interesting :

더 듬직 해요? 초기화 중에 핸들을 수신하는 것이 신뢰할 수 없는 이유는 무엇입니까? 필요한 데이터를 확인하는 것이 신뢰할 수 없는 이유는 무엇입니까? 더욱이 수표의 존재가 신뢰할 수 없는 이유는 무엇입니까?

초보자에게는 쉽지 않을 수 있지만 시간이 지남에 따라 모든 것이 명확해질 것입니다 ...

일반적으로 나는 그것을 즉시 알아 내려고 노력하고 나중에는 아닙니다 ... 의미를 이해하지 않고 일부 행동을 어리석게 복사하고 싶지 않습니다. 이 모든 코드를 µl4와 같은 내장 함수로 만들 수 없는 이유는 무엇입니까? 음, 막대 수와 함께 추가 매개변수를 추가하십시오. 이 때문에 표시기를 로드하지 않는 방식으로 수행한 것 같습니다. 모든 막대의 데이터?

 

왜 로딩이 되나요?

 
simpleton :

"정규 숫자"는 유형이 있는 상수 표현식입니다. 이 경우 유형은 int입니다.

각각 int 유형인 두 하위 표현식의 곱으로 구성된 표현식도 int 유형입니다. 여기서 오버플로가 발생합니다.

그리고 나서야 long 유형의 변수를 초기화할 때 표현식 유형에서 int 유형으로 암시적 캐스트가 발생합니다.

여기 모든 것이 깨끗합니다. 그런데 이 경우 피연산자를 long 유형으로 캐스팅할 필요가 없습니다. 하나를 주는 것으로 충분하며 두 번째는 암묵적으로 주어집니다.

나는 실제로 이것을 말하려고 했지만 덜 학문적인 언어로 했습니다. 그리고 가장 중요한 것은 다른 구직자들에게 경고합니다.

질문이 다릅니다. 탈무드 어디에 다음과 같이 나와 있습니다.

"일반 숫자"는 유형이 있는 상수 표현식입니다. 이 경우 유형은 int입니다.

예를 들어 X 를 10000000000 으로 하면 long 타입이 되나요? ulong 또는 datetime 또는 문자열 이 아닌 이유는 무엇입니까?

그리고 숫자 255 uchar 또는 short 의 유형은 무엇입니까?

 
gumgum :

왜 로딩이 되나요?

아마도 GBPJPY가 교차 쌍이고 코드 어딘가에 마진 계산이 있기 때문일 수 있습니다. 임호
 
simpleton :

로그와 코드가 섞인 것 같습니다. 주어진 코드는 "깨끗하게" 작동합니다. 그리고 이러한 로그를 얻으려면 int 또는 uint 유형의 변수 A와 B와 uint 유형의 X 변수를 만들어야 했습니다 .

다음은 원본 코드의 작업입니다.

빌드 314(2010년 8월 20일).

다른 코드를 제공했습니다.

 long A = AccountInfoInteger ( ACCOUNT_LOGIN );   // 661701
long B = A;
long C = 661701 ;

Print ( " A=" ,A, "  B=" ,B, "  C=" ,C);

long X =( long ) 10000 ;

long L1 = A*X;
long L2 = B*X;
long L3 = C*X;

Print ( " L1=" ,L1, "   L2=" ,L2, "   L3=" ,L3);

첫 번째 줄에 특별한주의를 기울이십시오. 귀하의 계정에는 다른 번호가있을 수 있습니다. 그것을 찾아 C =에 넣으십시오.

결과를 다시 확인했습니다.

 2010.08 . 25 20 : 23 : 12      Servis (EURUSD,H1)       L1= 2322042704    L2= 2322042704    L3= 6617010000
2010.08 . 25 20 : 23 : 12      Servis (EURUSD,H1)       A= 661701   B= 661701   C= 661701

빌드 314(2010년 8월 20일).

 
USDCHF 쌍에 대한 SymbolInfoDouble (_Symbol,SYMBOL_POINT) 함수가 이 쌍의 포인트 값이 0.0001일 때 소수점 0.00001 뒤에 5자리 포인트 크기를 제공하는 이유를 알려주십시오.
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
Документация по MQL5: Получение рыночной информации / SymbolInfoDouble
  • www.mql5.com
Получение рыночной информации / SymbolInfoDouble - Документация по MQL5
 
rut_ :
USDCHF 쌍에 대한 SymbolInfoDouble (_Symbol,SYMBOL_POINT) 함수가 이 쌍의 포인트 값이 0.0001일 때 소수점 0.00001 뒤에 5자리 포인트 크기를 제공하는 이유를 알려주십시오.

이 악기에 4개의 문자가 있다는 아이디어는 어디서 얻었습니까? 터미널에서 따옴표가 5자리임을 명확하게 볼 수 있습니다.
 
sergey1294 :
이 악기에 4자리가 있다는 아이디어는 어디서 얻었습니까? 터미널에서 따옴표가 5자리임을 분명히 볼 수 있습니다.

이 함수는 소수점 이하 다섯 자리가 있는 계정에서도 다른 pip 값을 반환할 수 있으며 이는 모두 브로커가 수락하는 설정에 따라 다릅니다.

예를 들어, 한 DC에는 그러한 주석이 있습니다.

 1 pips (пункт) равен:

для валютных пар с 5 знаками после запятой - минимальному изменению 4 -го знака после запятой ( 0 , 0001 );
для валютных пар с 3 знаками после запятой - минимальному изменению 2 -го знака после запятой ( 0 , 01 ).

나머지 1핍은 다섯 번째 숫자와 같습니다.

 
SHOOTER777 :

나는 실제로 이것을 말하려고 했지만 덜 학문적인 언어로 했습니다. 그리고 가장 중요한 것은 다른 구직자들에게 경고합니다.

질문이 다릅니다. 탈무드의 어디에 다음과 같이 나와 있습니다.

"정규 숫자"는 유형이 있는 상수 표현식입니다. 이 경우 유형은 int입니다.

예를 들어 X 를 10000000000 으로 하면 long 타입이 되나요? ulong 또는 datetime 또는 문자열 이 아닌 이유는 무엇입니까?

그리고 숫자 255 uchar 또는 short 의 유형은 무엇입니까?

상수 10000000000은 이미 long 유형입니다.

어떻게 말하겠습니까? 일반 언어에는 명시적 유형 캐스팅을 사용하지 않고 상수 유형을 지정할 수 있는 수정자 접미사가 있습니다. MQL5의 경우 float에 대해서만 이것을 찾았습니다. 따라서 명시적 유형 캐스팅 없이 uchar, ushort, uint, ulong, char, short 및 long 유형의 상수(상수 값이 int 유형에 맞는 경우)를 지정하는 것은 불가능합니다.

상수 255의 유형은 int입니다. 일부는 유형 선언에서 찾을 수 있습니다. 예를 들어 문자 상수는 ushort 유형으로 선언됩니다. 또한 날짜/시간 유형, 색상 유형, bool 유형, 이중 유형 및 문자열 유형의 상수에 대해 설명합니다.

sizeof 연산이 도입되었기 때문에 상수 유형의 크기를 인쇄할 수 있습니다(이것이 도입된 이유 - 개발자 중 한 명이 설명함):

 void OnStart ()
{
   Print ( "sizeof true                = " , sizeof true);
   Print ( "sizeof 'a'                 = " , sizeof 'a' );
   Print ( "sizeof 255                 = " , sizeof 255 );
   Print ( "sizeof 200000000           = " , sizeof 20000000 );
   Print ( "sizeof 10000000000         = " , sizeof 10000000000 );
   Print ( "sizeof C'128,128,128'      = " , sizeof C'128,128,128' );
   Print ( "sizeof D'2004.01.01 00:00' = " , sizeof D'2004.01.01 00:00' );
   Print ( "sizeof 1.0f                = " , sizeof 1.0 f);
   Print ( "sizeof 1.0                 = " , sizeof 1.0 );
   Print ( "sizeof \"Xa!\"               = " , sizeof "Xa!" );
   Print ( "sizeof \"Xa-xa-xa!!!\"       = " , sizeof "Xa-xa-xa!!!" );
}

/* Вывод в лог (хронология - сверху вниз):
GF      0       1 (EURUSD,M15)  02:03:23        sizeof true                = 1
IS      0       1 (EURUSD,M15)  02:03:23        sizeof 'a'                 = 2
LF      0       1 (EURUSD,M15)  02:03:23        sizeof 255                 = 4
JI      0       1 (EURUSD,M15)  02:03:23        sizeof 200000000           = 4
EQ      0       1 (EURUSD,M15)  02:03:23        sizeof 10000000000         = 8
DG      0       1 (EURUSD,M15)  02:03:23        sizeof C'128,128,128'      = 4
JN      0       1 (EURUSD,M15)  02:03:23        sizeof D'2004.01.01 00:00' = 8
GE      0       1 (EURUSD,M15)  02:03:23        sizeof 1.0f                = 4
GR      0       1 (EURUSD,M15)  02:03:23        sizeof 1.0                 = 8
QJ      0       1 (EURUSD,M15)  02:03:23        sizeof "Xa!"               = 12
ER      0       1 (EURUSD,M15)  02:03:23        sizeof "Xa-xa-xa!!!"       = 12
*/

일반적으로 접미사 중 이중 상수의 경우 f만 작동하여 float로 수정하며 이는 이러한 상수 유형의 크기에서 알 수 있습니다.

여기에서 sizeof 작업의 유일하고 적어도 다소 의미 있는 사용을 찾았습니다. :)

 
SHOOTER777 :

다른 코드를 제공했습니다.

첫 번째 줄에 특별한주의를 기울이십시오. 귀하의 계정에는 다른 번호가있을 수 있습니다. 그것을 찾아 C =에 넣으십시오.

결과를 다시 확인했습니다.

빌드 314(2010년 8월 20일).

아니요, 나는 당신과 같은 효과가 없습니다. MT5 버전의 비트 수를 확인하는 것만 남아 있습니다. 나는 64비트 버전을 가지고 있는데 당신은 어떻습니까?

그건 그렇고, 내가 실행한 수정된 코드가 나와 동일한 결과를 제공합니까?

그렇다면 무슨 일이 일어나고 있는지는 값의 "원점"과 관련된 버그와 매우 유사합니다. 즉, 추가 계산이 수행됩니다.