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

 
MoneyJinn :

표시기를 다시 컴파일한 후 동적 배열 로 작업할 때 "배열이 범위를 벗어남" 오류가 나타나기 시작했습니다.

이전에는 없었습니다. 무엇을 할까요?

파일 시작 부분에 유사한 줄이 있는 경우

#include <File.mqh> , 이러한 포함 파일은 이전 컴파일 이후 귀하 또는 다른 사람에 의해 변경되었을 가능성이 큽니다.

 
Olegts :

파일 시작 부분에 유사한 줄이 있는 경우

#include <File.mqh> , 이러한 포함 파일은 이전 컴파일 이후 귀하 또는 다른 사람에 의해 변경되었을 가능성이 큽니다.

포함된 파일이 없습니다.

 
MoneyJinn :

포함된 파일이 없습니다.

그런 다음 표시기를 배치해야합니다. 아마도 누군가가 여가를 살펴볼 것입니다)
 

동적 배열 에 무언가를 추가하려고 할 때 "array out of range" 오류가 발생하는 이유는 무엇입니까? 그는 또한 역동적입니다.

배열 B1[] 표시기 버퍼에 해당하는 것으로 지정됨

SetIndexBuffer(0,B1,INDICATOR_DATA); ArraySetAsSeries(B1,true);

여기서 어레이의 크기는 분명히 사용자가 제어하지 않습니다.

 
MoneyJinn :
동적 배열 에 무언가를 추가하려고 할 때 "array out of range" 오류가 발생하는 이유는 무엇입니까? 그는 또한 역동적입니다.
이것은 크기 자체를 증가시킨다는 것을 의미하지 않습니다. 이것은 ArrayResize 함수에 의해 수행되며, 그런 다음 이미 데이터를 입력할 수 있지만 배열의 새 크기보다 크지 않습니다.
 
MoneyJinn :
동적 배열 에 무언가를 추가하려고 할 때 "array out of range" 오류가 발생하는 이유는 무엇입니까? 그는 또한 역동적입니다.
(fcplm)
 
TheXpert :
(fcplm)

누가 그를 심을 것인가? 그는 기념비입니다!

 

플랫폼 오류입니다.

지시자 버퍼 의 배열 B1을 채우면서 SetIndexBuffer(0,B1,INDICATOR_DATA) 프로시저를 다시 호출하면,

예를 들어 표시기를 초기화할 때 배열 B1에 무언가를 쓰려고 하면 "배열이 범위를 벗어남" 오류가 발생합니다.

SetIndexBuffer(0,B1,INDICATOR_DATA) 프로시저를 한 번만 호출하면 모든 것이 제대로 작동합니다.

이전에는 그렇지 않았습니다.

Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
Усреднение ценовых рядов без дополнительных буферов для промежуточных расчетов
  • 2010.10.25
  • Nikolay Kositsin
  • www.mql5.com
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
 
MoneyJinn :

플랫폼 오류입니다.

지시자 버퍼 의 배열 B1을 채우면서 SetIndexBuffer(0,B1,INDICATOR_DATA) 프로시저를 다시 호출하면,

예를 들어 표시기를 초기화할 때 배열 B1에 무언가를 쓰려고 하면 "배열이 범위를 벗어남" 오류가 발생합니다.

SetIndexBuffer(0,B1,INDICATOR_DATA) 프로시저를 한 번만 호출하면 모든 것이 제대로 작동합니다.

이전에는 그렇지 않았습니다.

왜 자꾸 이러는거야?

버퍼를 바인딩한다는 것은 버퍼를 정리 하고 후속 계산을 위해 동적 바인딩을 준비하는 것을 의미합니다. 두 번째로 호출되면 이전 버퍼가 지워지고 표시기를 다시 계산하기 위해 다음 호출에서만 채워집니다.

 
Renat :

왜 자꾸 이러는거야?

버퍼를 바인딩한다는 것은 버퍼를 정리 하고 후속 계산을 위해 동적 바인딩을 준비하는 것을 의미합니다. 두 번째로 호출되면 이전 버퍼가 지워지고 표시기를 다시 계산하기 위해 다음 호출에서만 채워집니다.

이것은 표시기의 표준 전체 초기화로, 처음 실행될 때 발생하며 Oninit()를 통해 수행됩니다.

가끔 히스토리 업데이트 등을 할 때 또한 수행해야 합니다.

아무도 Oninit()를 통한 표시기의 재초기화로 인해 일부 배열이 응답하지 않을 것이라고 생각하지 않았습니다.