IndicatorSetDouble

기능은 해당 지표 속성의 값을 설정. 지표 속성은 double 유형이어야 합니다. 기능에는 두 가지 종류가 있습니다.

속성 식별자를 지정하여 호출.

bool  IndicatorSetDouble(
   int     prop_id,           // 식별자
   double  prop_value         // 설정될 값
   );

속성 식별자 및 수정자를 지정하여 호출.

bool  IndicatorSetDouble(
   int     prop_id,           // 식별자
   int     prop_modifier,     // 수정자
   double  prop_value         // 설정될 값
   )

매개변수

prop_id

[in]  지표 속성의 식별자. 값은 ENUM_CUSTOMIND_PROPERTY_DOUBLE 열거값 중 하나일 수 있습니다.

prop_modifier

[in]  지정된 속성의 수정자. 레벨 속성만 수정자가 필요합니다. 레벨 번호 지정은 0부터 시작합니다. 즉, 두 번째 레벨에 대한 속성을 설정하려면 1을 지정해야 합니다 (컴파일러 지시문을 사용할 때보다 1이 적음).

prop_value

[in]  속성의 값.

반환 값

실행해 성공하면 true를 반환하고, 그렇지 않으면 false를 반환합니다.

참고

속성(수정자) 번호 지정은 #property 지시문을 사용하는 경우 1부터 시작하고 함수는 0부터 번호 지정. 레벨 번호가 잘못 설정된 경우, 지표 표시가 의도한 것과 다를 수 있습니다.

예를 들어, 별도의 하위 창에서 지표의 첫 번째 레벨 값은 두 가지 방법으로 설정할 수 있습니다:

  • 속성 indicator_level1  50 - 1의 값은 레벨번호를 지정하는데 사용되며,
  • IndicatorSetDouble(INDICATOR_LEVELVALUE, 0, 50) - 0 은 첫 번째 레벨을 지정하는 데 사용됩니다.

예: 지표 창의 최대값과 최소값, 수평선이 놓이는 레벨의 값을 뒤집는 지표.

IndicatorSetDouble() 기능 사용 예

#property indicator_separate_window
//--- 지표 창의 최대값 및 최소값 설정
#property indicator_minimum  0
#property indicator_maximum  100
//--- 별도의 지표 창에 3개의 수평 레벨을 표시
#property indicator_level1 25
#property indicator_level2 50
#property indicator_level3 75
//--- 수평 레벨의 굵기 설정
#property indicator_levelwidth 1
//--- 수평 레벨의 스타일 설정
#property indicator_levelstyle STYLE_DOT
//+------------------------------------------------------------------+
//| 사용자 지정 지표 초기화 함수                         |
//+------------------------------------------------------------------+
int OnInit()
  {
//--- 수평 레벨의 설명 설정
   IndicatorSetString(INDICATOR_LEVELTEXT,0,"First Level (index 0)");
   IndicatorSetString(INDICATOR_LEVELTEXT,1,"Second Level (index 1)");
   IndicatorSetString(INDICATOR_LEVELTEXT,2,"Third Level (index 2)");
//--- 지표를 약칭을 설정
   IndicatorSetString(INDICATOR_SHORTNAME,"IndicatorSetDouble() Demo");
//--- 각 레벨별로 색을 설정
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,0,clrBlue);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,1,clrGreen);
   IndicatorSetInteger(INDICATOR_LEVELCOLOR,2,clrRed);
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| 사용자 지정 지표 반복 함수                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
   static int tick_counter=0;
   static double level1=25,level2=50,level3=75;
   static double max=100,min=0, shift=100;
//--- 틱 계산
   tick_counter++;
//--- 열 번째 틱마다 레벨을 뒤집기
   if(tick_counter%10==0)
     {
      //--- 수준 값에 대한 반전 기호
      level1=-level1;
      level2=-level2;
      level3=-level3;
      //--- 최대값 및 최소값에 대한 반전 기호
      max-=shift;
      min-=shift;
      //--- 시프트 값을 반전
      shift=-shift;
      //--- 새 레벨 값을 설정
      IndicatorSetDouble(INDICATOR_LEVELVALUE,0,level1);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,1,level2);
      IndicatorSetDouble(INDICATOR_LEVELVALUE,2,level3);
      //--- 지표 창에서 최대값과 최소값의 새 값을 설정
      Print("Set up max = ",max,",   min = ",min);
      IndicatorSetDouble(INDICATOR_MAXIMUM,max);
      IndicatorSetDouble(INDICATOR_MINIMUM,min);
     }
//--- 다음 호출을 위한 prev_calculated의 반환 값
   return(rates_total);
  }

추가 참조

예제의 지표 스타일, 지표 속성과 기능 사이의 연결, 그리기 스타일