ulong PackMagic( int bs, int type, int frac, int ll) //bs=0 - sell, bs=1 - buy (в смысле ll), type - это тип FPST { int d1; ulong i, frac1=frac, ll1=ll, type1=type;
재생할 수 없습니다. 이러한 매개변수를 사용하면 함수는 일관되게 1001199를 반환합니다. 함수 자체에도 오류가 없습니다. 그래서 할 말이 없습니다. 아마도 Expert Advisor의 문제는 이 함수가 아니라 다른 곳에 있으며 매개변수 값이 예상한 것과 다른 함수로 전달될 가능성이 큽니다. 따라서 결과는 예상과 다릅니다.
디버그 모드에서는 올바르게 작동합니다. 그러나 MT5의 내비게이터에서 릴리스를 시작하면 말도 안되는 소리를 내거나("1000 10000 100000 1000000" 대신 "1000 10000 100 100") MT5가 일반적으로 프로세서 코어 중 하나의 전체 로드로 멈춥니다.
"박사님, 뭔가 아파요!" © )
그러한 표현의 예를 보여주십시오. 재생할 수 있는. 그러면 뭔가 대답할 수 있습니다.
{
int d1;
ulong i, frac1=frac, ll1=ll, type1=type;
i= 1 ; d1= 10 ;
while (ll>=d1) {d1=d1* 10 ; i=i+ 1 ;}
if (type== 0 || type== 2 ) return (frac1+ll1*Pow10frac_length+i*Pow10(frac_length+i)+
type1*Pow10(frac_length+i+ 1 )+bs*Pow10(frac_length+i+ 2 )+Id1_class*Pow10(frac_length+i+ 3 ));
else return (ll1+i*Pow10(i)+type1*Pow10(i+ 1 )+bs*Pow10(i+ 2 )+Id1_class*Pow10(i+ 3 ));
}
ulong Pow10( ulong power) // power>0
{
ulong r= 10 ;
if (power== 0 ) return 1 ;
for ( ulong i= 2 ; i<=power; i++) r=r* 10 ;
return r;
}
문제는 PackMagic 기능에 있습니다. 외부 변수 int frac_length=2; int Pow10frac_length=100; 정수 ID1_class=1;.
오류의 예를 제공하지 않았습니다. 인수의 어떤 값에 대해 이 함수는 잘못된 값(무엇을?)을 반환하고 올바른 결과는 무엇이어야 합니까?
예를 들어:
Id1_class=1, bs=0, type=0, frac=99, ll=1, frac_length=2, Pow10frac_length=100, 반환값은 11299입니다.
1001199여야 합니다. Expert Advisor에서 클래스의 기능, Open의 데모 계정.
오류가 발생하면 11299가 항상 반환된다는 것은 사실이 아닙니다.
재생산. 코드를 스크립트에 작성했는데 디버그 모드에서 실행했을 때 정확한 값(1001199)을 주고, 릴리스를 컴파일하고 MT5의 트리에서 실행하면 안정적으로 11199가 나옵니다. 문제를 현지화할 수 있었고, 이를 재현하는 코드는 다음과 같습니다.
void OnStart ()
{
ulong i = 1 ;
ulong a1 = Pow10(frac_length + i);
ulong a2 = Pow10(frac_length + i + 1 );
ulong a3 = Pow10(frac_length + i + 2 );
ulong a4 = Pow10(frac_length + i + 3 );
Print ( IntegerToString (a1), " " , IntegerToString (a2), " " , IntegerToString (a3), " " , IntegerToString (a4));
}
ulong Pow10( const ulong power)
{
ulong r = 10 ;
if (power == 0 )
return 1 ;
for ( ulong i = 2 ; i <= power; i++)
r = r* 10 ;
return r;
}
디버그 모드에서는 올바르게 작동합니다. 그러나 MT5의 내비게이터에서 릴리스를 시작하면 말도 안되는 소리를 내거나("1000 10000 100000 1000000" 대신 "1000 10000 100 100") MT5가 일반적으로 프로세서 코어 중 하나의 전체 로드로 멈춥니다.
두 가지 방법으로 처리됩니다. 다음 중 하나:
ulong a2 = Pow10(frac_length + i + ( ulong ) 1 );
ulong a3 = Pow10(frac_length + i + ( ulong ) 2 );
ulong a4 = Pow10(frac_length + i + ( ulong ) 3 );
또는 Start() 함수 내에서 전역 변수 frac_length를 이동합니다.
이것은 실제로 컴파일러 버그입니다. 서비스 데스크에 작성하십시오 .
Market Product에 대해 새로 게시된 자체 리뷰 위로 마우스를 가져가면 여러 제안/작업이 나타납니다. "편집"을 선택하고 리뷰를 변경하면 "업데이트"를 클릭한 후 "권한 없음" 오류가 팝업됩니다.
SD에서 애플리케이션을 생성할 수 없음 - 오류가 발생했습니다.
Market Product에 대해 새로 게시된 자체 리뷰 위로 마우스를 가져가면 여러 제안/작업이 나타납니다. "편집"을 선택하고 리뷰를 변경하면 "업데이트"를 클릭한 후 "권한 없음" 오류가 팝업됩니다.
브라우저의 이름과 버전을 지정하십시오.
크롬 56.0.2924.87에서는 리콜 페이지를 수동으로 새로 고침하거나 새로 고치지 않고 비행이 정상입니다.
SD에서 애플리케이션을 생성할 수 없음 - 오류가 발생했습니다.
분명히 안티 CSRF 토큰을 확인하는 원칙이 업데이트되었습니다.
크롬에서는 다음과 같이 할 수 있습니다.
웹사이트 www.mql5.com => 개발자 패널에서 F12 키를 눌러 응용 프로그램 탭으로 이동 => 쿠키 섹션 => 쿠키 기록의 RMB => 다음에서 모두 지우기 ...
브라우저의 이름과 버전을 지정하십시오.
크롬 56.0.2924.87에서 리콜 페이지를 수동으로 새로 고치거나 새로 고치지 않은 상태에서 비행은 정상입니다.