정적 배열? - 페이지 4

 
두 번째 루프의 i=Bars의 경우 값이 아닌 모든 배열 요소 를 인쇄하고 all = 0

혼란스러워

첫 번째 루프에서 끝 i를 빼냈습니다. 하지만 효과가 없었다

 

약간의 변경으로 코드가 뭔가를 하는 것 같습니다. . .

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[6]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[7]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[8]= 0

배열에 관한 책을 읽었을 때 어디에서 이렇게 말하는지 보았습니까?

"배열을 선언할 때 각 차원의 데이터 유형, 배열 이름 및 요소 수를 지정해야 합니다."

 
RaptorUK :

약간의 변경으로 코드가 뭔가를 하는 것 같습니다. . .

2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[0]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[1]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[2]= 0
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[3]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[4]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[5]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[6]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[7]= 0.8202
2011.09.21 11:24:41 2007.04.05 21:11 Agent86_5min AUDUSD,H1: v1[8]= 0

배열에 관한 책을 읽었을 때 어디에서 이렇게 말하는지 보았습니까?

"배열을 선언할 때 각 차원의 데이터 유형, 배열 이름 및 요소 수를 지정해야 합니다."

그래, 내가 했어

내 이해는 double v1[]이 데이터 유형을 전역적으로 그리고 start() 전에 결정했다는 것입니다.
그런 다음 [i]는 배열에 얼마나 많은 요소가 있는지 알려주는 배열을 초기화했습니다. 이 경우 요소 = 막대가 있는 1차원이지만 i--를 감소시키는 동안 숫자가 변경됩니다.
오른쪽 ?

따라서 요소 수를 감소시키는 경우 요소 수가 더 이상 없으면 버퍼는 표시기를 어떻게 저장하고 게시합니까?
또는 요소가 감소할 때 요소에 어떤 일이 발생하는지 말해야 합니까 [i] ?
그냥 사라지나요? 그들은 참조하기 위해 여전히 v1[i]에 저장되어 있습니까, 아니면 사라졌습니까?

내가 이것을 알아낼 수 있다면 아마도 그것들을 참조하는 방법을 이해할 수 있을 것입니다. 그것들이 사라진다면 사용하기 위해 그것들을 어떻게 잡아야 하는지 알아낼 수 있습니다.
내가 얻지 못하는 것은 else 문이 v1[i]=v1[i+1]을 참조할 수 있는 것 같습니다. 그래서 내가 인쇄할 때 그 지점에서 v1[i] = 0인 경우 어떻게 v1[i]를 참조할 수 있습니까? 이 지점에서.

배열이 비어 있으면 배열에 요소가 없기 때문에 빈 배열을 0으로 인쇄하기 때문에 이러한 종류는 어떤 의미에서는 = 0에 의미가 있습니다.

제대로 이해했는지는 모르겠지만 계속 생각하고 문서를 읽고 또 읽고 있습니다.

이제 Bars에 연결된 숫자가 1개 이상인 경우 Bars를 고려하면 차원이 내가 생각하는 것과 다를 수 있습니다.
그래서 나는 내가 실제로 무엇인지 이해하기 위해 더 많은 것을 읽을 것이라고 생각합니다.

Bar = 차트의 막대 수 에서와 같이 단일 숫자 카운트 였지만
Bars를 인쇄하면 5min 차트에서 1002가 표시되며 이것이 단일 차원이라고 생각합니다.


계속 작업하겠습니다.

 

Array를 더 크게(또는 더 작게) 만들고 싶다면 ArrayResize를 사용해야 합니다 . . . 배열은 다른 변수와 같습니다. . 그것은 당신이 쉽게 접근할 수 있는 그들 중 많은 수가 있을 수 있다는 것입니다. . .

이 코드를 복사하여 스크립트로 실행하면 어떤 결과가 나올까요?

 //+------------------------------------------------------------------+
//|                                                  TestArray.mq4   |
//|                      Copyright © 2011, MetaQuotes Software Corp. |
//|                                                                  |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2011, MetaQuotes Software Corp."
#property link       ""


// #property indicator_chart_window



//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int init()
  {
   
   
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
int deinit()
  {
//----
   
//----
   return ( 0 );
  }
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int start()
   {
   double test[];
   
   test[ 39 ] = 45.6 ;
   Print ( "test[39]= " ,test[ 39 ] );
   

       return ( 0 );
   }
//+------------------------------------------------------------------+

     
 
2011.09.21 07:54:26 없음 EURUSD,M5: 제거됨
2011.09.21 07:54:26 없음 EURUSD,M5: 단위 이유 0
2011.09.21 07:54:26 없음 EURUSD,M5: 초기화 해제
2011.09.21 07:54:26 없음 EURUSD,M5: 테스트[39]= 0
2011.09.21 07:54:26 없음 EURUSD,M5: 초기화


이것은 스크립트가 생성하는 것입니다. 정확히 복사했습니다.

방금 두 번 클릭하고 실행했고 이것이 전문가 탭에 나타납니다.

대본의 저널은 다음과 같이 말합니다.
2011.09.21 07:54:26 스크립트 없음 EURUSD,M5: 제거됨
2011.09.21 07:54:26 스크립트 없음 EURUSD,M5: 성공적으로 로드됨

45.6을 출력으로 봐야 한다고 생각했습니다. 내가 잘못 ?

나만의 고정 배열[5] = {1,2,3,4,5}을 만들었습니다.

그리고 Print[5] 또는 Print[3] 등을 할 수 있는 것 같습니다.

내가 중괄호를 넣고 스크립트를 다시 보자

 

그래 좋아 . . 이제 이 줄을 편집하십시오. .

. . . 그리고 다시 시도하십시오.

 double test[];

to

double test[ 40 ];
 
2011.09.21 08:07:58 없음 EURUSD,M5: 단위 이유 0
2011.09.21 08:07:58 없음 EURUSD,M5: 초기화 해제
2011.09.21 08:07:58 없음 EURUSD,M5: 테스트[39]= 45.6


젠장, 몇 시간 안에 다 떨어져야 해.

운전하면서 좀 더 생각해볼 수 있을 것 같아요

 

정말 생각할 것이 없습니다. . .

"배열을 선언할 때 각 차원의 데이터 유형, 배열 이름 및 요소 수를 지정해야 합니다."

배열의 항목 수를 선언해야 합니다. . .

 

흥미로운
요소 수 선언이 v1[i]로 완료되었다고 생각합니까? i=Bars 이후로 나는 그것이 v1[Bars]라고 말하는 것과 같다고 생각했는데, 이는 그 숫자가 무엇이든


선언되지 않은 경우 참조할 수 없는 경우 표시기가 v1[i]를 어떻게 알 수 있는지 이해할 수 없습니까?
이 동일한 스크립트는 표시기 버전에서 작동하고 이것을 v1[]의 버퍼에 저장하므로 선을 그리기 위해 버퍼를 참조하는 방법을 어떻게 알 수 있습니까?

현재 지표 작업 중입니다. 이것은 다른 주제입니까?

 

예, 표시기 버퍼 는 일반 배열과 다르게 처리됩니다.

v[i]는 Array를 선언하지 않고 요소 중 하나일 뿐입니다. . 하지만 더블 v[]; 요소가 없는 배열입니다. . 그래서 v[anything] 항상 = 0