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

 
Slava Botalov :

나쁜, 당신은 다른 전환해야합니다. 어떤 제안?

Google의 모든 제안. 여기에서 제3자 조직에 대한 어떠한 논의도 금지됩니다.

 
Vladimir Karputov :

Google의 모든 제안. 여기에서 제3자 조직에 대한 어떠한 논의도 금지됩니다.

이해했다. 내 질문에 도움을 주셔서 감사합니다.

 
x572intraday :

그것에 관한 것이 아닙니다. 문제는 특히 프로그래머가 아니라 거래자에게 어디에서 유용할 수 있습니까? 나는 터미널에서 가격 척도 또는 주문 창에서 그러한 숫자를 보지 못했습니다. 모든 것이 모든 곳에서 단일 형태로 가져옵니다 (어딘가는 5 자리 , 다른 곳은 같은 곳).

어디에서 유용할 수 있는지는 질문이 아닙니다. 이것은 컴퓨터에서 숫자 0.72352가 존재하지 않고 5자리의 정확도로 인쇄할 수 있는 숫자 0.7235200000000001만 있다는 것을 알고 컴퓨터에서 숫자가 어떻게 표현되는지 아는 문제이며 이를 위해 DoubleToString이 있습니다. 기능.
 

데이터를 복사할 수 없음:

 MqlRates mql_rates[];
bar_kol = Bars ( "EURUSD" , _Period );
copy_rates = CopyRates ( "EURUSD" , _Period , bar_kol, 100 , mql_rates);

6105 bar에서 + 100 bar로 데이터를 복사하려고 할 때 bar_kol이 6105가 되고 copy_rates -1(오류)이 발생합니다.

로그에는 다음이 있습니다.

EURUSD: 2007.01.02에서 2020.06.30까지 동기화된 기록

EURUSD,H1: 74955개 막대에 할당된 기록 캐시 및 2008.01.02 10:00에서 2008.12.31 17:00까지 막대 6105개 포함

EURUSD,H1: 2008.01.02 10:00부터 역사 시작

캐시의 기록은 74955개의 막대이고 2008년에는 동일한 6105개의 막대가 있습니다. 저것들. 1년에 최대 사본 막대. 6105개 이상의 마디는 복사할 수 없습니다. 창의 최대 막대 수는 100000이고 전체 기록이 차트에 표시되며 스크롤할 수 있으며 모든 막대가 있고 모든 것이 로드됩니다. 말 그대로 mql_rates 배열에 복사되지 않습니다.

 

비실제 데이터 디버깅. 줄에 매달려 F11 또는 F10을 반복해서 눌러도 디버깅이 계속되지 않습니다. 포인터는 한 줄에 머물고 화면을 깜박입니다.

빌드 2715. Win10, 20H2 빌드 19042.746


이것은 메모리의 상태입니다

 
Ilyas :

이 상황에서 오류가 발생하는 ZeroMemory의 잠재적 위험은 무엇입니까?

 struct A
{
private :
   int i;
};

void OnStart ()
{
  A a[ 1 ];
  
   ZeroMemory (a); // not allowed for objects with protected members or inheritance
}
 
Aleksey Mavrin :

비실제 데이터 디버깅. 줄에 매달려 F11 또는 F10을 반복해서 눌러도 디버깅이 계속되지 않습니다. 포인터는 한 줄에 머물고 화면을 깜박입니다.

빌드 2715. Win10, 20H2 빌드 19042.746


이것은 메모리의 상태입니다

최신 베타 2747로 업데이트하십시오.

우리는 디버거에서 많은 것을 변경하고 있습니다.

 
fxsaber :

이 상황에서 오류가 발생하는 ZeroMemory의 잠재적 위험은 무엇입니까?

private/protected 및 const(대부분의 경우)는 프로그래머 전용이며 컴파일러는 코드에 부과된 제한 사항을 준수하는 데만 도움이 됩니다.

고전적인 예:
다른 사람의 라이브러리를 사용하고 있습니다. 후드 아래에는 링크가 포함된 무거운 코드가 있고 무단 변경으로 인해 충돌이 발생하므로 라이브러리 작성자는 계획되지 않은 변경을 방지하기 위해 개체의 일부를 비공개로 숨깁니다.

 
Ilyas :

private/protected 및 const(대부분의 경우)는 프로그래머 전용이며 컴파일러는 코드에 부과된 제한 사항을 준수하는 데만 도움이 됩니다.

고전적인 예:
다른 사람의 라이브러리를 사용하고 있습니다. 후드 아래에는 링크가 포함된 무거운 코드가 있고 무단 변경으로 인해 충돌이 발생하므로 라이브러리 작성자는 계획되지 않은 변경을 방지하기 위해 개체의 일부를 비공개로 숨깁니다.

알겠습니다 자세한 설명 감사합니다!

 

MqlRates 구조 의 real_volume 필드는 long 유형이지만 모든 long 값 범위의 값을 저장할 수 없는 것 같습니다(문서에 따르면 - 0x7FFFFFFFFFFFFFF). 특히 0x40000000000000A8 필드에 작성하면 실제로 0xA8이 작성됩니다. 사용자 정의 기호에 관한 것입니다.

어딘가에 허용되는 값의 실제 범위가 있습니까? 원칙적으로는 일반 long처럼 작동하지 않을 이유가 없습니다. 버그처럼 보입니다.

추신. tick_volume에서 아마도 같은 문제일 것입니다.