Tuval harika! - sayfa 83

 

Çözüm öneren herkese teşekkürler. Her şeyi test etmek ve ürünlerime uygulamak için biraz zamana ihtiyacım var. Basit ürünlerde işe yarayabilecek şeyleri daha karmaşık ürünlerde test etmem gerekiyor. Zamanlayıcı fikri gerçekten çok iyi. Tüm sorunları çözmüyor ama karşılaştığım diğer sorunları çözüyor.

Kimseyi görmezden gelmiyorum. Gelecek hafta neyin işe yarayıp neyin yaramadığına dair yanıt verebileceğim.

 
Canvas based indicators: Filling channels with transparency
Canvas based indicators: Filling channels with transparency
  • www.mql5.com
In this article I'll introduce a method for creating custom indicators whose drawings are made using the class CCanvas from standard library and see charts properties for coordinates conversion. I'll approach specially indicators which need to fill the area between two lines using transparency.
 
Nikolai Semko #:

Evet, sadece belgelenmemiş küçük bir nüans var.
Alfa kanalı kullanıyorsanız (COLOR_FORMAT_ARGB_NORMALIZE), bit eşleminizi oluşturmadan önce onu sıfırlarla doldurmamalısınız.

Aksi takdirde karakterlerin kenarları "pürüzlü" olacaktır.

Teşekkürler.


Ve Canvas üzerindeki tüm özverili çalışmalarınız için teşekkür ederim .

Çok şey öğrendim ve tuvali mt4'teki normal olmayan grafiklerime (örneğin Renko) uyguladım ve bu da binlerce grafik nesnesinin yerini aldı.

 
Jon_G #:

Teşekkürler.


Ve Canvas'taki tüm özverili çalışmalarınız için teşekkür ederim .

Çok şey öğrendim ve tuvali mt4'teki normal olmayan grafiklerime (örneğin Renko) uyguladım ve bu da binlerce grafik nesnesinin yerini aldı.

Nazik sözleriniz için teşekkürler.

Evet, binlerce nesne arayüzü inanılmaz derecede yavaşlatmaya başlıyor.
Bu MetaQuotes'un ciddi bir gözetimidir.
İyi inşa edilmiş bir tuval 10.000 sanal nesne ile bile gecikmelere neden olmaz.

 

Kod Tabanı

PNG

Nikolai Semko, 2023.07.15 07:24

BMP dosyalarını kötü bir rüya gibi unutun. Bu kütüphane ile artık programlarınız için daha gelişmiş ve kompakt PNG görüntü formatını kullanabileceksiniz.

Sonunda c PNG'yi uyguladım.
Uygulamayı @Zorro 'dan aldım(https://www.mql5.com/ru/forum/92113#comment_2672596)
Lütfen kontrol edin. Şimdiye kadar herhangi bir aksaklık yaşamadım.



 
Nikolai Semko #:
Sonunda c PNG uygulandı.
.

Güzel ve kullanışlı. Sadece ilgi için, MT4'te kullanılabilir mi?

 
Vitaliy Kuznetsov #:

Güzel ve kullanışlı. Sadece meraktan soruyorum, bu MT4'te kullanılabilir mi?

Elbette
Bir deneyeceğim. Kodun neredeyse aynı kalacağını düşünüyorum.
 

Nikolai, kanvas üzerinde pencereyi kaydırmaya izin veren hazır bir kod buldun mu?


 
Vitaliy Kuznetsov #:

Nikolai, kanvas üzerinde pencereyi kaydırmaya izin veren hazır bir kod buldun mu?


Anatoly ve Pyotr 'ın uygulamaları vardı

Ama ben kullanmadım. Bu yüzden yargılayamam.

 
Canvas sınıfı ile bir kullanıcı arayüzü oluşturmak istiyorum. Tek sorunum gösterge panelini grafik üzerinde nasıl hareketli hale getireceğimi bilmiyorum.
Çok araştırdım ama herhangi bir örnek bulamadım. Bir ipucu verebilirseniz çok sevinirim.


//+------------------------------------------------------------------+
//|                                                 Canvas Panel.mq5 |
//|                                  Copyright 2022, MetaQuotes Ltd. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2022, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property indicator_chart_window
#property indicator_buffers 0
#property indicator_plots   0

#include <Canvas\Canvas.mqh>
CCanvas  canvas;

//+------------------------------------------------------------------+
//| Custom indicator initialization function                         |
//+------------------------------------------------------------------+
int OnInit()
{
//--- create canvas
   if(!canvas.CreateBitmapLabel(0, 0, "Dashboard", 40, 40, 400, 200, COLOR_FORMAT_ARGB_NORMALIZE))
   {
      Print("Error creating canvas: ", GetLastError());
      return(INIT_FAILED);
   }
   
   canvas.Erase(ColorToARGB(clrGray, 200));
   canvas.Update(true);

   ChartSetInteger(0, CHART_EVENT_MOUSE_MOVE, true);

//---
   return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Custom indicator deinitialization function                       |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy application dialog
   canvas.Destroy();
   ChartRedraw();
}
//+------------------------------------------------------------------+
//| Custom indicator iteration function                              |
//+------------------------------------------------------------------+
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
{
//---

//--- return value of prev_calculated for next call
   return(rates_total);
}
//+------------------------------------------------------------------+
//| ChartEvent function                                              |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,
                  const long &lparam,
                  const double &dparam,
                  const string &sparam)
{

}

//+------------------------------------------------------------------+
Dosyalar:
screenshot.png  18 kb