ChartApplyTemplate

지정된 파일의 특정 템플릿을 차트에 적용. 이 명령은 차트 메시지 대기열에 추가되며 이전 모든 명령을 처리한 후 실행됩니다.

bool  ChartApplyTemplate(
   long          chart_id,     // 차트 ID
   const string  filename      // 템플릿 파일명
   );

매개변수

chart_id

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

파일명

[in]  템플릿이 포함된 파일의 이름.

값 반환

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

주의

엑스퍼트 어드바이저는 언로드되며, 첨부된 차트에 새 탬플릿을 성공적으로 로드하는 경우 작업을 계속할 수 없습니다.

차트에 템플릿을 적용할 때 보안상의 이유로 거래 권한이 제한될 수 있습니다.

ChartApplyTemplate() 함수를 사용하여 템플릿을 적용하여 시작한 엑스퍼트 어드바이저에 대한 실시간 거래 권한을 확장할 수 없습니다. function.

mql5 프로그램 호출 ChartApplyTemplate() 함수에 거래 권한이 없는 경우, 템플릿을 통해 시작된 엑스퍼트 어드바이저도 템플릿 설정에 관계없이 거래할 수 없습니다.

mql5 프로그램 호출 ChartApplyTemplate() 함수에 거래 권한이 있는 반면 템플릿 설정에 해당 권한이 없는 경우, 템플릿을 통해 시작된 엑스퍼트 어드바이저는 거래할 수 없습니다.

템플릿 사용

MQL5 언어의 리소스를 사용하면 ChartSetInteger() 함수를 사용하여 색상을 포함한 여러 차트의 속성을 설정할 수 있습니다:

  • 차트 배경색상;
  • 축, 스케일 및 OHLC 라인 색상;
  • 그리드 색상;
  • 볼륨 및 포지션 시작 레벨 색상;
  • 상단 막대 색상, 그림자와 강세 캔들스틱의 엣지;
  • 하단 막대 색상, 그림자와 약세 캔들스틱의 엣지;
  • 차트라인 및 도지 캔들스틱의 색상;
  • 강세 캔들스틱 바디 색상;
  • 약세 캔들스택 바디 색상;
  • 입찰 가격 라인 색상;
  • 요청 가격 라인 색상;
  • 마지막 거래 가격의 라인 색상;
  • 정지 주문 수준의 색상(손실 중지 및 이익 획득).

또한, 차트에 여러 그래픽 개체지표가 있을 수 있습니다. 필요한 모든 지표가 포함된 차트를 한 번 설정한 다음 템플릿으로 저장할 수 있습니다. 이러한 테플릿은 모든 차트에 적용할 수 있습니다.

ChartApplyTemplate() 기능은 이전에 저장된 템플릿을 사용하기 위한 것으로, 모든 mql5 프로그램에서 사용할 수 있습니다. 템플릿을 저장하는 파일의 경로는 ChartApplyTemplate()에 대한 두 번째 변수로 전달됩니다. 템플릿 파일은 다음 규칙에 따라 검색됩니다:

  • 백슬래시 "\" 구분기호 ("\\")로 작성된 경우, _terminal_data_directory\MQL5 경로를 기준으로 템플릿이 검색됩니다,
  • 백슬래시가 없는 경우 ChartApplyTemplate()가 호출되는 실행가능한 EX5파일에 대해 템플릿이 검색됩니다;
  • 처음 두 변수에서 템플릿을 찾을 수 없는 경우 terminal_directory\Profiles\Templates\ 폴더에서 검색이 수행됩니다.

여기서 terminal_directory는 MetaTrader 5 클라이언트 터미널이 실행중인 폴더이며, terminal_data_directory는 편집 가능한 파일이 저장되는 폴더이고, 운영 체제, 사용자 이름 및 컴퓨터의 보안 설정에 따라 위치가 달라집니다. 일반적으로 서로 다른 폴더지만, 경우에 따라 일치할 수 있습니다.

terminal_data_directory 및 terminal_directory 폴더 위치는TerminalInfoString() 함수를 사용하여 얻을 수 있습니다.

//--- 터미널이 시작되는 디렉토리
   string terminal_path=TerminalInfoString(TERMINAL_PATH);
   Print("터미널 디렉토리:",terminal_path);
//--- EA 및 지표가 있는 MQL5 폴더가 위치한 터미널 데이터 디렉토리
   string terminal_data_path=TerminalInfoString(TERMINAL_DATA_PATH);
   Print("터미널 데이터 디렉토리:",terminal_data_path);

예를 들어:

//--- terminal_data_directory\MQL5\에서 탬플릿 검색
ChartApplyTemplate(0,"\\first_template.tpl"))
//--- directory_of_EX5_file\에서 템플릿을 검색한 다음, terminal_data_directory\Profiles\Templates\에서 검색
ChartApplyTemplate(0,"second_template.tpl"))
//--- directory_of_EX5_file\My_templates\에서 템플릿을 검색한 다음, terminal_directory\Profiles\Templates\My_templates\에서 검색
ChartApplyTemplate(0,"My_templates\\third_template.tpl"))

템플릿은 리소스가 아니므로 실행 가능한 EX5 파일에 포함할 수 없습니다.

예를 들어:

//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                         |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- \MQL5\Files에 있는 템플릿 적용 예시
   if(FileIsExist("my_template.tpl"))
     {
      Print("my_template.tpl 파일을 \Files'에서 찾았습니다");
      //--- 템플릿 적용
      if(ChartApplyTemplate(0,"\\Files\\my_template.tpl"))
        {
         Print("템플릿 'my_template.tpl'가 성공적으로 적용되었습니다");
         //--- 차트 재작성
         ChartRedraw();
        }
      else
         Print("'my_template.tpl'을 적용하지 못했습니다, 오류 코드 ",GetLastError());
     }
   else
     {
      Print("File 'my_template.tpl' 파일을 찾지 못했습니다 "
            +TerminalInfoString(TERMINAL_PATH)+"\\MQL5\\Files");
     }
  }

추가 참조

리소스