Erreurs, bugs, questions - page 1397

 
Anatoli Kazharski:
Au fait, je ne me souviens pas exactement, mais je pense que vous pouvez. Essayez-le. )
Même ainsi, j'ai une douzaine d'indicateurs avec des attributs comme DRAW_NONE qui s'appellent les uns les autres, et alors j'ai déjà besoin d'un sous-système séparé regroupant en un seul endroit les lectures de tous les indicateurs de travail par la position du pointeur de la souris. :)
 
Ilya Malev:
Malgré cela, j'ai une douzaine d'indicateurs avec des attributs comme DRAW_NONE qui s'appellent les uns les autres, et j'ai déjà besoin d'un sous-système séparé qui regroupe en un seul endroit les lectures de tous les indicateurs qui fonctionnent par position du pointeur de la souris. :)
Cet argument est plus sérieux. Nous pourrions l'ajouter au Service Desk. ))
 
Si vous pouvez obtenir des valeurs comme INDICATOR_CALCULATIONS par le biais d'iCustom, alors oui, tout ce que vous devez faire est d'autoriser ces valeurs à apparaître dans la fenêtre de données. Si j'obtiens une réponse à ma demande de servicedesk, je suggérerai cette option.
 
A100:
Erreur de compilation :'a' - n'est pas un membre statique
mais ce n'est pas grave. Quelle est la différence ?

//должен обращаться к функции, хотя бы потому что уж стоят скобки и тип, да еще a базового класса приватный
class A     { int a; };
class B : A { void a(); };
void B::a() {}
// здесь инлайнится, все правильно
class A     { int a; };
class B : A { void a() {} };
// так работает, видно проблема с компилятором
class A     {int h; void f(); };
class B : A {void a(); };
void B::a() {}
 

Je ne sais pas pour vous, mais je vois déjà plusieurs erreurs de compilation.

1) il ne fait pas de distinction entre les fonctions et les variables lors de l'héritage.

2) la variable de la classe de base est privée, donc le message indiquant qu'il est impossible d'accéder aux membres privés devrait d'abord sortir.

 
sigma7i:

Je ne sais pas pour vous, mais je vois déjà plusieurs erreurs de compilation.

1) il ne fait pas de distinction entre les fonctions et les variables lors de l'héritage.

2) la variable de la classe de base est privée, donc le message qu'il est impossible d'accéder aux membres privés devrait d'abord sortir.

Veuillez citer quelques exemples. Il serait intéressant de voir quels sont les cas particuliers qui posent de tels problèmes en termes de formatage du code.
 
Anatoli Kazharski:
Donnez-moi quelques exemples. Il est intéressant de voir quels cas présentent de tels problèmes en termes de conception de code.

Je pense que j'ai déjà donné des exemples. Mais je vais la détailler pour la rendre encore plus claire :

Notez que dans le troisième exemple de la classe A j'ai remplacé le nom de la variable par "h" et ce code compile (bien sûr si vous commentez les exemples 1 et 2), ce qui confirme mon intuition.

//+------------------------------------------------------------------+
//|                                                           ds.mq5 |
//|                        Copyright 2015, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2015, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+



//должен обращаться к функции, хотя бы потому что уж стоят скобки и тип, да еще a базового класса приватный
class A     { int a; };
class B : A { void a(); };
void B::a() {}
// здесь инлайнится, все правильно
class A     { int a; };
class B : A {void a() {} };
// так работает, видно проблема с компилятором
class A     {int h; void f(); };
class B : A {void a(); };
void B::a() {}


void OnStart()
  {
    // c объектами работает правильно
  
    B variable;
    variable.a();   // ошибка доступа, здесь все нормально
    variable.a = 1; // ошибка доступа, как и следовало ожидать, здесь все нормально
  }
//+------------------------------------------------------------------+
 

Situation : le test est sur H1 (je pense que c'est important - nous parlons d'un test multi-période). La dernière barre quotidienne (D1) dans le testeur SeriesInfoInteger donne par exemple 2015.10.08. Je prends l'indicateur iMA sur D1 avec un offset de 2. Il donne la valeur pour 2015.10.05 (qui devrait être 2015.10.06 avec un décalage de 2).

Cela signifie que l'indicateur est en retard sur le testeur par rapport à la création de la série chronologique. Cela se produit clairement au début d'une nouvelle barre de D1. Quelqu'un a-t-il fait l'expérience d'une telle situation ? Je ne vais pas encore simuler l'exemple.

 
Ilya Malev:

Situation : Le test est sur H1. La dernière barre quotidienne (D1) dans le testeur SeriesInfoInteger donne par exemple 2015.10.08. Je prends les lectures de l'indicateur iMA avec un offset de 2. Il donne la valeur pour 2015.10.05 (qui devrait être 2015.10.06 avec un décalage de 2).

C'est-à-dire que l'indicateur est en retard dans le testeur par rapport à la construction de la série temporelle. Cela est-il arrivé à quelqu'un ? Je ne vais pas encore simuler un exemple.

Oui, cela peut se produire lorsque l'on travaille avec le TF, pour autant que je me souvienne, seulement plus ancien que l'actuel dans le testeur. Les données n'ont pas eu le temps d'être mises à jour. C'est-à-dire que lorsqu'il s'agit d'un nouveau jour sur H1, le jour précédent se trouve sur le premier tick de ce nouveau jour sur D1.
 
Existe-t-il un moyen de s'assurer que le CopyBuffer de l'indicateur de l'ancien TF renvoie une valeur exactement à la date à laquelle le CopyTime de ce TF pointe, avec le même décalage ?