ArrayIsDynamic

이 함수는 배열이 동적인지 여부를 확인.

bool  ArrayIsDynamic(
   const void&  array[]    // 확인된 배열
   );

매개변수

array[]

[in]  확인된 배열.

반환 값

선택한 배열이 동적인면 true를, 그렇지 않으면 false를 반환.

예:

#property description "이 지표는 값을 계산하지 않습니다. 단 한번 시도합니다"
#property description "ArrayFree() 기능을 호출은 3개의 배열(동적 배열 하나, 정적 배열 하나)에 적용합니다"
#property description "지표 버퍼. 결과는 엑스퍼트 저널에 표시됩니다."
//--- 지표 설정
#property indicator_chart_window
#property indicator_buffers 1
#property indicator_plots   1
//--- 글로벌 변수
double ExtDynamic[];   // 동적 배열
double ExtStatic[100]; // 정적 배열
bool   ExtFlag=true;   // 플래그
double ExtBuff[];      // 지표 버퍼
//+------------------------------------------------------------------+
//| 사용자 지정 지표 초기화 함수                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 배열에 메모리 할당
   ArrayResize(ExtDynamic,100);
//--- 지표 버퍼 맵핑
   SetIndexBuffer(0,ExtBuff);
   PlotIndexSetDouble(0,PLOT_EMPTY_VALUE,0);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 사용자 지정 지표 반복 함수                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const int begin,
                const double &price[])
  {
//--- 단일 분석을 실시
   if(ExtFlag)
     {
      //--- 배열에 여유 메모리 시도
      //--- 1. 동적 배열
      Print("+============================+");
      Print("1. 동적 배열 확인:");
      Print("메모리를 확보하기 전의 크기 = ",ArraySize(ExtDynamic));
      Print("동적 배열인지 확인 = ",ArrayIsDynamic(ExtDynamic) ? "예" : "아니오");
      //--- 배열 메모리 사용 시도
      ArrayFree(ExtDynamic);
      Print("메모리 확보한 후의 크기 = ",ArraySize(ExtDynamic));
      //--- 2. 정적 배열
      Print("2. 정적 배열 확인:");
      Print("메모리를 확보하기 전의 크기 = ",ArraySize(ExtStatic));
      Print("동적 배열인지 확인 = ",ArrayIsDynamic(ExtStatic) ? "예" : "아니오");
      //--- 배열 메모리 사용 시도
      ArrayFree(ExtStatic);
      Print("메모리를 확보한 후의 크기 = ",ArraySize(ExtStatic));
      //--- 3. 지표 버퍼
      Print("3. 지표 버퍼 확인:");
      Print("메모리 확보 전의 크기 = ",ArraySize(ExtBuff));
      Print("동적 배열인지 확인 = ",ArrayIsDynamic(ExtBuff) ? "예" : "아니오");
      //--- 배열 메모리 사용 시도
      ArrayFree(ExtBuff);
      Print("메모리 확보한 후의 크기 = ",ArraySize(ExtBuff));
      //--- 플래그 값 변경
      ExtFlag=false;
     }
//--- 다음 호출을 위한 prev_calculated의 반환 값
   return(rates_total);
  }

추가 참조

시계열 및 지표에 대한 액세스