Color Day 지표 - 메타트레이더 5에서 상승과 하락의 날을 색으로 구분하기

Mike 2017.01.18 18:27 22 0 0
첨부파일

Color Day 지표는 메타트레이더 5에서 상승일과 하락일을 색으로 구분해주는 유용한 도구입니다.

일일 종가가 개장가보다 높으면 블루색(설정에서 변경 가능)으로 표시됩니다.

input color UP = Blue;  // 상승일 색상

반대로, 일일 종가가 개장가보다 낮으면 레드색(설정에서 변경 가능)으로 표시됩니다.

input color DN = Red;  // 하락일 색상

지정된 일수 Days에 대해 개장가, 종가 및 개장 시간을 복사합니다:

CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

해당 배열에 복사합니다:

datetime tm[];
double op[];
double cl[];

지표를 차트에 설치하기 전에 배열의 크기를 설정해야 합니다:

int OnInit()
  {
//--- 지표 버퍼 매핑
   Comment("");
   ArrayResize(tm,Days);
   ArrayResize(op,Days);
   ArrayResize(cl,Days);
//---
   return(INIT_SUCCEEDED);
  }

배열의 값을 변수에 할당하고 일일 종가 시간을 time1로 설정합니다:

datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

PutRect() 함수를 사용하여 직사각형을 그립니다:

void PutRect(string name,datetime t1,double p1,datetime t2,double p2,color clr)
  {
   ObjectDelete(0,name);
//--- 주어진 좌표로 직사각형 생성
   ObjectCreate(0,name,OBJ_RECTANGLE,0,t1,p1,t2,p2);
//--- 직사각형 색상 설정
   ObjectSetInteger(0,name,OBJPROP_COLOR,clr);
//--- 직사각형 채우기 모드 활성화(true) 또는 비활성화(false)
   ObjectSetInteger(0,name,OBJPROP_FILL,true);
  }

가격이 어떻게 움직였는지에 따라 날을 색칠합니다:

if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

Days 매개변수에 지정된 모든 날을 반복합니다:

for(int i=0;i<=Days;i++)
     {
      CopyTime(NULL,PERIOD_D1,0,Days+1,tm);
      CopyOpen(NULL,PERIOD_D1,0,Days+1,op);
      CopyClose(NULL,PERIOD_D1,0,Days+1,cl);

      datetime time0=tm[i];
      datetime time1=time0+3600*24;
      double dopen=op[i];
      double dclose=cl[i];

      if(dclose<dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,DN);
      if(dclose>dopen) PutRect("Rect"+(string)dopen,time0,dopen,time1,dclose,UP);

지표를 차트에서 삭제할 때는 DeleteObjects() 함수를 사용합니다:

void DeleteObjects()
  {
   for(int i=ObjectsTotal(0,0,OBJ_RECTANGLE)-1;i>=0;i--)
     {
      string name=ObjectName(0,i,0,OBJ_RECTANGLE);
      if(StringFind(name,"Rect",0)>=0) ObjectDelete(0,name);
     }
  }

차트에서 생성된 객체를 제거합니다:

void OnDeinit(const int reason)
  {
   Comment("");
   DeleteObjects();
  }

설정:

input int   Days = 11;  // 계산할 일수
input color UP = Blue;  // 상승일 색상
input color DN = Red;   // 하락일 색상

Fig. 1. 차트에서의 지표 모습

팁:

  • Color Day 지표는 시각적인 트레이딩 보조 도구입니다.
목록
댓글 0