OnStart

시작 이벤트가 발생하면 스크립트와 서비스에서 이 함수가 호출됩니다. 이 함수는 프로그램에 구현된 작업의 일회성 실행을 위한 것입니다. 두 가지 함수 유형이 있습니다.

결과를 반환하는 버전

int  OnStart(void);

반환 값

int 타입의 값이 Journal 탭에 표시됩니다.

스크립트 실행이 완료된 후 터미널 저널에 "script script_name removed (result code N)" 항목이 생성됩니다. 여기서 N은 OnStart() 함수로 반환되는 값입니다.

서비스 실행 완료 후 터미널 저널에 "service service_name stopped (result code N)" 항목이 생성됩니다. 여기서 N은 OnStart() 함수로 반환되는 값입니다.

실행 결과를 반환하는 OnStart() 호출은 스크립트 또는 서비스 실행을 허용할 뿐만 아니라 프로그램 실행 결과를 분석하는 데 유용한 오류 코드나 기타 데이터를 반환하므로 사용하는 것이 좋습니다.

결과 반환 없는 버전은 이전 코드와의 호환성을 위해서만 유지됩니다. 사용을 권장하지 않습니다

void  OnStart(void);

참고

OnStart()는 스크립트와 서비스의 이벤트를 처리하는 유일한 함수입니다. 이 프로그램에는 다른 이벤트가 전송되지 않습니다. 또한 시작 이벤트는 EA 및 커스텀 지표로 전달되지 않습니다.

샘플 스크립트:

//--- 색상 작업을 위한 매크로
#define XRGB(r,g,b)    (0xFF000000|(uchar(r)<<16)|(uchar(g)<<8)|uchar(b))
#define GETRGB(clr)    ((clr)&0xFFFFFF)
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                    |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 하향 캔들의 색상 설정
   Comment("하향 캔들의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BEAR,GetRandomColor());
   ChartRedraw(); // 새 틱을 기다리지 마시고 즉시 차트를 업데이트하십시오
   Sleep(1000);   // 모든 변경 내용을 보려면 1초간 일시 중지하십시오
//--- 상향 캔들의 색상 설정
   Comment("상향 캔들의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_CANDLE_BULL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 배경 색상 설정
   Comment("배경 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_BACKGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- Ask line의 색상 설정
   Comment("Ask line의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_ASK,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- Bid line의 색상 설정
   Comment("Bid line의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_BID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);    
//--- 하향 막대와 하향 캔들 프레임의 색상 설정
   Comment("하향 막대와 하향 캔들 프레임의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_CHART_DOWN,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 차트 라인과 Doji 캔들스틱의 색상 설정
   Comment("차트 라인과 Doji 캔들스틱의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_CHART_LINE,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 상향 막대와 상향 캔들 프레임의 색상 설정  
   Comment("상향 막대와 상향 캔들 프레임의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_CHART_UP,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 축, 스케일 및 OHLC 라인의 색상 설정
   Comment("축, 스케일 및 OHLC 라인의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_FOREGROUND,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 그리드 색상 설정
   Comment("그리드 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_GRID,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 전날 종가 색상 설정
   Comment("전날 종가 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_LAST,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 스탑로스 및 이익실현 주문 수준 색상 설정
   Comment("스탑로스 및 이익실현 주문 수준 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_STOP_LEVEL,GetRandomColor());
   ChartRedraw(); 
   Sleep(1000);   
//--- 거래량 및 시장 진입 수준의 색상 설정
   Comment("거래량 및 시장 진입 수준의 색상 설정"); 
   ChartSetInteger(0,CHART_COLOR_VOLUME,GetRandomColor());
   ChartRedraw();
  }
//+------------------------------------------------------------------+
//| 임의로 생성된 색상 반환                                |
//+------------------------------------------------------------------+
color GetRandomColor()
  {
   color clr=(color)GETRGB(XRGB(rand()%255,rand()%255,rand()%255));
   return clr;
  }

더 보기

Event handling functions, Program running, Client terminal events