MetaTrader 4 Build 529 beta publié avec un nouveau compilateur - page 118

 
Candid:

Les versions de démonstration des indicateurs ne démarrent pas. En cliquant avec le bouton droit de la souris, le test n'est pas du tout proposé, en double-cliquant puis en appuyant sur le bouton "Test", le testeur est chargé, mais ne répond pas du tout au bouton "Start". Le journal du testeur de stratégie reste vide. Les conseillers experts sont lancés. Construire 555.


En 558 il y a un léger changement, si avant la procédure décrite avec un double clic l'enregistrement sur le chargement et le suivant sur le déchargement de l'indicateur apparaissaient dans le journal général, maintenant l'enregistrement sur le déchargement n'apparaît pas. En outre, l'indicateur est maintenant affiché dans le testeur sans mentionner le dossier "marché". Mais le journal du testeur est toujours intact.

D'après ce que j'ai compris, personne ne s'occupe du problème du test des versions démo des indicateurs, cela semble être un écho de la recherche d'erreurs dans le test des Expert Advisors. Peut-être sera-t-il plus facile de trouver l'erreur en testant les indicateurs?

 
stringo:

La fonction IndicatorCounted() était à l'origine une béquille. Qui a programmé des indicateurs en trois, comprendra ce que je veux dire.

En cinq, nous avons trouvé une solution élégante avec le paramètre prev_calculated et le retour du nombre de barres calculées dans la fonction OnCalculate. Et cette solution s'est maintenant déplacée vers les quatre nouveaux sites.



Il y a longtemps, mais toujours agréable :)
 
Candid:
Le test des indicateurs faciliterait-il la recherche d'un défaut ?
Il y aura destests d'indicateurs, mais pas pour le moment. Mais il le fera.
 
La fonction de création d'objets de Kim semble être obsolète en raison de l'entrée OBJPROP_ANCHOR. Je vais le vérifier maintenant, mais il y a encore quelques problèmes avec les graphiques. Je vais essayer de poster tous les détails avec des exemples plus tard.
 
stringo:

Je répète. On fait comme dans Five. Ayez la gentillesse d'appliquer un point d'ancrage supplémentaire - indiquez où se trouve le point "d'ancrage" de l'objet. Dans votre cas, le coin supérieur droit de l'objet.




Ainsi, la fonction ObjectSet fonctionne différemment dans la nouvelle version du terminal et dans l'ancienne. Et nous devrons modifier un peu tous les Expert Advisors qui utilisent la sortie sur un graphique.

Dans la version précédente, si nous sélectionnions ObjectSet(Name,OBJPROP_CORNER, 1) ;
, le point d'"ancrage" se trouvait automatiquement dans le coin supérieur droit de l'objet. Prévoyez-vous de quitter ceci, pour la compatibilité ?

 
alexvd:

Avez-vous essayé de lancer un EA sur un graphique (pas dans le testeur de stratégie) ? Des messages dans le journal de bord ?


PS. Le problème a été réglé. Nous attendrons la prochaine version avec un correctif.

1. Non, je n'ai pas essayé d'attacher un EA à un graphique. Je n'ai vu aucune entrée dans le journal du testeur, à l'exception de la sortie standard de ses paramètres. Par conséquent, j'ai obtenu la sortie de init() de l'EA, mais il n'y avait pas de sortie de start() de l'EA dans le journal.

2. rapidement. Merci, nous l'attendons avec impatience.

 
Lion.Fx:

Il s'avère que la fonction ObjectSet fonctionne différemment dans la nouvelle version du terminal et dans l'ancienne. Et nous devrons modifier un peu tous les Expert Advisors qui utilisent la sortie d'informations sur le graphique.

Dans la version précédente, si nous faisons : ObjectSet(Name,OBJPROP_CORNER, 1) ;
Le point d'ancrage était automatiquement placé dans le coin supérieur droit de l'objet. Vous n'avez pas l'intention de laisser ça, pour la compatibilité ?

Eh bien, oui, il est souhaitable de laisser l'ancrage par défaut comme dans les anciennes constructions.
 
Je viens de vérifier la fonction de Kim, qui a servi fidèlement pendant de nombreuses années :) (encore merci à lui).
L'ajout du paramètre OBJPROP_ANCHOR permettait de remettre les objets à leur place (pas de décalage de coordonnées imprécis).

Merci d'avoir ajouté ANCHOR. C'est plus pratique, mais vous devrez réparer beaucoup de choses avec.

Voici la fonction :

//+------------------------------------------------------------------+
void SetLabel(string nm, string tx, string ft,color cl, int xd, int yd, int cr=0, int anch=0, int fs=9) {
  if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_LABEL, 0, 0,0);
  ObjectSetText(nm, tx, fs,ft);
  ObjectSet(nm, OBJPROP_COLOR    , cl);
  ObjectSet(nm, OBJPROP_XDISTANCE, xd);
  ObjectSet(nm, OBJPROP_YDISTANCE, yd);
  ObjectSet(nm, OBJPROP_ANCHOR, anch);   //<----------------
  ObjectSet(nm, OBJPROP_CORNER   , cr);
  ObjectSet(nm, OBJPROP_FONTSIZE , fs);
}
//+------------------------------------------------------------------+

et appeler :

  SetLabel("Hello",  "Hello" ,  FontType, FontColor,  20, 20, 3, 1, FontSize);

 
Lion.Fx:

Il s'avère que la fonction ObjectSet fonctionne différemment dans la nouvelle version du terminal et dans l'ancienne. Et nous devrons modifier un peu tous les EAs qui utilisent l'information sortie sur le graphique.

Dans la version précédente, si nous faisons : ObjectSet(Name,OBJPROP_CORNER, 1) ;
Le point d'ancrage est automatiquement placé dans le coin supérieur droit de l'objet. Prévoyez-vous de quitter ceci, pour la compatibilité ?

C'est logique. Voyons ce que nous pouvons faire.

PS. C'est exactement ce que j'ai fait.

 
J'ai fait un addendum à la demande ouverte dans le ServiceDesk #907205 et j'ai joint un code pour le vérifier.
Raison: