CGraphic'i test etme - sorular ve öneriler - sayfa 9

 
Dennis Kirichenko :

Anatoly, çok teşekkür ederim! 1. maddeye göre yardım edildi. Evet, CAxis::MaxGrace(const double value) eksen yöntemini kaçırdım.

İşte başka bir kısa örnek:

   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 );
 

Uygulama #1827124.


 
Anatoli Kazharski :

Uygulama #1827124.

Sorun şu şekilde düzeltildi:

Destek ekibi   2018.01.15 14:30

Hata, CAxis::Mod yönteminde bölümün kalanının güvenli hesaplanması sırasında ortaya çıktı.

Daha önce, MathMod işlevi kullanılmadan burada sayısal bir yöntem uygulanıyordu, ancak örneğiniz bu yöntemin doğruluğunun bazı durumlarda en iyi olmadığını gösterdi.

Bu yüzden bu yöntemi şu şekilde değiştirmek zorunda kaldım:

 //+------------------------------------------------------------------+
//| 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;
  }

//---

Aynı parametrelerle sonuç:


 

CGraphic EA'da başlatma .

Bir Uzman Danışmanda bir grafik oluşturursanız, örneğin:

 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 );       
  }

daha sonra harici parametreyi değiştirirken grafik periyodik olarak kaybolur. İlk kez değil. Parametreyi 3-5 kez değiştirebilirsiniz ve daha sonra rastgele bir yerde kaybolur. Ve sonsuza kadar değil. Zaman dilimlerini değiştirerek veya otomatik ticaret yaparak (izin verilir veya verilmez) bulunabilir.

Kaybolmadığından emin olabilir misin?

 
Photic :

CGraphic Expert Advisor'da başlatma.

Bir Uzman Danışmanda bir grafik oluşturursanız, örneğin:

daha sonra harici parametreyi değiştirirken grafik periyodik olarak kaybolur. İlk kez değil. Parametreyi 3-5 kez değiştirebilirsiniz ve daha sonra rastgele bir yerde kaybolur. Ve sonsuza kadar değil. Zaman dilimlerini değiştirerek veya otomatik ticaret yaparak (izin verilir veya verilmez) bulunabilir.

Kaybolmadığından emin olabilir misin?

OnInit işlevinin yerel düzeyinde bir nesne yaratır ve yok edersiniz.

Global olarak oluşturun.
 

Sorun, MT'yi yeniden yükleyerek çözüldü.

Bir hata ile bir hata olmayabileceği gerçeğine alışamıyorum.

 

Söyle bana, lütfen, efsanenin genişliğini nasıl değiştirebilirim, hatta onun için ayrılan alanı nasıl kaldırabilirim?

 
Efsaneye bazı satırların yazılmasını nasıl yasaklayabilirim? Sadece bir çizgim var - bunlar Y koordinatı boyunca noktalar ve bu noktaları farklı bir renk yapmam gerekiyor, çok renkli bir çizgi çıkacak ve farklı çizgilerle yapılmış olmasına rağmen aynı bilgiyi gösteriyor ve ihtiyacım var efsaneye bu satırla ilgili sadece özet bilgileri koymak, çok renkli satırlar çok. Nasıl yapılır?
 

Ve başka bir soru, neden "Kırmızı" rengini belirledim, ancak Yeşil doğru görüntülenirken grafikte mavi görüntüleniyor?

 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 :

Ve başka bir soru, neden "Kırmızı" rengini belirledim, ancak Yeşil doğru görüntülenirken grafikte mavi görüntüleniyor?



Anladım, renk böyle ayarlanmalı

 ColorToARGB (Red, 256 )