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

 
x572intraday # :

나는 &=에 대해서만 한 번에 대답할 수 있습니다.

MQL5 참조 / 언어 기본 / 연산 및 표현식 / 할당 연산:

누적 변수 y와 유추하여:


그러나 이것은 &=에 대한 나의 첫 경험이므로 틀릴 수 있습니다.

아니요. 먼저 (계획대로), 모든 논리적 조건은 누적 h_plus에서 for 내부에서 요약되고 결과 부울 합계는 내부 for 와 아무 관련이 없는 if 로 대체됩니다.
그러나 더 정확할 것입니다.
h_plus&=high[i]>high[i+increment];
h_plus = h_plus && high[i]>high[i+increment];
 
Alexey Viktorov # :

귀하의 경우 두 가지 조건이 모두 충족되어야 하므로 그렇지 않습니다. 하지만 이것을 넣으면

그럼 네. 조건 "a"가 충족되면 두 번째 조건은 확인되지 않습니다. 그들은 수년 동안 이것을 위해 싸웠고 이제 당신은 지난 세기로 돌아갈 것을 제안하고 있습니다 ...

비록 ... 나의 이 진술에서, 나는 옳지 않다. 분명히 여기에 쓰여진 내용을 잘 이해하지 못했습니다.

x572일중 # :

감히 그것을 버그라고 부르지 않을 것입니다. 따라서 if 문의 한 가지 기능을 발견했다고 말할 것입니다. 나는 이것이 다른 YaPam에도 적용될 수 있음을 분명히 알았습니다.

a가 true이면 검사가 Array[over_index]로 점프하고 터미널이 ' array out of range ' 부분에 대해 폭격을 시작하는 때입니다. 이는 완벽하게 공정합니다. 거짓으로 판명되면 Array[over_index] 진리 조건을 확인하지 않습니다. 즉, 인덱스 가 중복되고, 추가로 건너뛰고 인코더는 인덱스가 존재하지 않는 배열을 알지 못합니다. 그의 프로그램에서 걷고 있습니다 ... 더 정확하게는 존재하지만 중복됩니다.

아마도 이것은 ' array out of range ' 에 대한 검사가 if 에서 끝까지 발생하고 동일한 메시지가 발행되도록 수정해야 할 필요가 있습니까? 아니면 작업자의 속도를 크게 떨어뜨릴까요?

&& 조건과 첫 번째 조건 충족되지 않더라도 두 번째 조건은 확인되지 않습니다. 누군가를 속여서 죄송합니다...

 
x572intraday # :

순간의 더위는 이미 브레이크리턴 을 모두 시도했지만 더 악화되었습니다. 코드를 좀 더 단순화하고 break 로 다시 생각해보겠다...

 for ( int i=start; i<rates_total- n && ! IsStopped (); i++)
{
   for ( int increment= 1 , bool h_plus=true ; h_plus && increment<=n ; increment++)
     h_plus = high[i]>high[i+increment]; // можно не накапливать, вылетим из цикла на первом false

   if (h_plus) {...}
   ...
}

여기에 그런 것이 있습니다.

 

타임라인을 따라 마우스를 움직여 차트를 스케일링할 때, 마우스의 이동 방향에 따라 차트가 왼쪽이나 오른쪽으로 흘러가기 때문에 사용자의 시선이 집중되어야 하는 모든 것이 단순히 차트 밖으로 사라지는 경우가 많습니다. . 이것은 매우 불편합니다. 그 이후로 올바른 장소를 찾아야하며 이것은 MT를 알게 된 이후로 관찰되었습니다.

돋보기 아이콘을 클릭하면 차트 중앙의 크기가 조정되지만 아니요, 동작은 마우스 확대/축소의 경우와 동일하다고 가정하는 것이 논리적이었습니다. 차트 가 왼쪽 (압축) 또는 오른쪽으로 이동합니다. (확장).

친애하는 개발자 여러분! 스케일링 시 차트의 동작을 변경해 주시길 부탁드리며, 차트의 중앙을 중앙에 남겨두셔야 합니다.

차트 작업 시 이러한 불편함을 논의한 모든 사람이 나와 동의하므로 이 문제에 대해 객관적일 가능성이 높습니다.

나는 14년 동안 그것에 익숙해지려고 노력했다 - 나는 할 수 없었다.

 
JRandomTrader # :
 for ( int i=start; i<rates_total-n && ! IsStopped (); i++)
{
   for ( int increment= 1 , bool h_plus= true ; h_plus && increment<=n ; increment++)
     h_plus = high[i]>high[i+increment]; // можно не накапливать, вылетим из цикла на первом false

   if (h_plus) {...}
   ...
}

여기에 그런 것이 있습니다.

신선한 아이디어, 시도하겠습니다.

이전 버전의 경우:

 for ( int i=start; i<rates_total- 3 && ! IsStopped (); i++)
{
   bool h_plus= true ; //false?
   for ( int increment= 1 ; increment<=n; increment++)
     {
      h_plus&=high[i]>high[i+increment];
       if (!h_plus) break ;
     }
   if (h_plus) {...}
   ...
}

시도하지 않고도 이미 분명합니다.

 if (!h_plus) break ;

합계 다음에 옵니다. 즉, 터미널은 이전 행을 먼저 보고 초과 인덱스가 있는 배열이 있다는 것을 이미 이해하고 동일한 메시지 ' array out of range '를 반환합니다. 이것은 두 번째입니다. 그리고 첫 번째는 일반적으로 !h_plus가 아니라 ArraySize(high)<=i+increment를 확인하고 인덱스가 초과되면 루프에서 실행해야 한다는 것입니다. 나는 이미 어제 이 모든 것을 시도했지만 약간의 뉘앙스에서 깨졌습니다. 예, 더 이상 메시지가 없었지만 표시기가 정원을 울타리로 만들기 시작했습니다.

 
x572intraday # :

이전 버전의 경우:

시도하지 않고도 이미 분명합니다.

합계 다음에 옵니다. 즉, 터미널은 이전 행을 먼저 보고 초과 인덱스가 있는 배열이 있다는 것을 이미 이해하고 동일한 메시지 ' array out of range '를 반환합니다. 이것은 두 번째입니다. 그리고 첫 번째는 일반적으로 !h_plus가 아니라 ArraySize(high)<=i+increment를 확인하고 인덱스가 초과되면 루프에서 실행해야 한다는 것입니다. 나는 이미 어제 이 모든 것을 시도했지만 약간의 뉘앙스에서 깨졌습니다. 예, 더 이상 메시지가 없었지만 표시기가 정원을 울타리로 만들기 시작했습니다.

그래서 여기에 문제가 있습니다

i<rates_total- 3
나는 헛되이 쓰지 않았다
i<rates_total-n
그리고 루프에서 일찍 시작하는 것은 if() 계산을 정확하게 시뮬레이션하기 위한 것입니다.
 
x572intraday # :

감히 그것을 버그라고 부르지 않을 것입니다. 따라서 if 문의 한 가지 기능을 발견했다고 말할 것입니다. 나는 분명히 이것이 다른 YaPam에 적용될 수 있음을 안다.

a가 true이면 검사가 Array[over_index]로 점프하고 터미널이 ' array out of range ' 부분에 대해 폭격을 시작하는 때입니다. 이는 완벽하게 공정합니다. 거짓으로 판명되면 Array[over_index] 진리 조건을 확인하지 않습니다. 즉, 인덱스 가 중복되고, 추가로 건너뛰고 인코더는 인덱스가 존재하지 않는 배열을 알지 못합니다. 그의 프로그램에서 걷고 있습니다 ... 더 정확하게는 존재하지만 중복됩니다.

아마도 이것은 ' array out of range ' 에 대한 검사가 if 에서 끝까지 발생하고 동일한 메시지가 발행되도록 수정해야 할 필요가 있습니까? 아니면 오퍼레이터의 속도를 크게 떨어뜨릴까요?


변수 a가 false이면 제어가 추가로 전송되고 if 뒤의 괄호 안의 코드와 배열에 영향을 주지 않습니다.

 if (a && Array[over_index]>val) {...}

왼쪽(a)가 참인 경우에만 제어가 조건의 오른쪽으로 이동합니다.

예를 들어 당신이 할 경우

 if (check(over_index) && Array[over_index]>val) {...}

여기서 검사 기능은 배열 배열의 한계 내에서 발생하는 인덱스를 확인하면 "범위를 벗어난 배열"이 없습니다 .   하지 않을 것이다. 따라서 배열 인덱스를 확인하고 하나의 if에서 액세스할 수 있습니다. 그러나 && 연산자를 사용하여 if의 두 번째 부분으로 제어가 전달되기 위해 첫 번째가 false이면 기존 프로그래밍 언어에서는 거의 불가능합니다...

 

한 가지 문제가 있습니다. 무작위로 가끔 나타납니다.

여러 통화로 테스터에서 작업할 때 나타납니다.

각 주기에서 심볼의 현재 가격을 요청합니다. 그리고 어떤 이유로 테스터가 특정 기호에 대한 따옴표를받지 못하면 다른 기호에서 이전에받은 따옴표가 사용됩니다.

가격이 일정 가격 이상이 되면 포지션을 열어야 합니다. 그러나 다른 캐릭터의 잘못된 데이터를 사용하면 열림이 발생합니다.

EURCAD 기호, 가격이 1.45117 이상이면 엽니다. 1.74425>1.45117? 예, 하지만 이것은 다른 상징의 가격입니다.

500건의 주문 중 7건이 잘못된 것으로 판명됐다.

 
Yury Lemeshev # :

한 가지 문제가 있습니다. 무작위로 가끔 나타납니다.

여러 통화로 테스터에서 작업할 때 나타납니다.

각 주기에서 심볼의 현재 가격을 요청합니다. 그리고 어떤 이유로 테스터가 특정 기호에 대한 따옴표를받지 못하면 다른 기호에서 이전에받은 따옴표가 사용됩니다.

가격이 일정 가격 이상이 되면 포지션을 열어야 합니다. 그러나 다른 캐릭터의 잘못된 데이터를 사용하면 열림이 발생합니다.

EURCAD 기호, 가격이 1.45117 이상이면 엽니다. 1.74425>1.45117? 예, 하지만 이것은 다른 상징의 가격입니다.

500건의 주문 중 7건이 잘못된 것으로 판명됐다.

코드에 문제가 있지만 텔레파시가 이미 축하하고 있으며 폭식에서 벗어날 때 오류가 123652 행에 있다고 말합니다.

 
Alexey Viktorov # :

코드에 문제가 있지만 텔레파시가 이미 축하하고 있으며 폭식에서 벗어날 때 오류가 123652 행에 있다고 말합니다.

코드에 오류가없고 오류를 수정하기 위해 코드를 다시 작성했으며 오류가 정기적으로 나타나지 않고 완전히 혼란 스럽습니다.