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

 
Neofit :
배열의 크기를 설정합니다. 배열 크기 조정
 
Neofit :

요소가 Mqlrates 구조 인 배열로 작업하는 방법을 알려주십시오.

다음은 정확히 귀하가 관심을 갖고 있는 것입니다. 예를 들면 다음과 같습니다.

MqlRates AdaptedRates[];

ArraySetAsSeries(AdaptedRates,true); 

AdaptedRates[300].open=1;

디버거에서는 잘못된 배열 액세스라는 오류가 발생합니다.

내가 이해하는 한 이것은 이 표기법을 사용하면 배열 요소인 구조의 요소만 읽을 수 있기 때문입니다.

문제는 구조 요소를 올바르게 작성 하는 방법입니다. 관심이 없는 모든 요소는 .open .high .low .close 가격에 직접적으로 중요합니다.

미리 사과드립니다. 질문은 아마도 매우 진부할 것입니다(저는 프로그래머가 아닙니다). 그러나 도움말에서 답을 찾지 못했습니다. 도움을 주시면 감사하겠습니다.

동적 배열 AdaptedRates[]를 사용하고 있습니다. 내가 기억하는 한 동적 배열로 작업할 때 ArrayResize () 함수를 사용하여 크기를 설정해야 합니다. 그 동안 컴파일러는 세 번째 줄에 표시된 인덱스 300에서 맹세합니다.
 
Swan :
배열의 크기를 설정합니다. 배열 크기 조정
내가 이해하는 한, 예를 들어 크기를 결정하면
MqlRates AdaptedRates[302];  
그러면 인덱싱 유형을 시리즈로 설정할 수 없습니다.
 
Neofit :
내가 이해하는 한, 예를 들어 크기를 결정하면
MqlRates AdaptedRates[302];  
그러면 인덱싱 유형을 시리즈로 설정할 수 없습니다.

:) 정적 배열 을 설정하지 않고 ArrayResize()를 사용하여 동적 크기를 설정합니다.

글쎄요: ArrayResize(AdaptedRates,302); 등.

 
Yedelkin :
동적 배열 AdaptedRates[]를 사용하고 있습니다. 내가 기억하는 한 동적 배열로 작업할 때 ArrayResize () 함수를 사용하여 크기를 설정해야 합니다. 그 동안 컴파일러는 세 번째 줄에 표시된 인덱스 300에서 맹세합니다.
정적 배열은 시계열로 표현할 수 없습니다. 즉, 배열의 끝에서 시작까지 배열 요소에 대한 액세스를 설정하는 ArraySetAsSeries() 함수는 해당 배열에 적용되지 않습니다. 시계열에서와 같이 배열에 대한 액세스를 제공하려면 동적 배열 객체 를 사용하십시오.

참고로 인용한 내용입니다.

Swan, Yedelkin 너무 빨리 응답해 주셔서 감사합니다.

 
Neofit :
내가 이해하는 한, 예를 들어 크기를 결정하면
MqlRates AdaptedRates[302];  
그러면 인덱싱 유형을 시리즈로 설정할 수 없습니다.

네.

MqlRates AdaptedRates[];//배열을 동적으로 유지

ArrayResize(AdaptedRates,302);//원하는 크기 설정

Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
Документация по MQL5: Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных
  • www.mql5.com
Стандартные константы, перечисления и структуры / Структуры данных / Структура исторических данных - Документация по MQL5
 
Yedelkin :

:) 정적 배열 을 설정하지 않고 ArrayResize()를 사용하여 동적 크기를 설정합니다.

글쎄, ArrayResize(AdaptedRates,302); 등.

내가 이해하는 한 대중적인 설명에 감사드립니다. 동적 배열의 셀에 액세스하기 전에 필요한 제한으로 ArrayResize하는 것이 바람직합니다. 시도해 보겠습니다.
 
pusheax :

전략 테스터 의 결함.

갑자기 멈추고 모든 로컬 및 원격 에이전트의 비문이 완료되어 중단됩니다.

더 이상 어떻게 시작해야 하는지 알려주지 마세요, 처음부터 다시 시작해야 하는 시간이 아쉽죠?
정기적으로 :-) 처음에는 필요하지 않습니다.
 
Neofit :
내가 이해하는 한 대중적인 설명에 감사드립니다. 동적 배열의 셀에 액세스하기 전에 필요한 제한으로 ArrayResize하는 것이 바람직합니다. 시도해 보겠습니다.

메모. 표시기 버퍼 의 경우에만 필요하지 않습니다. 거기에서 터미널의 실행 하위 시스템은 이를 자체적으로 처리합니다.

참고 2. ArrayResize()는 동적 배열의 크기를 변경해야 할 때만 사용하는 것이 좋으며 요소에 액세스하기 전에는 사용하지 않는 것이 좋습니다. 동적 배열에 크기가 한 번 주어지면 프로그램은 단순히 요소에 액세스합니다.

 
Yedelkin :

메모. 표시기 버퍼 의 경우에만 필요하지 않습니다. 거기에서 터미널의 실행 하위 시스템은 이를 자체적으로 처리합니다.

참고 2. ArrayResize()는 동적 배열의 크기를 변경해야 할 때만 사용하는 것이 좋으며 요소에 액세스하기 전에는 사용하지 않는 것이 좋습니다. 동적 배열에 크기가 한 번 주어지면 프로그램은 단순히 요소에 액세스합니다.

글쎄, 내가 바보같이 말했다. 사실, 동적 배열을 이미 302로 확장했다면 ArrayResize 없이 0에서 301 사이의 모든 요소를 참조할 수 있다는 것을 이해합니다.