CGraphic 테스트 - 질문 및 제안 - 페이지 9

 
Dennis Kirichenko :

아나톨리, 대단히 감사합니다! 항목 1에 따라 도움을 받았습니다. 예, 축 메서드 CAxis::MaxGrace(const double value) 를 놓쳤습니다.

다음은 또 다른 짧은 예입니다.

   CAxis *x_axis=graph.XAxis();
   x_axis.AutoScale( true );
   x_axis.Min( 0 );
   x_axis.Max(m_max_data);
   x_axis.MinGrace( 0.0 );
   x_axis.MaxGrace( 0.2 );
   x_axis.DefaultStep(m_max_data/ 10 );
 

신청서 #1827124.


 
Anatoli Kazharski :

신청서 #1827124.

문제는 다음과 같이 수정되었습니다.

지원팀   2018.01.15 14:30

CAxis::Mod 메서드에서 나눗셈의 나머지 부분을 안전하게 계산하는 동안 오류가 발생했습니다.

이전에는 MathMod 함수를 사용하지 않고 수치적 방법이 구현되었지만 귀하의 예에서는 경우에 따라 이 방법의 정확도가 최고가 아님을 보여주었습니다.

그래서 이 방법을 다음과 같이 변경해야 했습니다.

 //+------------------------------------------------------------------+
//| Calculate the modulus (remainder) in a safe manner so that divide|
//| by zero errors are avoided                                       |
//+------------------------------------------------------------------+
double CAxis::Mod( const double x, const double y)
  {
//--- check 
   if (y== 0 )
       return ( 0 );
//--- calculate modulus
   return (x> 0 )? MathMod (x,y): MathMod (x,y)+y;
  }

//---

동일한 매개변수를 사용한 결과:


 

CGraphic EA 에서 초기화.

Expert Advisor에서 차트를 생성하는 경우 예를 들면 다음과 같습니다.

 int OnInit ()
  {
     
   CGraphic graphic;
   string name = "Graphic" ;   
   bool ch =graphic.Create( 0 ,name, 0 , 220 , 20 , 970 , 370 );

   double x[ 24 ]={ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
   double y[ 24 ]={ 0 , 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 };
   
   for ( int i= 0 ;i< 10 ;i++)
     {
     y[i] =y[i]+Shift;
     }
   CCurve *curve=graphic.CurveAdd(x,y,CURVE_HISTOGRAM);
   curve.HistogramWidth( 6 );
   curve.Color(Green);
   curve.Name( "Curve" );
   
   graphic.CurvePlotAll();
   graphic.Update();
//   ChartRedraw();
   
   return ( INIT_SUCCEEDED );       
  }

그런 다음 외부 매개변수를 변경하면 그래프가 주기적으로 사라집니다. 처음이 아닙니다. 매개변수를 3-5번 변경하면 무작위로 어딘가에 손실됩니다. 그리고 영원히는 아닙니다. 시간대 전환 또는 자동 거래(허용 여부)를 통해 찾을 수 있습니다.

분실되지 않도록 할 수 있습니까?

 
Photic :

CGraphic Expert Advisor에서 초기화.

Expert Advisor에서 차트를 생성하는 경우 예를 들면 다음과 같습니다.

그런 다음 외부 매개변수를 변경하면 그래프가 주기적으로 사라집니다. 처음이 아닙니다. 매개변수를 3-5번 변경하면 무작위로 어딘가에 손실됩니다. 그리고 영원히는 아닙니다. 시간대 전환 또는 자동 거래(허용 여부)를 통해 찾을 수 있습니다.

분실되지 않도록 할 수 있습니까?

OnInit 함수 의 로컬 수준에서 개체를 만들고 삭제합니다.

전역적으로 생성합니다.
 

문제는 MT를 다시 설치하여 해결되었습니다.

오류가 있으면 오류가 없을 수도 있다는 사실에 익숙해지지 않습니다.

 

범례의 너비를 변경하거나 할당된 공간을 제거하는 방법을 알려주십시오.

 
특정 행이 범례에 기록되지 않도록 하려면 어떻게 해야 합니까? 나는 선을 가지고 있습니다. 이것은 Y 좌표를 따라 있는 점이고 이 점을 다른 색상으로 만들어야 합니다 . 여러 선 으로 표시되고 다른 선으로 만들어지지만 동일한 정보를 표시합니다. 범례에 이 라인에 대한 요약 정보만 입력해야 합니다. 그것을 하는 방법?
 

그리고 또 다른 질문은 "빨간색"을 지정했는데 차트에 파란색이 표시되고 녹색이 올바르게 표시되는 이유는 무엇입니까?

 if (TypeInfo== "TP_FP" )
{
   graphicP.HistoryNameSize(Point_K); //Устанавливает размер шрифта имени кривой
   graphicP.HistorySymbolSize(Point_K); //Получить/установить размер символов условных обозначений  

   CCurve *A=graphicP.CurveAdd(X,Y,Green,CURVE_POINTS,N_Model+ "(" +N+ ")" ); //Создает и добавляет кривую на график
   A.PointsFill( true ); //Устанавливает флаг, указывающий, нужно ли выполнять заливку для точек, определяющих кривую при отрисовке точками. 
   A.PointsType(POINT_VERTICAL_DASH); //Устанавливает флаг, указывающий на тип точек, использующихся при отрисовке кривой точками.
}

if (TypeInfo== "FN" )
{
   //graphicP.HistoryNameSize(1);//Устанавливает размер шрифта имени кривой
   //graphicP.HistorySymbolSize(1);//Получить/установить размер символов условных обозначений  

   CCurve *A=graphicP.CurveAdd(X,Y,Red,CURVE_POINTS, "" ); //Создает и добавляет кривую на график
   A.PointsFill( false ); //Устанавливает флаг, указывающий, нужно ли выполнять заливку для точек, определяющих кривую при отрисовке точками. 
   A.PointsType(POINT_VERTICAL_DASH); //Устанавливает флаг, указывающий на тип точек, использующихся при отрисовке кривой точками.
}



 
Aleksey Vyazmikin :

그리고 또 다른 질문은 "빨간색"을 지정했는데 차트에 파란색이 표시되고 녹색이 올바르게 표시되는 이유는 무엇입니까?



알아냈어, 색은 이렇게 설정해야 해

 ColorToARGB (Red, 256 )
사유: