La toile est cool ! - page 83

 

Merci à tous ceux qui proposent une solution. J'ai besoin d'un peu de temps pour tout tester et l'appliquer à mes produits. Ce qui peut fonctionner sur des produits simples, je dois le tester sur des produits plus complexes. L'idée de la minuterie est vraiment excellente. Elle ne résout pas tous les problèmes, mais elle résout d'autres problèmes que j'ai rencontrés.

Je n'ignore personne. Je serai en mesure de répondre la semaine prochaine en indiquant ce qui a fonctionné et ce qui n'a pas fonctionné.

 
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 #:

Oui, il y a juste une petite nuance non documentée.
Si vous utilisez le canal alpha (COLOR_FORMAT_ARGB_NORMALIZE), vous devez le remplir de zéros avant de créer votre bitmap.

Sinon les bords des caractères seront "déchiquetés".

Merci beaucoup.


Et merci pour tout votre travail désintéressé sur Canvas.

J'ai beaucoup appris en appliquant Canvas à mes graphiques non réguliers dans MT4, (Renko par exemple) qui a remplacé des milliers d'objets graphiques.

 
Jon_G #:

Merci.


Et merci pour tout votre travail désintéressé sur Canvas.

J'ai beaucoup appris et j'ai implémenté Canvas à mes graphiques non réguliers dans MT4, (Renko par exemple) qui a remplacé des milliers d'objets graphiques.

Merci pour votre gentillesse.

Oui, des milliers d'objets commencent à ralentir incroyablement l'interface.
Il s'agit d'une grave négligence de la part de MetaQuotes.
Un canevas bien construit ne cause pas de lags même avec 10 000 objets virtuels.

 

Base de code

PNG

Nikolai Semko, 2023.07.15 07:24

Oubliez les fichiers BMP comme un mauvais rêve. Avec cette bibliothèque, vous pourrez désormais utiliser le format d'image PNG, plus avancé et plus compact, pour vos programmes.

J'ai finalement implémenté c PNG.
J'ai reçu l'implémentation de @Zorro(https://www.mql5.com/ru/forum/92113#comment_2672596)
Jetez-y un coup d'oeil s'il vous plaît. Je n'ai eu aucun problème jusqu'à présent.



 
Nikolai Semko #:
Enfin implémenté c PNG.
.

Cool et utile. Juste pour l'intérêt, peut-il être utilisé dans MT4 ?

 
Vitaliy Kuznetsov #:

Sympa et utile. Juste par intérêt, est-ce que cela peut être utilisé dans MT4 ?

C'est sûr
Je vais essayer. Je pense que le code restera pratiquement le même.
 

Nikolai, avez-vous trouvé quelque part un code prêt sur kanvas qui permet de faire défiler la fenêtre ?


 
Vitaliy Kuznetsov #:

Nikolai, avez-vous trouvé quelque part un code prêt sur kanvas qui permet de faire défiler la fenêtre ?


Anatoly et Pyotr avaient des implémentations

Mais je ne l'ai pas utilisé. C'est pourquoi je ne peux pas juger.

 
Je veux créer une interface utilisateur avec la classe Canvas. Mon seul problème est que je ne sais pas comment rendre le tableau de bord mobile sur le graphique.
J'ai beaucoup cherché mais je n'ai pas trouvé d'exemple. Je vous serais reconnaissant si vous pouviez me donner un indice.


//+------------------------------------------------------------------+
//|                                                 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)
{

}

//+------------------------------------------------------------------+
Dossiers :
screenshot.png  18 kb
Raison: