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

 
pako :
티키에 물고기가 있습니까?
이것이 내가 알고 싶은 것입니다.
 
fxsaber :
이것이 내가 알고 싶은 것입니다.

일부 lmax에서만 시도하는 것이 좋습니다. 그리고 그것은 의심스럽습니다.

볼륨, 감성, 유리를 사용해 보셨습니까? 나에게 더 맛있습니다. 내가 가장 좋아하는 거래는 테이프와 유리에 관한 것이지만, 이것은 불로 낮 동안 Forex에서 사실입니다.

 
Комбинатор :

일부 lmax에서만 시도하는 것이 좋습니다. 그리고 그것은 의심스럽습니다.

볼륨, 감성, 유리를 사용해 보셨습니까? 나에게 더 맛있습니다. 내가 가장 좋아하는 거래는 테이프와 유리에 관한 것이지만, 이것은 불로 낮 동안 Forex에서 사실입니다.

익스체인지를 해보고 싶습니다. 어쨌든 그곳에서 해야 할 일이 나에게는 여전히 분명합니다. 그리고 이것이 지표의 형태로조차 이루어지지 않는 이유는 분명하지 않습니다.

그것은 단지 버그가 느려지는 것입니다.

 
void OnStart ()
  {
//---
   Print ( "-----------------------------   " );
   Print ( "DBL_MAX= " , DBL_MAX );
   Print ( "IntegerToString(int(DBL_MAX) )= " , IntegerToString ( int ( DBL_MAX ) ) );
   Print ( "IntegerToString(uint(MathAbs(DBL_MAX) ) )= " , IntegerToString ( uint ( MathAbs ( DBL_MAX ) ) ) );
  }

나는 이 스크립트를 실행한다

그리고 얻다

DBL_MAX= 1.797693134862316e+308

IntegerToString(int(DBL_MAX) )= -2147483648

IntegerToString(uint(MathAbs(DBL_MAX) ) )= 0

------

질문 - 실제로 양수를 int로 변환할 때 음수가 나오는 이유는 무엇입니까?

 
Print ( "-----------------------------   " );
   Print ( "DBL_MAX= " , DBL_MAX );
   Print ( "IntegerToString(int(DBL_MAX) )= " , IntegerToString ( int ( DBL_MAX ) ) );
   Print ( "IntegerToString(uint(MathAbs(DBL_MAX) ) )= " , IntegerToString ( uint ( MathAbs ( DBL_MAX ) ) ) );
   Print ( "---" );
   Print ( "int(DBL_MAX)= " , int ( DBL_MAX ) );
   Print ( "uint(DBL_MAX)= " , uint ( DBL_MAX ) );
또는 여전히 동일합니다.
 
fxsaber :
너무 자주 하는 것이 지겹긴 해도 신청서를 작성했습니다.
답변하고 바로 닫았습니다

표시기의 작성자는 의도적으로 자신에 대한 링크를 인코딩했습니다.

이 "해킹"을 금지하거나 그것을 사용하는 사람의 양심에 맡길 수 있습니다.

지금까지 이러한 기회로 인해 몇 년 만에 터미널 사용을 방해한 첫 번째 사람입니다.

이것은 유휴 상태에서 얼마나 많은 지표를 수행 할 수 있으며 우리는 그것에 대한 소문이나 정신이 없습니다! 통제가 전혀 없습니다.

귀하의 게시물에서 일반적인 파토스는 명확하지 않습니다. 큰 문제나 심각한 문제가 없는 것은 분명합니다.

1) 의도적으로 의식적으로만 지정된 동작으로 지표를 작성할 수 있습니다. 누가 당신에게 그러한 코드를 작성하고 그러한 지표를 실행하도록 강요합니까? 아니면 다른 사람의 코드를 모르는 상태에서 다른 사람의 프로그램을 실행합니까?

2) 그러한 지표의 유해성은 덜 명백한 논리적 오류가 있는 다른 지표보다 많지 않습니다.

3) 단말기 재기동시 인디케이터가 언로드되어 재기동하지 않습니다. 실수로 이러한 표시기를 시작한 경우 터미널을 다시 시작하십시오. 그리고 다시는 뛰지 마세요.

다른 입력 매개변수를 사용하더라도 최소한 하나의 사본이 실행 중인 경우에 대비하여 나 자신(지시자)을 제거할 수 있어야 했습니다. 이를 위해서는 자체 핸들을 찾아야했습니다. 불행히도 그 당시에는 이것이 100%의 경우 MQL에서 불가능하다는 것을 아직 알지 못했습니다. 그래서 그다지 어렵지 않은 트릭을 하기로 결정했습니다.

나는 모든 핸들을 통과합니다. 그리고 CopyBuffer 를 통한 첫 번째 버퍼의 마지막 값이 확인하기 전에 내 표시기에 작성한 임의성과 일치하면 자동으로 핸들이 내 소유임을 의미하며 필요한 경우 내 자신을 삭제할 수 있습니다.

이러한 이유로 무해한 코드가 작성되어 모호하지만 분명히 개발자의 부정적인 반응이 발생했습니다. 당신은 그렇게 할 수 없습니다. 그는 불법적으로 무엇을 했습니까? 글쎄, 나는 CopyBuffer를 통해 내 버퍼의 값을 읽었습니다. 불법이다?!

이런 식으로 차트가 없는 터미널에서도 모든 코드의 백그라운드 제어되지 않은 실행을 생성할 수 있다는 것을 커뮤니티에 알리십시오. 여기 해킹이 있습니다. 그리고 그것을 버그로 간주하는 것은 분명히 용어의 문제입니다. 개발자가 여기에서 아키텍처를 변경할 수 없다는 것을 이해합니다. 그러므로 그러한 분노. 나는 이 반응을 다른 식으로 설명할 수 없다.

어쨌든 아무도 말하지 않을 것입니다. 이러한 갈퀴를 도움말에 반영하는 것이 좋을 것입니다.

 
Если вы случайно запустили такой индикатор 를 시작한 경우 터미널을 다시 시작하십시오. 그리고 다시는 뛰지 마세요.
알 수 없습니다. 안 돼요!
 
Dmytro Zelenskyy :
또는 여전히 동일합니다.

int 유형의 크기는 4바이트입니다. double형 의 크기는 8바이트입니다. 8바이트 중 4바이트를 얻으려고 시도하면 이 작업을 수행할 수 없습니다. 결과적으로 말도 안되는 소리가 나올 수 있습니다. 특히 이 경우 DBL_MAX 값이 int 값의 한계를 벗어날 때 그렇습니다.

숫자 double d=123456.1258을 가져와서 int를 얻으려고 하면 숫자가 전달되지만 여전히 그렇게 할 수 없습니다.

 
Karputov Vladimir :

int 유형의 크기는 4바이트입니다. double형 의 크기는 8바이트입니다. 8바이트 중 4바이트를 얻으려고 시도하면 이 작업을 수행할 수 없습니다. 결과적으로 말도 안되는 소리가 나올 수 있습니다. 특히 이 경우 DBL_MAX 값이 int 값의 한계를 벗어날 때 그렇습니다.

숫자 double d=123456.1258을 가져와서 int를 얻으려고 하면 숫자가 전달되지만 여전히 그렇게 할 수 없습니다.

좋아, 하지만 부호를 유지하면서 double을 int로 올바르게 변환하는 방법(숫자는 중요하지 않습니다. 제한을 초과하면 int 제한으로 제한)

 
Dmytro Zelenskyy :

좋아, 하지만 부호를 유지하면서 double을 int로 올바르게 변환하는 방법(숫자는 중요하지 않습니다. 제한을 초과하면 int 제한으로 제한)

정수

정수형 int 의 크기는 4바이트(32비트)입니다. 최소값은 -2 147 483 648, 최대값은 2 147 483 64 7 입니다. 이를 바탕으로,

   int A=( int ) 214748364 7.0 ;
   int B=( int ) 214748364 6.2 ;
   int C=( int ) 214748364 7.2 ;
   int D=( int ) 214748364 8.0 ;
   Print ( "A: " , IntegerToString (A), ", B: " , IntegerToString (B), ", C: " , IntegerToString (C), ", D: " , IntegerToString (D));

반환되는 내용을 확인하십시오.

A: 2147483647 , B: 2147483646 , C: 2147483647 , D: - 2147483648

원칙은 분명하다고 생각합니다.