MQL4 및 MQL5에 대한 초보자 질문, 알고리즘 및 코드에 대한 도움말 및 토론 - 페이지 1898

 
Vitaly Muzichenko # :

데이터를 먼저 작성한 다음 이동하는 이유는 무엇입니까?

  Buffer1[ 0 ]=b;
  Buffer2[ 0 ]=a;
   for ( int j=H; j> 0 ; j--) {
    Buffer1[j]=Buffer1[j- 1 ];
    Buffer2[j]=Buffer2[j- 1 ];
  }

이것은 실제 눈금 차트와 일치하지 않습니다!

이것이 올바른 방법입니다.

   for ( int j=H; j> 0 ; j--) {
    Buffer1[j]=Buffer1[j- 1 ];
    Buffer2[j]=Buffer2[j- 1 ];
  }
  Buffer1[ 0 ]=b;
  Buffer2[ 0 ]=a;
 
Vitaly Muzichenko # :

다시 말하지만, ArrayCopy() 내부에 루프가 있으며 아마도 둘 이상일 수 있습니다. 따라서 대체 코드가 더 쉽고 빨라지지 않을 것입니다.

위에서 두 번 이상 말했습니다. 주기 없이는 할 수 없습니다!

 
Mihail Matkovskij # :

데이터를 먼저 작성한 다음 이동하는 이유는 무엇입니까?

이것은 실제 눈금 차트와 일치하지 않습니다!

이것이 올바른 방법입니다.

물론 정결하지만 동일합니다.)

예, 몇 가지 할당 비교를 통해 최대 1000번까지 반복하는 짧은 루프는 쉽습니다. 그래서 그것은 당신을 놀라게해서는 안됩니다.

 
EVGENII SHELIPOV # :

새로운 극값이 없으면 프랙탈이 형성되고 막대 3개 이후에는 0, 1, 2가 됩니다.

아무것도 바뀌지 않았다.

아니면 다른 것이 잘못되었습니다.

D1에서 프랙탈 표시기를 실행하고 거기에 프랙탈이 있는지 확인하십시오.
 
Valeriy Yastremskiy # :

물론 정결하지만 동일합니다.)

동일하지 않습니다. 먼저 틱을 기록한 다음 배열을 이동하면 이동한 나머지 틱과 함께 왼쪽으로 1바 이동된 것으로 나타났습니다. 그러나 먼저 배열을 이동한 다음 0 인덱스에 눈금 값을 쓰면 먼저 눈금을 위한 공간을 확보한 다음 거기에 씁니다. 결과적으로 그는 어디에도 실향하지 않습니다.

 
Mihail Matkovskij # :

위에서 두 번 이상 말했습니다. 주기 없이는 할 수 없습니다!

제대로 된 것 같다


충전재를 교체하려고했는데 오류가 발생합니다.


 
Vitaly Muzichenko # :

충전재를 교체하려고했는데 오류가 발생합니다.


이상합니다. 왜 그럴까요?... 모든 것이 제대로 작동해야 하는 것 같습니다. 진드기만 제자리에 있고 왼쪽으로 이동하지 않습니다.

추신: 아직 추가 어레이가 필요했습니다(처음에 말했듯 이). 그렇지 않으면 새 막대가 나타날 때 모든 눈금이 표시기 버퍼이기 때문에 자동으로 왼쪽으로 이동합니다! 또는 새 막대가 나타나는 순간을 추적하고 버퍼를 오른쪽으로 이동합니다.
 
그리고 배열을 이동하지 않고 링 버퍼 로 사용하면 첫 번째 요소의 현재 위치를 기억하고 있습니까?
 
Mihail Matkovskij # :

동일하지 않습니다. 먼저 틱을 기록한 다음 배열을 이동하면 이동한 나머지 틱과 함께 왼쪽으로 1바 이동된 것으로 나타났습니다. 그러나 먼저 배열을 이동한 다음 0 인덱스에 눈금 값을 쓰면 먼저 눈금을 위한 공간을 확보한 다음 거기에 씁니다. 결과적으로 그는 어디에도 실향하지 않습니다.

예, 제 경우에는 0이 아닌 첫 번째부터 시작해야 합니다.) 올바른 지적입니다.

ZY, 하지만 그렇습니다. 처음에는 변위가 필요하고 적절한 0이 필요합니다. 어떤 방법이든 상관없이.

ZYZY는 시프트 전에 0 값을 덮어쓰면 0 인덱스 값을 잃습니다.

 
JRandomTrader 링 버퍼 로 사용하면 첫 번째 요소의 현재 위치를 기억하고 있습니까?

링 버퍼(µl)란 무엇입니까?