"Görselleştirin! R dilinin plot fonksiyonuna benzer MQL5 grafik kütüphanesi" makalesi için tartışma - sayfa 3

[Silindi]  
Roman Konopelko:

İyi günler!

CustomPlotFunction modu benzer amaçlar için kütüphanede uygulanmaktadır, kullanım örneği yaklaşık olarak ilgilendiğiniz şeyi uygular.

Not: Bununla ilgili daha fazla ayrıntı forum 'te yazılmıştır.


Harika, teşekkürler :)
[Silindi]  

X ekseni etiketlerini tarih-saat serisi olarak çizmenin bir yolu var mı?

 
Pablo Rego:

X ekseni etiketlerini tarih-saat serisi olarak çizmenin bir yolu var mı?

Örnek:

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

Sonuç:


 

X eksenindeki etiketleri ters (ters) sırada çizmek mümkün mü?

Örneğin zaman serisi indekslerini görmek için.

 
Dennis Kirichenko:

X eksenindeki etiketleri ters (ters) sırada çizmek mümkün mü?

Örneğin zaman serisi indekslerini görmek için.

Her şeyi kendi başına yapacak bir fonksiyon çağırmak şeklinde hızlı bir çözüm yoktur. 'te olduğu gibi, değerleri çizmek için kendi işlevinizi oluşturmanız ve bunu ValuesFunctionFormat yöntemine geçirmeniz gerekir.
 

mql4'te benzer bir kütüphane var mı?

[Silindi]  

Arka plan saydamlığını ayarlamanın mümkün olup olmadığını söyleyebilir misiniz, belki temel sınıfta, belki de ince ayar yapmak için bir şey?

 
Maxim Dmitrievsky:

Arka plan saydamlığını ayarlamanın mümkün olup olmadığını söyleyebilir misiniz, belki temel sınıfta? Bunu kolayca bulamadım


Sadece CGraphic sınıfını değiştirirseniz (sadece doğrudan düzenleme yanlıştır, kalıtım gerekir, buradaki örnek sadece hızlılık içindir).

//+------------------------------------------------------------------+
//| Grafik oluştur|
//+------------------------------------------------------------------+
bool CGraphic::Create(const long chart,const string name,const int subwin,const int x1,const int y1,const int x2,const int y2)
  {
//--- nesne adını kontrol et 
   if(ObjectFind(chart,name)>=0)
      return(false);
//--- ön hesaplama
   int width=x2-x1;
   int height=y2-y1;
   if(width>0 && height>0)
     {
      m_width=width;
      m_height=height;
      //--- nesne oluştur
      if(!ObjectCreate(chart,name,OBJ_BITMAP_LABEL,subwin,0,0))
         return(false);
      //--- nesneyi özelleştir
      if(!ObjectSetInteger(chart,name,OBJPROP_XDISTANCE,x1) || 
         !ObjectSetInteger(chart,name,OBJPROP_YDISTANCE,y1))
        {
         ObjectDelete(chart,name);
         return(false);
        }
      //--- nesne ekle
      if(!m_canvas.Attach(chart,name,width,height,COLOR_FORMAT_ARGB_NORMALIZE))
        {
         ObjectDelete(chart,name);
         return(false);
        }
     }
//--- başarı
   return(true);
  }

Bundan sonra rengi kontrol edebilirsiniz:

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

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

:

Örnek

[Silindi]  
Vladimir Karputov:

Yalnızca CGraphic sınıfında bir değişiklik yaparsanız (yalnızca doğrudan düzenleme yanlıştır, kalıtıma ihtiyacınız vardır, buradaki örnek tamamen hızlılık içindir)

Bundan sonra rengi kontrol edebilirsiniz:

:



teşekkürler, miras ile ilgileneceğim :)

[Silindi]  

Uzman Danışman'da(REASON_PARAMETRELER) girdileri değiştirirken grafiğin bir hata oluşturmaması ve yeni parametrelerle yenilenmesi nasıl sağlanır? Tf değiştirirsem veya sembolleri değiştirirsem her şey yolunda, parametreleri değiştirirsem hata geçersiz işaretçi oluyor. Eğrilerin sayısı parametrelerde değişir ve işaretçiler yanlıştır.

eğer açık değilse size bir örnek verebilirim )