ChartSetSymbolPeriod

지정된 차트의 기호와 기간을 변경 이 함수는 비동기식이며, 즉 명령을 전송하고 실행이 완료될 때까지 기다리지 않습니다. 이 명령은 차트 메시지 대기열에 추가되며 이전 모든 명령을 처리한 후 실행됩니다.

bool  ChartSetSymbolPeriod(
   long             chart_id,     // 차트 ID
   string           symbol,       // 심볼 이름
   ENUM_TIMEFRAMES  period        // 기간
   );

매개변수

chart_id

[in]  차트 ID. 0은 현재 차트를 의미합니다.

심볼

[in]  차트 심볼. NULL 값은 현재 차트 기호를 의미합니다 (엑스퍼트 어드바이저가 첨부됨)

기간

[in]  차트 기간 (시간프레임). ENUM_TIMEFRAMES 값 중 하나일 수 있습니다. 0은 현재 차트 기간을 의미합니다.

값 반환

명령이 차트 대기열에 추가된 경우 true를 반환, 그렇지 않은 경우 false를 반환. 오류에 대한 정보를 가져오기 위해, GetLastError() 함수 호출.

주의

심볼/주기 변경으로 인해 차트에 첨부된 엑스퍼트 어드바이저가 재초기화됩니다.

심볼과 시간프레임이 동일한 ChartSetSymbolPeriod의 호출을 사용하여 차트를 업데이트할 수 있습니다(터미널의 새로고침 명령과 유사). 차트 업데이트는 차례로 차트 업데이트에 연결된 지표 재계산을 트리거합니다. 따라서 틱이 없는 경우(예: 주말)에도 차트에서 지표를 계산할 수 있습니다.

예:

#define   SYMBOL    "GBPUSD"
#define   PERIOD    PERIOD_H1
 
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 현재 차트 ID, 심볼 및 기간을 가져옵니다.
   long            chart_idChartID();
   string          symbol  = Symbol();
   ENUM_TIMEFRAMES period  = Period();
 
//--- 현재 차트 심볼 및 기간을 SYMBOL 및 PERIOD에 설정된 것으로 바꾸는 것에 대해 저널에 보고합니다.
   PrintFormat("Change the %s symbol and the %s period of the chart %I64u to %s %s",
               symbolTimeframeDescrioption(period), chart_idSYMBOLTimeframeDescrioption(PERIOD));
               
//--- 차트 심볼과 주기를 변경합니다
   ChartSetSymbolPeriod(chart_idSYMBOLPERIOD);
   /*
  결과:
   Change the EURUSD symbol and the M1 period of the chart 133246248352168440 to GBPUSD H1
   */
  }
//+------------------------------------------------------------------+
//| 차트 기간 설명 반환                                                |
//+------------------------------------------------------------------+
string TimeframeDescrioption(const ENUM_TIMEFRAMES timeframe)
  {
   return(StringSubstr(EnumToString(timeframe), 7));
  }

추가 참조

ChartSymbol, ChartPeriod