Erreurs, bugs, questions - page 611

 
x100intraday:

J'ai peur d'imaginer comment. En fait, j'ai besoin d'une variante flexible, je n'ai pas besoin d'une seule chaîne sous forme inchangée, mais de plusieurs chaînes différentes à former, en boucle... Si c'est possible, j'aimerais voir un exemple plus précis...

...

Il est possible de former des conditions plus compliquées dans #define en une seule ligne :

#define LOG(text,logs,html,type,spc,style)  if(type){if(logs){okLOG(text,spc);}if(html){okHTML(text,spc,style);}}  if(!type){if(logs){erLOG(text,spc);}if(html){erHTML(text,spc,style);}}

Je ne sais pas comment résoudre votre problème, je n'ai pas essayé. Je vais devoir expérimenter... ))

Vous pouvez peut-être former plusieurs #define comme ceci et ensuite choisir ce dont vous avez besoin dans une boucle.

De la chaîne à l'énumération, vous pouvez préparer la fonction avec le commutateur à l'avance. Mais vous pouvez avoir un très grand nombre d'options, apparemment, et cette méthode ne fonctionnera pas...

Oh, voilà une autre option ! Vous pouvez générer un fichier mqh, qui est préconnecté au fichier principal. En d'autres termes, il devrait y avoir une fonction qui accepte une chaîne de caractères et génère ensuite un fichier mqh. Le fichier sera écrasé en permanence. C'est exactement comme ça que ça fonctionnerait.))))

 

tol64, l'option #define me donne des sueurs froides... Je ne conteste pas le fait que je puisse probablement travailler là où il le faut, mais cela se situe quelque part dans l'Olympiade de la programmation en utilisant des moyens non standard - ne serait-ce que pour obtenir le résultat à tout prix. J'ai rejeté la méthode du commutateur pour la même raison que celle décrite ci-dessus : je ne veux pas ajouter de gros blocs de code supplémentaires pour une tâche idéologiquement élémentaire. Il me semble qu'il devrait y avoir un moyen standard assez simple... Sinon, je commence à me sentir comme un hacker qui essaie de pirater le système et d'obtenir le résultat souhaité de manière sophistiquée...

Il y a une question cruciale en l'air : est-il possible et comment accéder élément par élément à la liste standard des mêmes périodes de temps, à la liste de la visibilité des objets sur les périodes de temps, etc. Jusqu'à présent, je dois remplir manuellement le tableau par force brute, puis récupérer ce dont j'ai besoin par index :

ENUM_TIMEFRAMES TFsArr[3]={PERIOD_M15, PERIOD_M20, PERIOD_M30);
Combien de temps encore ? Peut-être pouvez-vous retirer ces éléments du tableau/de la liste prédéfini(e) en une seule fois ? C'est une chose si je n'ai pas assez de connaissances... mais je n'ai encore jamais rencontré quelqu'un qui accède à des ressources prédéfinies dans le code de quelqu'un d'autre sans avoir préalablement bourré le coussin de copies de plumes...
 
x100intraday:
Comment puis-je préparer à l'avance une chaîne avec une énumération logique ( ?) comme : OBJ_PERIOD_M10| OBJ_PERIOD_H4, pour ensuite simplement substituer dans ObjectSetInteger () une variable prête sous forme de chaîne collée ? J'ai essayé de le coller symboliquement et ensuite de l'envelopper dans StringToInteger(), mais cela n'a pas fonctionné... Parce queOBJ_PERIOD_... - est un élément de type enum mais a le drapeau équivalent hexagonal de type int? Alors cette énumération ressemble plus à une opération OU par bit...
Vous pourriez juste les additionner, quelque chose comme ça :
ObjectSetInteger(0,highlevel,OBJPROP_TIMEFRAMES,(int)OBJ_PERIOD_M10+(int)OBJ_PERIOD_H4);

...c'est-à-dire en ajoutant les enums nécessaires à la variable int.

 

Des écarts d'une ampleur irréaliste :

Sur le serveur AlpariFS GBPUSD 648, USDCHF 110

GBPUSD 168, USDCHF 185 sur le serveur MQ-Demo

les autres symboles sont dans la norme.

Est-ce une particularité du marché fin ou un bug de MetaTrader 5?

La livre semble s'être calmée maintenant, mais les spreads sur le canadien et l'australien sont de 88 et 61 respectivement. Le Suisse est toujours coincé avec un écart de 185 pips.

void OnStart()
  {
   while(!IsStopped()){Comment(SymbolInfoInteger(_Symbol,SYMBOL_SPREAD));Sleep(100);}
   Comment("");
  }
 
Swan:
Vous pouvez simplement les additionner, c'est comme ça que ça marche :

c'est-à-dire en ajoutant les enums souhaités à la variable int.

D'où proviennent les enums ? Ils sont en quelque sorte intégrés à la langue en tant que mots/valeurs prédéfinis (réservés). Je ne veux pas avoir mon propre tableau de doublons d'enums.
 
x100intraday:

Comment puis-je faire précéder une chaîne de caractères d'une énumération logique ( ?) comme : OBJ_PERIOD_M10| OBJ_PERIOD_H4

Alors cette énumération ressemble plus à une opération de type OR bitwise...

Ça ne ressemble pas à ça. C'est ce que c'est.

D'où viennent les enums ? Ils sont en quelque sorte intégrés à la langue sous la forme de mots/valeurs prédéfinis (réservés).

A partir des enums, bien sûr. Regardez dans l'aide.

Je ne veux pas créer mon propre tableau de doublons d'enums.

il faut au moins avoir quelque chose... des enums, des tableaux, des définitions.

sinon, vous n'irez pas plus loin que ça.

 
sergeev:

Ça ne ressemble pas à ça. C'est ce que c'est.

à partir des enums, bien sûr. Regardez dans l'aide.

Vous devrez faire quelque chose à ce sujet. Enums, tableaux, définitions.

Vous n'irez pas plus loin que ça.

Si vous voulez le commencer, c'est bien, c'est déjà fait. Mais pourquoi ne pouvons-nous pas accéder au référentiel d'éléments de liste intégré au langage sous la forme de noms et de constantes prédéfinis ? Les développeurs ont caché quelque part toutes ces énumérations...
 
x100intraday:
D'où viennent les enums ? Ils sont en quelque sorte intégrés à la langue en tant que mots/valeurs prédéfinis (réservés). Je ne veux pas créer mon propre tableau de doublons d'enums.

ne comprennent pas la question)

ENUMs = entiers, pas de tableau/liste prédéfini.

 
Swan:

ne comprennent pas la question)

ENUM_es = entiers, pas de tableau/liste prédéfini.

ENUM_y = est un enum. Une liste prédéfinie.
 
x100intraday:
Mais pourquoi ne pouvons-nous pas accéder à un référentiel d'éléments de liste intégré au langage sous la forme de noms et de constantes prédéfinis ? Où les développeurs ont-ils mis toutes ces énumérations...

Vous utilisez le même ENUM_TIMEFRAMES. Qu'est-ce que ça peut vous faire ?