ChartScreenShot

이 함수는 지정된 확장자에 따라 GIF, PNG 또는 BMP 형식의 현재 상태 차트의 스크린샷을 제공.

bool  ChartScreenShot(
   long             chart_id,                   // 차트 ID
   string           filename,                   // 심볼 이름
   int              width,                      // 너비
   int              height,                     // 높이
   ENUM_ALIGN_MODE  align_mode=ALIGN_RIGHT      // 정렬 유형
   );

매개변수

chart_id

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

파일명

[in]  스크린샷 파일 이름. 63자를 초과할 수 없습니다. 스크린샷 파일은 \Files 디렉토리에 저장됩니다.

너비

[in]  스크린샷 너비(픽셀).

높이

[in]  스크린샷 높이(픽셀).

align_mode=ALIGN_RIGHT

[in]  좁은 스크린샷의 출력 모드. ENUM_ALIGN_MODE 열거의 값. ALIGN_RIGHT은 오른쪽 여백(끝으로부터의 출력)에 맞춰 정렬하는 것을 의미합니다. ALIGN_LEFT 은 좌측 정렬을 의미합니다.

값 반환

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

주의

특정 위치에서 타츠를 캡쳐해야 하는 경우, 먼저 ChartNavigate() 기능을 사용하여 그래프를 배치해야 합니다. 스크린샷의 수평 크기가 차트 창보다 작은 경우 align_mode 설정에 따라 차트 창의 오른쪽 부분 또는 왼쪽 부분이 출력됩니다.

예를 들어:

#property 설명 "엑스퍼트 어드바이저는 현재 스크린샷을 생성하는 방법을 시연합니다"
#property 설명 "ChartScreenShot() 기능을 사용하여 차트화. 편의를 위해, 파일의 이름은"
#property 설명 "차트에 표시됨. 이미지의 높이와 너비는 매크로를 통해 정의됩니다."
 
#define        WIDTH  800     // ChartScreenShot()을 호출할 이미지 너비
#define        HEIGHT 600     // ChartScreenShot() 호출할 이미지 높이
 
//--- 매개변수 입력
input int      pictures=5;    // 시리즈의 이미지 수
int            mode=-1;       // -1 은 차트의 오른쪽 가장자리로, 1은 왼쪽으로 이동을 나타냅니다
int            bars_shift=300;// ChartNavigate()를 사용하여 차트를 스크롤할 때의 막대 수
//+------------------------------------------------------------------+
//| 엑스퍼트 초기화 함수                                   |
//+------------------------------------------------------------------+
void OnInit()
  {
//--- 차트 자동 스크롤 사용 안 함
   ChartSetInteger(0,CHART_AUTOSCROLL,false);
//--- 차트의 오른족 가장자리의 이동을 설정
   ChartSetInteger(0,CHART_SHIFT,true);
//--- 캔들스틱 차트 표시
   ChartSetInteger(0,CHART_MODE,CHART_CANDLES);
//---
   Print("엑스퍼트 어드바이저의 준비 완료");
  }
//+------------------------------------------------------------------+
//| 엑스퍼트 틱 함수                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
 
  }
//+------------------------------------------------------------------+
//| ChartEvent 기능                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
  {
//--- 함수 이름, 호출 시간 및 이벤트 식별자 표시
   Print(__FUNCTION__,TimeCurrent(),"   id=",id,"   mode=",mode);
//--- CHARTEVENT_CLICK 이벤트 처리 ("차트에서 마우스를 클릭")
   if(id==CHARTEVENT_CLICK)
     {
      //--- 차트 가장자리에서 초기 이동
      int pos=0;
      //--- 왼쪽 차트 가장자리를 사용한 작업
      if(mode>0)
        {
         //--- 차트를 왼쪽 가장자리로 스크롤
         ChartNavigate(0,CHART_BEGIN,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- 차트에 표시할 텍스트와 파일 이름 준비
            string name="ChartScreenShot"+"CHART_BEGIN"+string(pos)+".gif";
            //--- 차트에 코멘트로 이름 표시
            Comment(name);
            //--- 차트 스크린샷 파일을 terminal_directory\MQL5\Files\에 저장
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_LEFT))
               Print("스크린샷을 저장했습니다 ",name);
            //---
            pos+=bars_shift;
            //--- 사용자에게 차트의 새 부분을 살펴볼 시간을 주십시오
            Sleep(3000);
            //--- 현재 포지션 bars_shift 막대에서 오른쪽으로 스크롤
            ChartNavigate(0,CHART_CURRENT_POS,bars_shift);
           }
         //--- 모드를 반대로 변경
         mode*=-1;
        }
      else // 오른쪽 차트 가장자리를 사용한 작업
        {
         //--- 차트를 오른쪽 가장자리로 스크롤
         ChartNavigate(0,CHART_END,pos);
         for(int i=0;i<pictures;i++)
           {
            //--- 차트에 표시할 텍스트와 파일 이름 준비
            string name="ChartScreenShot"+"CHART_END"+string(pos)+".gif";
            //--- 차트에 코멘트로 이름 표시
            Comment(name);
            //--- 차트 스크린샷 파일을 terminal_directory\MQL5\Files\에 저장
            if(ChartScreenShot(0,name,WIDTH,HEIGHT,ALIGN_RIGHT))
               Print("스크린샷을 저장했습니다 ",name);
            //---
            pos+=bars_shift;
            //--- 사용자에게 차트의 새 부분을 살펴볼 시간을 주십시오
            Sleep(3000);
            //--- 현재 포지션 bars_shift 막대에서 오른쪽으로 스크롤
            ChartNavigate(0,CHART_CURRENT_POS,-bars_shift);
           }
         //--- 모드를 반대로 변경
         mode*=-1;
        }
     }  // CHARTEVENT_CLICK 이벤트 핸들링 종료
//--- OnChartEvent() 처리 종료  
  }

추가 참조

ChartNavigate(), Resources