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

 
evillive:
Les horreurs qui sont écrites ici, je m'abstiendrai de les mettre à jour au-delà de 553 pour l'instant...

J'ai commencé à avoir des problèmes avec la sortie des objets graphiques. À un moment donné dans le code, une fonction

//+----------------------------------------------------------------------------+
void SetTLine(color cl, int wnd, string nm="",
              datetime t1=0, double p1=0, datetime t2=0, double p2=0,
              bool ry=False, int st=0, int wd=1) {
   if (ObjectFind(nm)<0) ObjectCreate(nm, OBJ_TREND, wnd, 0,0, 0,0);
   ObjectSet(nm, OBJPROP_TIME1 , t1);
   ObjectSet(nm, OBJPROP_PRICE1, p1);
   ObjectSet(nm, OBJPROP_TIME2 , t2);
   ObjectSet(nm, OBJPROP_PRICE2, p2);
   ObjectSet(nm, OBJPROP_COLOR , cl);
   ObjectSet(nm, OBJPROP_RAY   , ry);
   ObjectSet(nm, OBJPROP_STYLE , st);
   ObjectSet(nm, OBJPROP_WIDTH , wd);
}
//+----------------------------------------------------------------------------+

appelé comme suit :

//==============================================================================
// --------------------------------- Данные -----------------------------------+
//==============================================================================
   if(DrawGraphics) {                           // если рисуем графические объекты
      wnd=WindowFind("i_StdDev("+sdperiod+")"); // номер окна индикатора
      if(wnd>0) {                               // если индикатор на графике, нарисуем метку
         nm=Prefix+"_Текущий бар";
         p1=WindowPriceMax(wnd); p2=WindowPriceMin(wnd);
         SetTLine(Blue,wnd,nm,Time[0],p1,Time[0],p2,false,2);
         }
      }
//-----------------------------------------------------------------------------+   

sort une ligne de tendance verticale dans la fenêtre de l'indicateur sans aucun problème (je marque la barre de zéro pour faciliter la perception visuelle des points de l'indicateur pendant le débogage) :


Lorsque j'appelle la même fonction à partir d'un autre endroit du code, comme ceci :

   if(op==OP_SELLSTOP) {
      pp=MathMin(Low[x],Low[x-1])-distanceSetOrders*PointX;
      b=iLowest(sy,tf,MODE_LOW,2,(x-1));
      if(pb-level*Point>pp) {
         ll=LotsS;
         if(StopLoss==0) sl=0;
         else sl=NormalizeDouble(MathMax(pp+StopLoss*PointX, pp+(level+1)*Point),dg);
         if(TakeProfit==0) tp=0;
         else tp=NormalizeDouble(MathMin(pp-TakeProfit*PointX, pp-(level+1)*Point),dg);
         co="Отложенный";
         Message("Кто звал? Чё..., ставить? Ставлю SellStop относительно бара "+b+
                 ", от "+DoubleToStr(pp,dg)+" до "+DoubleToStr(Low[b],dg)+" рисую линию");
         SetOrder(sy, OP_SELLSTOP, ll, pp, sl, tp, mn1, co);
         if(DrawGraphics) {
            nm=Prefix+"_Наименьшая цена_"+TimeToStr(Time[b]);
            SetTLine(FireBrick,0,nm,Time[b],Low[b],Time[b],pp,false,3);
            }
         }
      }

il marque sur le graphique la barre à partir de laquelle le niveau de l'ordre en attente est calculé, puis, aussi étrange que cela puisse paraître, les paramètres qui lui sont passés montrent des valeurs vraies et correctes ; le temps de la barre est écrit dans le nom de la ligne de tendance, mais la ligne elle-même a toutes les valeurs zéro et de plus elle est affichée comme une "Ray", bien que je passe "false" au paramètre de la fonction, responsable de cette option - pas de rayon :


Je ne vois pas d'erreur dans le code. Est-ce que ça pourrait être un problème ?
 
Les graphismes semblent avoir été complètement supprimés... Aucun bouton n'apparaît à l'écran. Je n'ai rien fait, j'ai juste rechargé le terminal, et les EA qui planaient sur les graphiques et dessinaient tous les objets graphiques sont morts normalement. Attendre quelques jours pour corriger les objets graphiques.... hmmm.... En attente de.... Donc, je suppose que je vais devoir subir le même sort. :) Il faudra attendre la nouvelle construction.
 
Avez-vous recompilé les programmes avec la nouvelle version ?
 
artmedia70:

J'ai commencé à avoir des problèmes avec la sortie des objets graphiques. À un moment donné dans le code, une fonction

appelé comme suit :

sort une ligne de tendance verticale dans la fenêtre de l'indicateur sans aucun problème (je marque la barre de zéro pour faciliter la perception visuelle des points de l'indicateur pendant le débogage) :


Lorsque j'appelle la même fonction à partir d'un autre endroit du code, comme ceci :

Je peux l'utiliser pour marquer la barre dans le graphique, à partir de laquelle le niveau de l'ordre en attente est calculé, puis, aussi étrange que cela puisse paraître, les paramètres qui lui sont passés montrent des valeurs vraies et correctes, le temps de la barre est écrit dans le nom de la ligne de tendance, mais la ligne elle-même a toutes les valeurs zéro et est affichée comme un "Ray", bien que je passe false - pas un rayon - au paramètre de la fonction responsable de cette option :


Je ne vois pas d'erreur dans le code. Est-ce que ça pourrait être un problème ?
Ajoutez une impression de tous les paramètres à l'intérieur de la fonction SetTLine.
 

Et encore une fois, une question sur le timing... Quand le marché sera-t-il pleinement lancé ? Quand y aura-t-il une mise à jour globale ?

Il était question d'un mois de tests fin novembre, mais le mois de décembre bat déjà son plein .....

 

Renat,

Est-il prévu dans un avenir proche que le nouveau ME4 supporte

ENUM_ANCHOR_POINT et ENUM_LINE_STYLE ?

Merci.

 
Wahoo:

Renat,

Y a-t-il des plans pour un support dans un futur proche dans le nouveau ME4 ?

ENUM_ANCHOR_POINT et ENUM_LINE_STYLE ?

Oui, ils le sont. Le modèle graphique sera le même que dans MQL5.

Nous ajoutons et améliorons les fonctions graphiques à chaque construction.

 

L'un des courtiers (au moins un) lorsque de nouvelles versions de MT4 sont publiées, en particulier lorsqu'il s'agit d'innovations importantes, il faut d'abord les essayer sur une démo, puis les mettre en œuvre sur un compte réel.

En raison du fait que certains bêta-testeurs ont involontairement mis à jour semi-automatiquement les terminaux voisins, pouvons-nous être sûrs que la démo et les terminaux réels, étant sur un seul ordinateur (ou VPS), seront en mesure d'observer ces tactiques lors de l'introduction de ces changements ? Ou bien un dossier, qui sert à gérer les mises à jour de tous les terminaux du système et qu'il est recommandé de supprimer "pour éviter", ne laisse que deux choix : tout ou rien?

 

N'exécutez pas de tests ou de mises à jour sur des ordinateurs ayant des copies de travail des terminaux.

Ils seront tous mis à jour automatiquement dès qu'au moins une copie sur l'ordinateur recevra une mise à jour.