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

 
Snaf : 첫 번째 대본에서는 스스로 오류를 찾았지만 번째 대본에서는 두뇌가 부족합니다.

빌드 630

이 예제는 MQL5 컴파일러의 새 빌드를 사용하여 작성되었습니다. 죄송합니다. 고려하지 않았습니다. 하지만 곧 출시될 예정이니 조금만 기다려주시면 모든 것이 정리될 것입니다.
 
MetaDriver : 네, 맞습니다. 나에게도 버그가있는 라인 처리가 있습니다. 함수는 다른 함수(OpenCL 프로그램 생성)에서 반환된 조각에서 긴 문자열을 조합했습니다 . 디버거에서 모든 것은 시계 장치와 같습니다. 빌드가 충돌하고 "Acces Violation"을 씁니다... ;)

이미 서비스 데스크에 글을 쓰고 싶었지만 여기에서 아무 이유 없이 받아쓰기 시작했습니다. :) 더 이상 재현할 수 없었습니다(솔직히 시도했지만). 그리고 서비스 데스크에 무엇을 보내야 합니까? 투덜거리며 잡담을 하는 것이 여기 남아 있습니다.

예, CLProgramCreate()에 분명한 문제가 있습니다. 스크립트에서 실행 중 첫 번째 결함이 있는 위치를 특별히 추적했는데 정확히 이 함수에서 발견되었습니다. 함수는 값을 반환하지 않습니다.

스트링 형태의 CL 프로그램이 제대로 재현된 것 같다. 그러나 CL 프로그램 자체는 생성되지 않습니다.

 
십자가에서 테스트할 때 이익 및 마진 요구 사항의 올바른 변환을 위한 다른 비율의 정확한 시뮬레이션이 있습니다.

시각화를 실행하면 시장 시계의 배경 기호 수를 기반으로 한 계산의 양을 즉시 이해할 수 있습니다.
 
내 랩톱과 PC를 결합하는 방법을 알려주세요. 전략을 테스트할 때 컴퓨터는 라우터를 통해 작동하고, 하나는 코드를 통해, 다른 하나는 Wi-Fi를 통해 작동합니다. 데스크탑 컴퓨터에서 mt5 파일을 만들려고 시도했는데 랩탑에 던졌습니다. , 원격 섹션에 추가하고 랩톱과 동일한 에이전트 이름
 

게시물에서 https://www.mql5.com/ru/forum/1111/page736#comment_185306

문제를 지점별로 현지화했습니다.

- CFastFile ::ReadInteger 클래스의 함수에 대해

630/64에서 구조의 할당 또는 배열에서 배열로의 읽기가 떨어졌다는 것이 밝혀졌습니다. 최악의 옵션이 자체적으로 제안되지만 - 부호 있는(short / int / char)를 부호 없는(ushort / uint / uchar)로 변환합니다.

어딘가에 여분의 비트나 오프셋이 있습니다. 결과적으로 전혀 읽어야 할 숫자가 아닙니다. 기능을 이해하고 다시 확인하는 것이 더 쉬울 것입니다.

디버그 모드에서는 재생 되지 않습니다 . 그러나 동일한 코드로 4대의 컴퓨터에서 안정적으로 작동합니다. (코드가 커서 플롯이 확장되지 않음)

 
lazarev-dm :
내 랩톱과 PC를 결합하는 방법을 알려주세요. 전략을 테스트할 때 컴퓨터는 라우터를 통해 작동하고, 하나는 코드를 통해, 다른 하나는 Wi-Fi를 통해 작동합니다. 데스크탑 컴퓨터에서 mt5 파일을 만들려고 시도했는데 랩탑에 던졌습니다. , 원격 섹션에 추가하고 랩톱과 동일한 에이전트 이름
그래서 작동하지 않습니까? 클라이언트 단말 / 전략 테스터 / 에이전트
 
Yedelkin :
그래서 작동하지 않습니까? 클라이언트 단말 / 전략 테스터 / 에이전트
분명히 나는 비뚤어진 일을했습니다. 이제 mt5 파일을 다시 만들었습니다. 이제 랩톱에는 컴퓨터 프로세서가 표시되지만 연결 테스트 중에 아무 것도 진행되지 않습니다. 문제가 될 수 있으며 그렇지 않은 경우 랩톱 프로세서를 PC 테스터에 추가해야 합니다. PC에서 사용하지 않습니까?
 

개발자 여러분, 이 버그로 저를 이겼습니다! 그들이 말하는 것처럼 "나는 울었다."

CFastFile (::ReadInteger) 의 함수

         uint ReadArray( uchar &dst[], uint dst_start= 0 , int cnt= WHOLE_ARRAY ) { int r= ArrayCopy (dst, m_data, dst_start, m_pos, cnt); if (r> 0 ) m_pos+=r; return (r); }
         ushort ReadShort() { __2 b={ 0 }; __short d={ 0 }; ReadArray(b.v, 0 , 2 ); d=b; return (d.v); }
         uint ReadInteger( int sz=INT_VALUE)
        {
                 if (sz==SHORT_VALUE) { ushort s=ReadShort(); return (s); }
                 return (ReadInt());
        }


무화과에서 SHORT_VALUE를 읽을 때 어떤 경우가 넌센스를 반환하는지 이해하게 될 것입니다.


배열에서 읽기 위한 다양한 옵션을 둘러싸고 파고들기 시작했습니다.

ushort s=ReadShort() 대신 ReadShort 함수의 본문을 넣으면 숫자가 모두 정상적으로 읽히는 것으로 나타났습니다.

그러나 그때 나는 정말로 울었던 옵션을 찾았습니다 .

         uint ReadInteger( int sz=INT_VALUE)
        {
                 if (sz==SHORT_VALUE) { ushort s=ReadShort(); if (s== 426 ) Print (s); return (s); }
                 return (ReadInt());
        }

즉, 약간의 두려움 으로 Print 함수 는 두들겨진 숫자 s를 마법처럼 올바른 숫자로 바꾸고 올바른 값을 반환합니다.


개발자 여러분, 마음을 바꾸십시오! 엉망이 되고 있어!!!

당신의 제품에 대한 당신의 태도의 결과로 시장에서 손실을 어떻게 보상할 것인가?

결국 MT5를 기반 으로 타사 프로그래머가 제공하는 거대한 소비자 리소스가 생성됩니다 .

그리고 당신은 당신의 태만 행동으로 그들의 능력과 프로그램의 품질에 의심을 제기합니다!

 
sergeev :

개발자 여러분, 이 버그로 저를 이겼습니다! 그들이 말하는 것처럼 "나는 울었다."

CFastFile (::ReadInteger) 의 함수

잠깐, 이것이 CFastFile 클래스 코드입니까? 플랫폼 개발자는 어떻습니까?

 //+------------------------------------------------------------------+
//|                                                         FastFile |
//|                                            Copyright © 2006-2012 |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2006-2012"
#property version "1.00"
#property library
 
Renat :

잠깐, 이것이 CFastFile 클래스 코드입니까? 플랫폼 개발자는 어떻습니까?



네, 레나트, 이것은 제 코드입니다.

이전 빌드에서 작동했습니다. 그러나 현재 630/64에서 작동을 멈췄습니다.

그리고 630/32에서는 계속해서 성공적으로 작동합니다.


내가 찾은 버그는 매우 이상하고 솔직히 무섭습니다.