#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() 처리 종료
}
|