Erreurs, bugs, questions - page 1018

 
Renat:

Etes-vous sûr des paramètres ?

Les deux exemples sont faux :

On dirait qu'il y a confusion avec ChartSetInteger ?

Oui, désolé, mal traduit de mon code - ne fonctionne pas en dehors du temps de trading.
bool bringToTop = true;
ChartSetInteger( chart_ID, CHART_BRING_TO_TOP, 0, bringToTop ) 
ChartSetInteger( chart_ID, CHART_BRING_TO_TOP, true )
//этим хотел показать что пробовал оба варианта
ChartGetInteger et ne devrait pas fonctionner, car CHART_BRING_TO_TOP- écriture seulement. Je vais corriger l'application au ServiceDesk.
 

Je fais un retracement (avec une pause de 5000) de tous les graphiques :

a) (hier) jour de repos - pas de réaction - lors du déchargement, le script passe au premier graphique, même si le script n'a pas été lancé à partir de celui-ci.

b) maintenant - tout fonctionne correctement

Si nécessaire - je joindrai le code - une simple boucle - GetLastError - aucune erreur

 

Je ne sais pas si c'est important, mais...

ChartSetInteger( chart_ID, CHART_BRING_TO_TOP, true )
ChartSetInteger( chart_ID, CHART_BRING_TO_TOP, false )
maintenant (au moment du trading) fonctionnent de la même manière - le graphique est placé au-dessus des autres
 

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Bugs, bugs, questions

Renat, 2013.07.22 09:22

Etes-vous sûr des paramètres ?

Les deux exemples sont faux :

ChartGetInteger( chart_ID, CHART_BRING_TO_TOP, 0, true )  - последний параметр должен быть long&, а не bool
ChartGetInteger( chart_ID, CHART_BRING_TO_TOP, true )     - последний параметр должен быть номер подокна, а не bool

On dirait qu'il y a confusion avec ChartSetInteger ?

Si mon erreur est confirmée et que les modifications seront apportées - je demande également d'envisager de faire en sorte que CHART_BRING_TO_TOP ne soit pas seulement en écriture, mais aussi en lecture comme vous l'avez écrit à travers ChartGetInteger.
long ChartID()
ne peut pas aider dans ce cas, puisque ce dernier ne renvoie pas à proprement parler la sélection courante, mais celle à partir de laquelle le script est exécuté. Et au cours du processus d'exécution du script, l'utilisateur peut modifier l'actuel.
 
MetaDriver:

Seulement des tas et des tas de .mqh et un exécutable .mq5, rien d'autre.

Permettez-moi d'ajouter. L'avantage de l'approche absolue et modulaire par rapport à l'approche relative est que dans le cas de
Print( __FUNCTION__, __FILE__ )

S'il n'y a qu'un seul module .ex5, on ne sait pas lequel chercher parmi les nombreux modules .mqh, ce qui fait une grande différence étant donné la taille importante du code.

Veuillez également demander aux développeurs :

Est-il possible d'introduire une macrosubstitution prédéfinie supplémentaire __MODULE__ analogue à __FILE__ - mais sans l'extension .mq5?

Ceci est nécessaire pour compiler une expression de la forme suivante : __MODULE__::f()

Cette fonction est souvent utilisée pendant le développement pour changer les noms de fichiers et transférer des fonctions d'un module à l'autre.

 
A100:
J'ajouterai. L'avantage de l'approche modulaire absolue, par rapport à l'approche relative, est que lorsqu'elle émerge de

il n'est pas clair dans quel module chercher la fonction, et s'il n'y a qu'un seul .ex5, il n'est pas clair dans quel .mqh, ce qui fait une grande différence lorsque le code est volumineux.

Tu délires, mon frère.

h1.mqh :

string GetH1()
{
  return  "Файл: "+__FILE__+"   Функция: "+__FUNCTION__;
}

h2.mqh :

string GetH2()
{
  return  "Файл: "+__FILE__+"   Функция: "+__FUNCTION__;
}

PrintTest, mq5 :

#include "h1.mqh"
#include "h2.mqh"

void OnStart()
  {
   Print( "Файл: "+__FILE__+"   Функция: "+__FUNCTION__);
   Print(GetH1());
   Print(GetH2());
  }
//+------------------------------------------------------------------+

Résultat :

2013.07.22 14:40:17 PrintTest (EURUSD,M1) Fichier : h2.mqh Fonction : GetH2
2013.07.22 14:40:17 PrintTest (EURUSD,M1) Fichier : h1.mqh Fonction : GetH1
2013.07.22 14:40:17 PrintTest (EURUSD,M1) Fichier : PrintTest.mq5 Fonction : OnStart

---

Veuillez tirer une conclusion pour vous-même : "Avant de développer des définitions imbriquées grandioses, il est bon de comprendre comment le préprocesseur fonctionne réellement".

Bonne chance à vous !

Dossiers :
h1.mqh  1 kb
h2.mqh  1 kb
PrintTest.mq5  1 kb
 
MetaDriver:

Veuillez conclure : "Avant de concevoir des définitions grandioses et multi-imbriquées, il est bon de comprendre comment le préprocesseur fonctionne réellement.

Consacrez-y du temps et des efforts. Vous devez en savoir plus sur le chantier et les propriétés des matériaux pour construire des structures solides et confortables.

Votre esprit est très sophistiqué et réfléchi, mais en lui faisant ingurgiter vos propres conclusions hâtives, vous êtes condamné à prendre souvent de mauvaises décisions.

 
MetaDriver:

Votre esprit est très sophistiqué et réfléchi, mais en le nourrissant de vos propres conclusions hâtives, vous êtes condamné à prendre souvent de mauvaises décisions.

Puis-je me joindre à votre Padawan ? :)
 
TheXpert:
Puis-je me joindre à votre Padawan ? :)

Y a-t-il de l'argent ? :))

--

Mais ne plaisantons pas :

Il est dommage qu'il n'y ait presque aucun fil de discussion sur ce forum consacré à la structuration judicieuse des programmes. Une structure harmonieuse est la clé du développement sans problème de grands systèmes.

Comment encourager les gens à discuter de telles choses ?

 
MetaDriver:

Le résultat :

Oui, merci - j'étais pressé - je n'ai pas étudié la question à fond - j'ai confondu avec WindowExpertName() dans MQL4 - il donnait toujours le nom du module compilé - c'est le stéréotype que j'ai obtenu.