ChartRedraw

이 기능은 지정된 차트의 강제 재 작성을 호툴.

void  ChartRedraw(
   long  chart_id=0      // 차트 ID
   );

매개변수

chart_id=0

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

주의

일반적으로 개체 속성을 변경한 후 사용됩니다.

예:

#define   WIDTH      50    // 막대 단위의 직사각형 너비
 
//+------------------------------------------------------------------+
//| 스크립트 프로그램 시작 함수                                          |
//+------------------------------------------------------------------+
void OnStart()
  {
//--- 현재 차트 ID를 가져오고 그래픽 객체 이름을 설정합니다.
   long   chart_id = ChartID();
   string obj_name = MQLInfoString(MQL_PROGRAM_NAME)+"_RectLabel";
   
//--- 두 개의 직사각형 시간 좌표를 얻습니다.
   datetime time1  = iTime(_Symbol_PeriodWIDTH);
   datetime time2  = iTime(_Symbol_Period0);
   if(time1==0 || time2==0)
     {
      Print("Error getting time "GetLastError());
      return;
     }
 
//--- 직사각형 너비 범위에서 최대 및 최소 가격을 가져옵니다.
   double price1 = HighestHigh(_Symbol_Period0WIDTH);
   double price2 = LowestLow(_Symbol_Period0WIDTH);
   if(price1==EMPTY_VALUE || price2==EMPTY_VALUE)
      return;
 
//--- 직사각형 객체 생성
   Print("Create a wheat-colored rectangle");
   if(!ObjectCreate(chart_idobj_nameOBJ_RECTANGLE0time1price1time2price2))
     {
      Print("ObjectCreate() failed. Error "GetLastError());
      return;
     }
 
//--- 직사각형을 원래의 색으로 채웁니다
   ObjectSetInteger(chart_idobj_nameOBJPROP_FILLtrue);
   ObjectSetInteger(chart_idobj_nameOBJPROP_BACKtrue);
   ObjectSetInteger(chart_idobj_nameOBJPROP_COLORclrWheat);
   ChartRedraw();
   
//--- 잠시 기다려서 직사각형을 DodgerBlue 색상으로 채우고 차트를 업데이트합니다
   Sleep(1000);
   Print("Change color to DodgerBlue");
   ObjectSetInteger(chart_idobj_nameOBJPROP_COLORclrDodgerBlue);
   ChartRedraw();
   
//--- 잠시 기다려서 직사각형을 LimeGreen 색상으로 채우고 차트를 업데이트합니다
   Sleep(1000);
   Print("Change color to LimeGreen");
   ObjectSetInteger(chart_idobj_nameOBJPROP_COLORclrLimeGreen);
   ChartRedraw();
   
//--- 잠시 기다려서 직사각형을 OrangeRed 색상으로 채우고 차트를 업데이트합니다
   Sleep(1000);
   Print("Change color to OrangeRed");
   ObjectSetInteger(chart_idobj_nameOBJPROP_COLORclrOrangeRed);
   ChartRedraw();
   
//--- 잠시 기다려서 직사각형을 밀 색상으로 채우고 차트를 업데이트합니다
   Sleep(1000);
   Print("Reset color to original");
   ObjectSetInteger(chart_idobj_nameOBJPROP_COLORclrWheat);
   ChartRedraw();
   
//--- 3초 후 차트에서 객체를 제거합니다.
   Sleep(3000);
   Print("Delete the rectangle");
   ObjectDelete(chart_idobj_name);
  }
//+------------------------------------------------------------------+
//| 지정된 바의 범위에서 최대 High를 반환합니다.                          |
//+------------------------------------------------------------------+
double HighestHigh(const string symbolconst ENUM_TIMEFRAMES timeframeconst uint startconst uint count)
  {
   ResetLastError();
   int index=iHighest(symboltimeframeMODE_HIGHcountstart);
   if(index==-1)
     {
      PrintFormat("%s: iHighest() failed. Error %d",__FUNCTION__GetLastError());
      return(EMPTY_VALUE);
     }
   GetLastError();
   double price=iHigh(symboltimeframeindex);
   if(price==0)
     {
      PrintFormat("%s: iHigh() failed. Error %d",__FUNCTION__GetLastError());
      return(EMPTY_VALUE);
     }
   return(price);
  }
//+------------------------------------------------------------------+
//| 지정된 바의 범위에서 최소 Low를 반환합니다.                           |
//+------------------------------------------------------------------+
double LowestLow(const string symbolconst ENUM_TIMEFRAMES timeframeconst uint startconst uint count)
  {
   ResetLastError();
   int index=iLowest(symboltimeframeMODE_LOWcountstart);
   if(index==-1)
     {
      PrintFormat("%s: iLowest() failed. Error %d",__FUNCTION__GetLastError());
      return(EMPTY_VALUE);
     }
   GetLastError();
   double price=iLow(symboltimeframeindex);
   if(price==0)
     {
      PrintFormat("%s: iLow() failed. Error %d",__FUNCTION__GetLastError());
      return(EMPTY_VALUE);
     }
   return(price);
  }

추가 참조

개체 함수