Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Même si vous les rendez virtuels , vous ne serez pas en mesure d'effectuer une surcharge normale sans un accès complet aux membres de la classe CGraphics, ils doivent donc tous (ou presque) être déclarés comme protégés.
et ces fonctions ***Plot sont juste protégées
et ces fonctions ***Plot sont tout aussi protégées.
{
private:
CArrayObj m_arr_curves;
CCanvas m_canvas;
//--- parameters background
int m_height;
int m_width;
//--- parameters work space
int m_left;
int m_right;
int m_up;
int m_down;
//--- default parameters work space
int m_left0;
int m_right0;
int m_up0;
int m_down0;
//--- size of dash on the axes
int m_mark_size;
//--- scaling parameters
double m_dx;
double m_dy;
Je parlais des membres de la classe CGraphic, maintenant ils sont tous privés, et sans accès à m_canvas, m_dx, m_dy et autres membres dans le descendant, la surcharge ne fonctionnera pas.
ok, alors tout est entre vos mains) Je vais attendre.
Jusqu'à présent, je l'ai temporairement modifié localement.
Dans certaines fonctions (pas partout), s'il y a une division, c'est sans contrôle du 0.
par exemple
{
...
...
double x_size=(m_x.Max()-m_x.Min());
double xf_size=xf2-xf1;
//--- keep scaling parameters
m_dx=xf_size/x_size;
ici, le dérapage zéro se produira si x.Max() == Min()
également dans Axis::CalcStepSize / CalcBoundedStepSize / SelectAxisScale etc.
Dans certaines fonctions (pas partout), s'il y a une division, c'est sans contrôle du 0.
par exemple
{
...
...
double x_size=(m_x.Max()-m_x.Min());
double xf_size=xf2-xf1;
//--- keep scaling parameters
m_dx=xf_size/x_size;
zero_devide se produira si x.Max() == Min()
également dans Axis::CalcStepSize / CalcBoundedStepSize / SelectAxisScale etc.
Merci, je vais le corriger.
Afin de ne pas surcharger la bibliothèque avec de nombreuses vérifications, j'ai essayé de prendre en compte tous les cas dans la méthode Axis::SelectAxisScal.
1. Il semble que ce soit le fichier sans les modifications de ce matin sur l'enum ENUM_AXIS_TYPE.
---
2. testé ENUM_AXIS_TYPE de la page précédente
Puisque vous utilisez le format ValuesFunctionFormat dans le style d'une fonction de rappel, vous devez retourner un paramètre void* dans la fonction.
dans CAxis pour ajouter
void* m_cbdata; // <---
...
// изменить
void ValuesFunctionFormat(DoubleToStringFunction func, void* cbdata) { m_values_func=func; m_cbdata=cbdata; }
// добавить получение этого void*
void* ValuesFunctionFormatCBData(void) const { return m_c bdata; }
dans CGraphic::CalculateXAxis
void* cbdata=m_x.ValuesFunctionFormatCBData(); // <---
...
case AXIS_TYPE_CUSTOM:
{
m_xvalues[i]=(xfunc==NULL) ? NULL : xfunc(x, cbdata); // <---
----
Ce paramètre de rappel est nécessaire pour passer un pointeur à un objet qui sait où se trouve le tableau arrX.
Comme la fonction est essentiellement statique, il est impossible de savoir ce qui l'a appelée exactement.
ZS.
Et voici à quoi ressemble déjà le résultat de l'affichage des séries temporelles (je poserai plus de questions sur les lignes avec les lectures plus tard, il y a un inconvénient à obtenir des coordonnées là :)
Et voici à quoi ressemble déjà en principe le résultat de la série temporelle (je poserai plus tard des questions sur les lignes avec des lectures, il y a la maladresse d'obtenir des coordonnées là :)
Veuillez réaliser une vidéo ou une animation plus longue à partir du moment où le tableau est vide. Je ne le vois pas dans le GIF.
Est-ce que c'est mieux ?
cet expert travaille sur Roman's Canvas + CGraphic
Dans ce cas, je construis un P/L à partir de plusieurs outils.cet expert travaille sur Roman's Canvas + CGraphic
Dans ce cas, je construis le P/L à partir de plusieurs instruments sur celui-ciC'est plus clair maintenant. La croix (et éventuellement d'autres interactivités) est-elle une fonctionnalité intégrée (nécessaire) de la bibliothèque de Roman, ou en avez-vous hérité ?
Je veux voir des éléments d'interactivité dans les graphiques SB - réticule, zoom (dans les deux sens) et mise en évidence des valeurs du curseur.
Par exemple, je fais GraphPlot via EA/indicator, et j'obtiens cette fonctionnalité immédiatement.
Maintenant, pour être plus clair. La croix (et éventuellement d'autres interactivités) est-elle une fonctionnalité intégrée (nécessaire) de la bible de Roman, ou en avez-vous hérité ?
Oui, j'en ai hérité.
Je souhaite voir certains éléments d'interactivité dans les graphiques SB - réticule, zoom (des deux côtés) et mise en évidence des valeurs du curseur.
Nous allons avoir une discussion avec le principal. J'ai aussi besoin de quelque chose.
- Le rétro-éclairage (si ce n'est pas lui, alors au moins la fonction GetNearY/X) est nécessaire. Il est préférable d'implémenter la mise en évidence par héritage de toute façon. C'est différent dans chacune de nos représentations ;)
- Nous n'avons pas encore besoin de la croix elle-même, car elle est le résultat d'événements graphiques qui n'ont encore rien à voir avec la bibliothèque.
- L'obtention des valeurs d'échelle - qui sont déterminées par la coordonnée du pixel - est une nécessité.
- C'est difficile avec le zoomo. Comme il n'y a pas de barres de défilement. Et pour être honnête, je ne voudrais pas qu'ils soient mis en œuvre dans cette classe. Pour l'instant, il n'utilise que CCanvas et ne demande pas d'autres objets. Et c'est très bien.
Je prévois d'implémenter le zoom indépendamment par héritage, de mettre des barres de défilement et de redimensionner selon les besoins.