기고글 토론 "시각화! R 언어의 'plot'과 유사한 MQL5 그래픽 라이브러리" - 페이지 3

 
Roman Konopelko:

좋은 하루 되세요!

비슷한 목적으로 라이브러리에서 CustomPlotFunction 모드가 구현되어 있으며, 이를 사용하는 예제는 관심있는 내용을 대략적으로 구현합니다.

추신: 이에 대한 자세한 내용은 포럼 작성되어 있습니다.


감사합니다 :)
[삭제]  

X축 레이블을 날짜 시계열로 플롯하는 방법이 있나요?

 
Pablo Rego:

X축 레이블을 날짜 시계열로 표시하는 방법이 있나요?

예제

#include <Graphics/Graphic.mqh>
double arrX[];
double arrY[];
//---
string TimeFormat(double x,void*data)
  {
   return(TimeToString((datetime)arrX[ArraySize(arrX)-(int)x-1]));
  }
//+------------------------------------------------------------------+
void OnStart()
  {
   MqlRates rates[];
   CopyRates(Symbol(),Period(),0,100,rates);
   ArraySetAsSeries(rates,true);
   int size=ArraySize(rates);
   ArrayResize(arrX,size);
   ArrayResize(arrY,size);
   for(int i=0; i<size;++i)
     {
      arrX[i]=(double)rates[i].time;
      arrY[i]=rates[i].close;
     }
   CGraphic graphic;
   graphic.Create(0,"Rates",0,30,30,780,380);
   CCurve *curve=graphic.CurveAdd(arrY,CURVE_LINES,"Close");
   CAxis *xAxis=graphic.XAxis();
   xAxis.AutoScale(false);
   xAxis.Type(AXIS_TYPE_CUSTOM);
   xAxis.ValuesFunctionFormat(TimeFormat);
   xAxis.DefaultStep(20.0);
   curve.Visible(true);
   graphic.Redraw();
   graphic.Update();
  }

결과:


 

X축에 레이블을 역(반대) 순서로 그릴 수 있나요?

예를 들어 시계열 인덱스를 보려면요.

 
Dennis Kirichenko:

X축에 레이블을 역(반대) 순서로 그릴 수 있나요?

예를 들어 시계열 인덱스를 보려면요.

하나의 함수를 호출하면 모든 작업이 저절로 수행되는 형태의 빠른 해결책은 없습니다. 같이 값을 그리기 위한 자체 함수를 만들어 ValuesFunctionFormat 메서드에 전달해야 합니다.
 

mql4에도 비슷한 라이브러리가 있나요?

 

배경 투명도를 설정할 수 있는지, 아마도 기본 클래스에서 조정할 수 있는지 알려주시겠습니까?

 
Maxim Dmitrievsky:

기본 클래스에서 배경 투명도를 설정할 수 있는지 알려주시겠습니까? 쉽게 찾을 수 없습니다.


CGraphic 클래스를 수정하는 경우에만 가능합니다 (직접 편집 만 잘못되었습니다. 상속이 필요하며 여기 예제는 신속성을위한 것입니다).

//+------------------------------------------------------------------+
//| 그래픽 만들기|
//+------------------------------------------------------------------+
bool CGraphic::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
//--- 개체 이름 확인 
   if(ObjectFind(chart,name)>=0)
      return(false);
//--- 예비 계산
   int width=x2-x1;
   int height=y2-y1;
   if(width>0 && height>0)
     {
      m_width=width;
      m_height=height;
      //--- 개체 만들기
      if(!ObjectCreate(chart,name,OBJ_BITMAP_LABEL,subwin,0,0))
         return(false);
      //--- 개체 사용자 지정
      if(!ObjectSetInteger(chart,name,OBJPROP_XDISTANCE,x1) || 
         !ObjectSetInteger(chart,name,OBJPROP_YDISTANCE,y1))
        {
         ObjectDelete(chart,name);
         return(false);
        }
      //--- 개체 첨부
      if(!m_canvas.Attach(chart,name,width,height,COLOR_FORMAT_ARGB_NORMALIZE))
        {
         ObjectDelete(chart,name);
         return(false);
        }
     }
//--- 성공
   return(true);
  }

그 후에 색상을 제어할 수 있습니다:

   CGraphic graphic;
   graphic.Create(0,"Graphic",0,10,10,680,360);

   graphic.BackgroundColor(ColorToARGB(clrRed,150));
   graphic.GridBackgroundColor(ColorToARGB(clrBlue,150));

:

예

 
Vladimir Karputov:

CGraphic 클래스를 변경하는 경우에만 (직접 편집 만 잘못되었습니다. 상속이 필요하며 여기 예제는 순전히 신속성을위한 것입니다).

그 후에 색상을 제어할 수 있습니다:

:



고마워요, 상속을 다룰게요 :)

 

Expert Advisor(REASON_PARAMETERS) 에서 입력을 변경할 때 차트가 오류를 생성하지 않고 새 매개 변수로 새로 고치는 방법은 무엇입니까? tf를 전환하거나 기호를 변경하면 모든 것이 정상이며 매개 변수를 변경하면 오류가 잘못된 포인터입니다. 매개 변수에서 곡선 수가 변경되고 포인터가 잘못된 것입니다.

명확하지 않은 경우 예를 들어 드릴 수 있습니다.)