"Görselleştirin! R dilinin plot fonksiyonuna benzer MQL5 grafik kütüphanesi" makalesi için tartışma
Bu arada, CircleWu işlevi basitleştirilebilir ve hızlandırılabilir:
{
if(r<=0)
return;
//--- ön hesaplamalar
double r2=r*r;
double quarter=round(r*M_SQRT1_2);
//--- çizgi stilini ayarla
uint prev_style=m_style;
if(style!=UINT_MAX)
LineStyleSet(style);
uint mask=1<<m_style_idx;
//--- çiz
for(int dx=0; dx<=quarter; dx++)
{
double dy=sqrt(r2-dx*dx);
double alpha1=dy-floor(dy);
double alpha2=1-alpha1;
if((m_style&mask)==mask)
{
PixelTransform4(x,y,dx,(int)(dy)+1,clr,alpha1);
PixelTransform4(x,y,dx,(int)(dy),clr,alpha2);
PixelTransform4(x,y,(int)dy+1,dx,clr,alpha1);
PixelTransform4(x,y,(int)dy,dx,clr,alpha2);
}
mask<<=1;
if(mask==0x1000000)
mask=1;
}
//--- önceki satır stilini ayarla
if(style!=UINT_MAX)
m_style=prev_style;
}
İyi iş çıkardınız! Teşekkürler. CircleAA algoritmasını zaten düzeltecektim
Bu arada, CircleWu işlevi basitleştirilebilir ve hızlandırılabilir:
Grafiğin ve her bir fonksiyonunun özelliklerini istediğiniz zaman değiştirebilirsiniz. Örneğin, grafik eksenlerine başlıklar ekleyelim, eğri adını değiştirelim ve bunun için spline yaklaştırma modunu etkinleştirelim:
#include <Graphics\Graphic.mqh>
//+------------------------------------------------------------------+
//| Komut dosyası programı başlatma işlevi|
//+------------------------------------------------------------------+
void OnStart()
{
CGraphic graphic;
graphic.Create(0,"Graphic",0,30,30,780,380);
double x[]={-10,-4,-1,2,3,4,5,6,7,8};
double y[]={-5,4,-10,23,17,18,-9,13,17,4};
CCurve *curve=graphic.CurveAdd(x,y,CURVE_LINES);
curve.Name("Example");
curve.LinesIsSmooth(true);
graphic.XAxis().Name("X - axis");
graphic.XAxis().NameSize(12);
graphic.YAxis().Name("Y - axis");
graphic.YAxis().NameSize(12);
graphic.YAxis().ValuesWidth(15);
graphic.CurvePlotAll();
graphic.Update();
DebugBreak();
}
У меня метод называется LinesSmooth LineIsSmooth нету. Продолжаю изучать дальше :)
Grafiğin ve her bir fonksiyonunun özelliklerini istediğiniz zaman değiştirebilirsiniz. Örneğin, grafik eksenlerine başlıklar ekleyelim, eğri adını değiştirelim ve bunun için spline yaklaştırma modunu etkinleştirelim:
{
curve.LinesIsSmooth(true);
У меня метод называется LinesSmooth LineIsSmooth нету. Продолжаю изучать дальше :)
Grafikte bir eğri yeniden çizildiğinde ölçeğin de güncellenmesini nasıl sağlayabilirim?
graphicfirst.Redraw(); и Update()
eğrinin kendisi güncellenir, ancak eski fiyatların bulunduğu ölçek kalır ve grafik tuval sınırlarının dışına çıkar

Buldum, CalculateMaxMinValues() yapmam gerekiyor :)
Örneğin, dizilerdeki değerleri değiştirirken önceden oluşturulmuş bir grafiği nasıl doğru şekilde yeniden çizeceğimi söyleyebilir misiniz? Redraw() ve Update() işlevlerinin hiçbir etkisi yok
İyi günler, grafiği tam olarak nasıl yeniden çizmeye çalıştınız?
Sadece belirli bir eğri için verileri değiştirmeniz gerekiyorsa, burada çalışan bir örnek var:
//+------------------------------------------------------------------+
//| Komut dosyası programı başlatma işlevi|
//+------------------------------------------------------------------+
void OnStart()
{
//--- veri 1
double x1[]={-10,-4,-1,2,3,4,5,6,7,8};
double y1[]={-5,4,-10,23,17,18,-9,13,17,4};
//--- veri 2
double x2[]={-10,-10,10,10};
double y2[]={-10,10,-10,10};
//--- grafik
CGraphic graph;
graph.HistoryNameWidth(80);
graph.Create(0,"Graph",0,30,30,830,430);
//--- Puanlar
CCurve *curve=graph.CurveAdd(x1,y1,CURVE_LINES);
graph.CurvePlot(0);
graph.Update();
Sleep(1000);
curve.Update(x2,y2);
graph.Redraw(true);
graph.Update();
Sleep(1000);
}
İyi günler, grafiği tam olarak nasıl yeniden çizmeye çalışıyordunuz?
Sadece belirli bir eğri için verileri değiştirmeniz gerekiyorsa, burada çalışan bir örnek var:
Not: Forumda Grafik kütüphanesi ile ilgili bir başlık var, orada bu soru zaten sorulmuş.Teşekkürler, zaten çözdüm, tam olarak aynı şeyi yaptım, sadece bir dizi üzerinde. graph.CalculateMaxMinValues() işlevini grafik için de yeniden hesaplamanız gerekir, ardından ölçek güncellenir
CGraphic::Redraw(const bool rescale=false) yöntemini true parametresiyle çağırırsanız, ölçekler otomatik olarak yeniden hesaplanacaktır ( CalculateMaxMinValues öğesini ayrıca çağırmanıza gerek yoktur).
Doğru, anladım. teşekkürler )
Grafik üzerinde iki veya daha fazla ölçek yapmak mümkün mü - bölümlerin santimetre ve inç olarak verildiği bir cetvele benzer şekilde, değerler yalnızca grafiği çizmek için nokta kullanılmışsa verilir mi?
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
Yeni makale Görselleştirin! R dilinin plot fonksiyonuna benzer MQL5 grafik kütüphanesi yayınlandı:
Ticaret modellerini incelerken grafikler şeklinde görselleştirme büyük önem taşımaktadır. R ve Python gibi bilim topluluğu arasında popüler olan programlama dilleri görselleştirme için özel plot fonksiyonuna sahiptir. Bu fonksiyon, ticaret modellerinin çizgiler, nokta dağılımları ve histogramlar şeklinde görselleştirilmesine olanak sağlar. MQL5’te de aynısı CGraphics sınıfı kullanılarak yapılabilir.
Fonksiyonlarla ilişkili grafikler - birkaç satırda hızlı şekilde oluşturma
Kütüphanenin bir diğer kolaylığı da CurveFunction fonksiyonlarına yönelik işaretçilerle çalışmaktır. MQL5'te, fonksiyon işaretçileri yalnızca global veya statik fonksiyonları kabul eder ve fonksiyon sözdizimi de işaretçi sözdizimine tam olarak uymalıdır. Bizim durumumuzda, CurveFunction işaretçisi, double tipi parametre alan ve ayrıca double geri döndüren fonksiyonlar için yapılandırılmıştır.
Bir fonksiyon işaretçisiyle bir eğri oluşturmak için ayrıca ilk (from), son (to) ve artış adımı (step) parametrelerinin de doğru bir şekilde ayarlanması gerekir. Artış adımı ne kadar küçük olursa, eğriyi oluşturmak için o kadar fazla fonksiyon noktası olacaktır. Bir veri serisi oluşturmak için CurveAdd(), bir fonksiyon çizmek için de CurvePlot() veya CurvePlotAll() kullanın.
Grafik kütüphanesinin avantajları
MQL5 dili, geliştiricilerin yalnızca ticaret robotları ve teknik göstergeler oluşturmasına değil, aynı zamanda ALGLIB, Fuzzy ve istatistik kütüphanelerini kullanarak karmaşık matematiksel hesaplamalar yapmasına da olanak sağlar. Elde edilen veriler daha sonra grafik kütüphanesi kullanılarak kolayca görselleştirilebilir. İşlemlerin çoğu otomatikleştirilmiştir ve kütüphane kapsamlı işlevsellik sunar:
Yazar: MetaQuotes