échec de l'initialisation globale !!!!!!! - page 3

 

Merci pour les indices !

Depuis 646, il se passe des choses étranges, et personne ne semble pouvoir nous aider !

1. Les étiquettes ne sont pas alignées, comme si les XDISTANCE et YDISTANCE n'étaient pas respectées.

Elles ne se remettent en ligne qu'après avoir changé de Tf dans les deux sens.

Après avoir changé de fenêtre de graphique ou modifié l'entrée des paramètres, elles se désalignent.

2. Certains vieux indis plantent le MT4.

3. Après avoir démarré MT4, il se connecte d'abord au compte, puis se déconnecte au bout d'un moment et je dois me reconnecter. 4.

4. Les scripts et EA's avec OrderClose() ne fonctionnent pas, ils ne ferment pas les ordres.

OrderModify() fonctionne bien.

Que pouvons-nous faire pour que MetaQuotes fasse quelque chose à ce sujet ???

Après tout, MT4 est une plateforme de trading, donc un outil sérieux, pas un jouet ! !!

Oh, et encore une chose :

Disons que je crée un rectangle avec un indice, sur la base de certains calculs.

Les calculs sont à l'intérieur du start().

Pourtant, je ne vois pas mon rectangle après le démarrage de MT4, pas même sur les ticks.

Mais, après avoir réinitialisé l'indi ou changé de Tf, il est là.

Ce genre de choses ne s'est jamais produit auparavant !

 
Dadas:

Merci pour les indices !

Depuis 646, il se passe des choses étranges, et personne ne semble pouvoir nous aider !

1. Les étiquettes ne sont pas alignées, comme si les XDISTANCE et YDISTANCE n'étaient pas respectées.

Elles ne se remettent en ligne qu'après avoir changé de Tf dans les deux sens.

Après avoir changé de fenêtre de graphique ou modifié l'entrée des paramètres, elles se désalignent.

cela signifie que vous pouvez le corriger dans votre code

2. Certains vieux indis plantent le MT4.

vous devez adapter le code au nouveau monde, (B600 >) par exemple "zero divide" est une erreur critique et fait disparaître l'indicateur (il ne l'était pas avant B600)

3. Après avoir démarré MT4, il se connecte d'abord au compte, puis se déconnecte au bout d'un moment et je dois me reconnecter. 4.

essayez de fermer tous les graphiques ouverts, laissez le terminal vide (sans graphiques ouverts), redémarrez le terminal, si le problème persiste, signalez-le au service desk.

4. Les scripts et EA's avec OrderClose() ne fonctionnent pas, ils ne ferment pas les ordres.

Je suis sûr que le problème se trouve dans votre code, montrez-nous le code en question et quelqu'un essaiera de vous aider.

OrderModify() fonctionne bien.

Que pouvons-nous faire pour que MetaQuotes fasse quelque chose à ce sujet ???

Après tout, MT4 est une plateforme de trading, donc un outil sérieux, pas un jouet ! !!

je suis d'accord, mais je pense (presque sûr) que l'erreur critique est dans votre code, vous utilisez un code obsolète, c'est-à-dire qu'il a été écrit avec des erreurs à l'époque, des erreurs qui n'ont pas empêché l'indicateur/EA de fonctionner, mais maintenant ce sont des erreurs cruciales et doivent être corrigées.

 

Dadas,

Je suis un collègue développeur et je ne peux pas répondre à toutes vos questions. Je suis moi-même confronté à des problèmes de type PITA dans des applications que j'ai l'intention de commercialiser. Une chose que je suggère définitivement, est de remplacer au moins vos fonctions init et deinit par de nouvelles fonctions OnInit() et OnDeInit(). Vous pouvez également remplacer start par OnStart(). Selon la documentation, l'implémentation est censée être rétrocompatible, mais mon expérience prouve le contraire. J'ai eu une situation sur une de mes indies dans laquelle deinit() n'était pas appelé. Mon deinit() supprimait les objets et tout ce qui provoquait une réinitialisation échouait parce que les objets existaient toujours. J'utilise toujours start() plutôt que OnStart() mais je ne suis pas sûr de la sagesse de cette méthode. J'ai l'intuition que je vais avoir des problèmes en cours de route. Faites-moi savoir ce qui se passe si vous décidez d'essayer mes suggestions. Nous, les développeurs, devons nous serrer les coudes :-)

 
Dadas:

Oh, et encore une chose :

Disons que je crée un rectangle avec un indice, basé sur certains calculs.

Les calculs sont à l'intérieur du start().

Pourtant, je ne vois pas mon rectangle après le démarrage de MT4, pas même sur les ticks.

Mais, après avoir réinitialisé l'indi ou changé de Tf, il est là.

Ce genre de choses ne s'est jamais produit auparavant !


comme je l'ai écrit plus haut, il y a un nouveau monde qui nous attend
Ne commencez-vous pas à utiliser "OnTick" (EA) ou "OnCalculate" (indicateur) ?
 
qjol:

comme je l'ai écrit plus haut, un nouveau monde est devant nous
ne "commencez" pas à utiliser "OnTick"


Ecoutez, MetaQuotes sort une plateforme qui, commele dit ProfessorMetal , est censée être rétrocompatible !

Je ne pense pas que quiconque soit capable de réécrire les milliers d'indicateurs, de scripts et d'EA déjà existants.

Pour ce qui est de vos suggestions selon lesquelles mes codes sont erronés, je ne suis pas d'accord, certains des labels sont juste les codes les plus simples.

Il n'y a rien pour eux, ils créent un objet label, calculent quelque chose, puis définissent l'objet en conséquence.

Il n'y a pas de philosophie spéciale attachée à :

  ObjectSet    ("Lot_Size_Label",OBJPROP_CORNER,Corner);

  ObjectSet    ("Lot_Size_Label",OBJPROP_XDISTANCE,XDistance);
  ObjectSet    ("Lot_Size_Label",OBJPROP_YDISTANCE,YDistance);
  ObjectSetText("Lot_Size_Label",comment,Font_Size,Font_Type,Font_Color);
  ObjectSet    ("Lot_Size_Label",OBJPROP_SELECTABLE,false); 

En ce qui concerne les scripts de clôture d'ordre et les EA, je parle de ceux qui fonctionnaient bien sur les Builds précédents (500).

Donc, ce n'est pas une question de codes corrects ou non.

C'est le problème de MetaQuotes qui fout tout en l'air !

Je vais essayer les conseils de ProfessorMetal ,mais qu'en est-il des utilisateurs qui n'y connaissent rien en codage ?

Et, franchement, ils ne sont même pas censés savoir coder !

Ils sont censés utiliser la plateforme de trading ! !!

 
ProfessorMetal:

Dadas,

Je suis un collègue développeur et je ne peux pas répondre à toutes vos questions. Je suis moi-même confronté à des problèmes de type PITA dans des applications que j'ai l'intention de commercialiser. Une chose que je suggère définitivement, est de remplacer au moins vos fonctions init et deinit par de nouvelles fonctions OnInit() et OnDeInit(). Vous pouvez également remplacer start par OnStart(). Selon la documentation, l'implémentation est censée être rétrocompatible, mais mon expérience prouve le contraire. J'ai eu une situation sur une de mes indies dans laquelle deinit() n'était pas appelé. Mon deinit() supprimait les objets et tout ce qui provoquait une réinitialisation échouait parce que les objets existaient toujours. J'utilise toujours start() plutôt que OnStart() mais je ne suis pas sûr de la sagesse de cette méthode. J'ai l'intuition que je vais avoir des problèmes en cours de route. Faites-moi savoir ce qui se passe si vous décidez d'essayer mes suggestions. Nous, les développeurs, devons nous serrer les coudes :-)


Merci, j'avais le même problème avec les objets qui n'étaient pas supprimés lors de la désinitialisation.

J'étais en train de développer une indi, et j'ai obtenu ces résultats étranges, puis j'ai vu sur la liste des objets, ils étaient toujours là.

J'ai contourné cela, probablement de la manière la plus simple, par ObjectDelete() dans le start().

Oui, en remplaçant init() par OnInit() et deinit() par OnDeinit(), les étiquettes sont revenues à la normale ! Merci !

Puis après un moment, plus rien ! !! Ils font toujours la même danse.

 

Si le code est le plus simple, sa mise en œuvre dépend vraiment des codes qui sont mis en œuvre. Il est nécessaire d'avoir un contrôle d' erreur aux points cruciaux de sorte que lorsque l'erreur se produit, l'indi/ea peut la gérer correctement. J'ai également eu des problèmes la dernière fois, mais une fois que j'ai mis les gestionnaires d'erreur, il fonctionne sans problème au point que vous avez oublié les problèmes qui se posent la dernière fois.


still, what about the users who don't know a thing about coding???

And, frankly speaking, they aren't even supposed to know anything coding!

They are supposed to be using the trading platform!!!

La plateforme est un metatrader, et est livrée avec tous les besoins de base, personne ne vous oblige à coder.

 

Tu sais ce qui a aidé à aligner les étiquettes ?

Mes coordonnées X,Y proviennent des externes.

extern int XDISTANCE =9;
extern int YDISTANCE =9;

Alors :

int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

Comme ça, ça fait bien les choses.

Ou plutôt, ça rend les choses mieux, mais pas exactement bien.

 
deysmacro:

Si le code est le plus simple, sa mise en œuvre dépend vraiment des codes qui sont mis en œuvre.


La plateforme est un metatrader, et est livrée avec tous les besoins de base, personne ne vous oblige à coder.


En quoi votre commentaire est-il censé aider qui que ce soit ???
 
int X,Y;

int OnInit()
  {
 X = XDISTANCE;
 Y = YDISTANCE;
 ObjectCreate("INSTR",OBJ_LABEL,0,0,0); 
 
    return(0);
  }

int start() {
        ObjectSet("INSTR",OBJPROP_CORNER,Corner);
        ObjectSetText("INSTR",Symbol_Period+Date_Time,FontSize, "Berlin Sans FB", Color);
        ObjectSet("INSTR", OBJPROP_XDISTANCE, X);
        ObjectSet("INSTR", OBJPROP_YDISTANCE, Y); 
        ObjectSet("INSTR", OBJPROP_SELECTABLE, false);   
   return(0);
  }

Vous ne mettez pas de fonction de recherche d'objet pour vérifier si l'objet existe déjà ou non. A partir de là, vous créez l'objet en conséquence.


How's your comment supposed to help anybody??? 

Je vous aide en ce moment.