안녕하세요, 트레이더 여러분! 오늘은 MetaTrader 5에서 사용할 수 있는 유용한 지표인 DemoBufferPattern에 대해 소개해 드릴게요. 이 지표는 캔들, 프랙탈, 지그재그, 그리고 색상 이동 평균을 활용하여 분석을 돕습니다.
이 지표는 다음과 같은 그리기 스타일을 사용합니다:
- 컬러 캔들 그리기 (DRAW_COLOR_CANDLES)
- 화살표 그리기 (DRAW_ARROW)
- 컬러 지그재그 그리기 (DRAW_COLOR_ZIGZAG)
- 컬러 선 그리기 (DRAW_COLOR_LINE)
//+------------------------------------------------------------------+ //| 커스텀 지표 초기화 함수 | //+------------------------------------------------------------------+ int OnInit() { //--- 지표 버퍼 매핑 SetIndexBuffer( 0,P1B1,INDICATOR_DATA); SetIndexBuffer( 1,P1B2,INDICATOR_DATA); SetIndexBuffer( 2,P1B3,INDICATOR_DATA); SetIndexBuffer( 3,P1B4,INDICATOR_DATA); SetIndexBuffer( 4,P1BC,INDICATOR_COLOR_INDEX); SetIndexBuffer( 5,P2B1,INDICATOR_DATA); SetIndexBuffer( 6,P3B1,INDICATOR_DATA); SetIndexBuffer( 7,P4B1,INDICATOR_DATA); SetIndexBuffer( 8,P4B2,INDICATOR_DATA); SetIndexBuffer( 9,P4BC,INDICATOR_COLOR_INDEX); SetIndexBuffer(10,P5B1,INDICATOR_DATA); SetIndexBuffer(11,P5BC,INDICATOR_COLOR_INDEX); //--- 중간 계산을 위한 보조 버퍼 SetIndexBuffer(12,P4M1,INDICATOR_CALCULATIONS); SetIndexBuffer(13,P4M2,INDICATOR_CALCULATIONS); //--- 표시할 모든 버퍼 뒤에 배치해야 합니다. //--- 화살표 설정 PlotIndexSetInteger(1,PLOT_ARROW,217); PlotIndexSetInteger(2,PLOT_ARROW,218); PlotIndexSetInteger(1,PLOT_ARROW_SHIFT,-iArrowShift); PlotIndexSetInteger(2,PLOT_ARROW_SHIFT,iArrowShift); PlotIndexSetDouble(1,PLOT_EMPTY_VALUE,EMPTY_VALUE); PlotIndexSetDouble(2,PLOT_EMPTY_VALUE,EMPTY_VALUE); //--- 지그재그 설정 PlotIndexSetDouble(3,PLOT_EMPTY_VALUE,0.0); //--- 이동 평균 설정 maHandle=iMA(Symbol(),0,ExtPeriod,0,MODE_EMA,PRICE_CLOSE); return(0); } //+------------------------------------------------------------------+ //| 커스텀 지표 반복 함수 | //+------------------------------------------------------------------+ int OnCalculate(const int rates_total, const int prev_calculated, const datetime& time[], const double& open[], const double& high[], const double& low[], const double& close[], const long& tick_volume[], const long& volume[], const int& spread[]) { //--- CalcCandles(rates_total,prev_calculated,open,high,low,close); CalcFractal(rates_total,prev_calculated,high,low,P2B1,P3B1); CalcZigzag (rates_total,prev_calculated,high,low,P4B1,P4B2,P4BC,P4M1,P4M2); CalcColorMA(rates_total,prev_calculated,P5B1,P5BC); //--- 다음 호출을 위한 prev_calculated 값 반환 return(rates_total); }
