IndicatorCreate

이 함수는 MqlParam 유형의 매개 변수 베얄ㅇ,ㄹ 기반으로 생성된 지정된 기술 지표의 핸들을 반환합니다.

int  IndicatorCreate(
   string           symbol,                            // 심볼명
   ENUM_TIMEFRAMES  period,                            // 타임프레임
   ENUM_INDICATOR   indicator_type,                    // ENUM_INDICATOR 열거로부터의 지표 유형
   int              parameters_cnt=0,                  // 매개 변수의 수
   const MqlParam&  parameters_array[]=NULL,           // 매개 변수 배열
   );

Parameters

symbol

[in] 지표가 계산되는 데이터의 심볼의 이름. NULL은 현재 심볼을 의미합니다.

period

[in]  타임프레임 값은 ENUM_TIMEFRAMES 열거값 중 하나일 수 있으며, 0은 현재 타임프레임 범위를 의미합니다.

indicator_type

[in]  지표 유형, ENUM_INDICATOR 열거값 중 하나일 수 있음.

parameters_cnt

[in] parameters_array[] 배열에 전달된 매개 변수의 수. 배열 요소에는 특수 구조 유형 MqlParam이 있습니다. 기본적으로 0 매개 변수는 전달되지 않습니다. 매개 변수 수를 0이 아닌 값으로 지정할 경우 매개 변수 parameters_array는 필수입니다. 매개 변수는 64개까지만 전달할 수 있습니다.

parameters_array[]=NULL

[in]  MqlParam type 유형의 배열로, 요소에는 기술적 지표의 각 입력 매개 변수 유형과 값이 포함됩니다.

반환 값

지정된 기술적 지표의 핸들을 반환하며, 장애가 발생한 경우 INVALID_HANDLE를 반환합니다.

참고

IND_CUSTOM 타입의 지표 핸들이 생성되면, 유형 필드-입력 매개 변수 parameters_array의 배열 중 첫번째 요소의-는 ENUM_DATATYPE 열거의 TYPE_STRING 값을 가져야 하며 첫번째 요소의 string_value 필드는 커스텀 지표의 이름을 포함해야 합니다. 커스텀 지표는 컴파일(EX5 확장자 파일)해야 하며 클라이언트 터미널의 MQL5/Indicators 디렉토리 또는 하위 디렉토리에 있어야 합니다.

테스트가 필요한 지표는 해당 파라미터가 constant string를 통해 설정된 경우 iCustom() 함수의 호출을 통해 자동으로 정의됩니다. 다른 모든 경우 (지표 이름을 설정하는 파라미터에서 IndicatorCreate() 함수 사용 또는 비상수 문자열 사용)에는 속성 #property tester_indicator가 필요합니다:

#property tester_indicator "indicator_name.ex5"

커스텀 지표에 첫 번째 형태의 호출이 사용되는 경우, 입력 파라미터를 전달할 때 어떤 데이터가 계산될지 마지막 파라미터로 추가로 지정할 수 있습니다. "적용 대상" 파라미터가 명시적으로 지정되지 않은 경우 기본 계산은 PRICE_CLOSE 값을 기반으로 합니다.

예:

void OnStart()
  {
   MqlParam params[];
   int      h_MA,h_MACD;
//--- create iMA("EURUSD",PERIOD_M15,8,0,MODE_EMA,PRICE_CLOSE);
   ArrayResize(params,4);
//--- set ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=8;
//--- set ma_shift
   params[1].type         =TYPE_INT;
   params[1].integer_value=0;
//--- set ma_method
   params[2].type         =TYPE_INT;
   params[2].integer_value=MODE_EMA;
//--- set applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=PRICE_CLOSE;
//--- create MA
   h_MA=IndicatorCreate("EURUSD",PERIOD_M15,IND_MA,4,params);
//--- create iMACD("EURUSD",PERIOD_M15,12,26,9,h_MA);
   ArrayResize(params,4);
//--- set fast ma_period
   params[0].type         =TYPE_INT;
   params[0].integer_value=12;
//--- set slow ma_period
   params[1].type         =TYPE_INT;
   params[1].integer_value=26;
//--- set smooth period for difference
   params[2].type         =TYPE_INT;
   params[2].integer_value=9;
//--- set indicator handle as applied_price
   params[3].type         =TYPE_INT;
   params[3].integer_value=h_MA;
//--- create MACD based on moving average
   h_MACD=IndicatorCreate("EURUSD",PERIOD_M15,IND_MACD,4,params);
//--- use indicators
//--- . . .
//--- release indicators (first h_MACD)
   IndicatorRelease(h_MACD);
   IndicatorRelease(h_MA);
  }