Erreurs, bugs, questions - page 2448

 

L'historique de la transaction n'est pas affiché de manière très pratique si la fermeture partielle de la position s'est produite par un ordre en attente qui a été placé avant l'ouverture de la transaction.

2019.04.25 à 10.01.00, une position a été ouverte sur le marché avec le volume de 8 lots, qui a été partiellement fermée par 1 lot à 10:04 - le rapport n'est pas informatif sous cette forme.

Il serait plus raisonnable de donner des informations à partir de la date de la première transaction, en sélectionnant les ordres qui se forment et en les modifiant, au moins comme une variante supplémentaire du rapport pour la commodité de la perception.

J'y ai prêté attention parce que je ne comprenais souvent pas pourquoi une clôture partielle avait lieu - je n'ai pas eu le temps de supprimer l'ordre en suspens avant la fermeture du marché hier.

 

Quelque chose a été cassé dans le débogage sur les données historiques. Maintenant, chaque fois que le débogage est lancé, les paramètres de l'EA sont modifiés par défaut s'ils ont été modifiés manuellement.

Dans le code

 input int Magic = 1; // Magic number

Dans les paramètres modifiés (veuillez ignorer la faute de frappe.)

après le début du débogage sur l'historique, la valeur des données est réinitialisée par défaut.


 
Nikolai Semko:

Andrey, je ne comprends pas les profils.

Les profils sont comme des ensembles pour tout un troupeau d'EA.

Vous pouvez modifier certains de leurs paramètres en recherchant et en remplaçant tous les fichiers de profil (il existe des utilitaires pour cela).

Gestionnaire primitif, permet d'exécuter plusieurs EAs en même temps.

 

les gars, à l'aide, s'il vous plaît)

J'ai créé un panneau et un bouton dedans, mais quelque chose ne va pas, le bouton se déplace le long d'un des axes en haut, mais suit le panneau.

c'est-à-dire que soit vous devez faire un binding angle bind correct, soit il vous manque la bonne commande pour lier le bouton au panneau...

 

Quel est ce logiciel qui n'utilise qu'un langage grossier ? !

Partout où l'on regarde, tout passe par la roue de secours !

J'ai décidé de télécharger MT5 et d'essayer de créer mon propre symbole (une telle fonction est annoncée)... Mince, j'ai pris un CSV des futurs et j'ai décidé de le sortir... Cette création pratique, pour une raison quelconque, met le volume dans CLOSE, ce qu'elle finit par se reprocher : le prix de clôture est supérieur au prix élevé. Comment expliquer à ce logiciel, qu'il s'agit d'une colonne de volume, alors qu'il n'y a pas de boutons ou de champs à choisir ! Comment la fonction d'importation CSV pourrait-elle ne pas prévoir une chose élémentaire ?

 
xaser:

Quel est ce logiciel qui n'utilise qu'un langage grossier ? !

Partout où l'on regarde, tout passe par la roue de secours !

J'ai décidé de télécharger MT5 et d'essayer de créer mon propre symbole (une telle fonction est annoncée)... Mince, j'ai pris un CSV des futurs et j'ai décidé de le retirer... Cette création pratique, pour une raison quelconque, met le volume dans CLOSE, ce qu'elle finit par se reprocher : le prix de clôture est supérieur au prix élevé. Comment expliquer à ce logiciel, qu'il s'agit d'une colonne de volume, alors qu'il n'y a pas de boutons ou de champs à choisir ! Comment ont-ils pu ne pas prévoir des choses élémentaires dans la fonction d'importation CSV ?

Vous avez plusieurs erreurs dans votre code.

Pourquoi blâmer le miroir...


 

(MQL4) veuillez me conseiller sur le code à utiliser dans ce cas pour fermer toutes les positions ouvertes en appuyant sur le bouton ? (les commandes ouvertes fonctionnent à partir de ce code).

Ou peut-être que cela devrait être fait séparément par Void ou une autre commande ?


         
         if (id==CHARTEVENT_OBJECT_CLICK) {
       
         if (sparam=="buttonbuy") {
          OrderSend(Symbol(), OP_BUY, lots, Ask, 3, 0, 0, "Opened by Advisor", 0, 0, clrBlue); //add your buy order here
         } 
         if (sparam=="buttonsell") {
               OrderSend(Symbol(), OP_SELL, lots, Bid, 3, 0, 0, "Opened by Advisor", 0, 0, clrYellow); //add your sell order here
         }
         if (sparam=="buttoncloseall") {
            
                         
         }                                                                    
      }

  }
 

Veuillez faire en sorte qu'il soit possible d'attribuer des alias à chaque compte dans le terminal, de sorte qu'au lieu de numéros secs de numéros de compte, vous puissiez leur donner des noms humains qui seraient affichés dans l'en-tête du terminal, par exemple :

"Mon compte préféré."

"Compte d'investisseur Trump."

"Le Martin de l'enfer".

"Je ne fais que m'amuser."

"Pas honteux du signal."

"Un signal dont il faut avoir honte."


Et vous ne vous perdrez pas dans la multitude de terminaux et de comptes courants.

Alias au lieu de numéros de compte

 
fxsaber:

La chose la plus élémentaire est de donner un aperçu de vous-même. Un chemin vers le soi est donné. Hash - pour une raison ou une autre, il est serré.

Au fait, je soutiens cette chose vraiment utile.J'ai aussi souvent besoin d'un contrôle de version des résultats sauvegardés dans des fichiers, c'est-à-dire de garantir que tous les fichiers sont créés par la même version du programme. Maintenant, pour cela, je dois prendre soit le temps de compilation, soit un numéro de version, défini manuellement (et donc sans garantie d'identité). Par exemple, si vous changez quelque chose dans un includnik, cela signifie que de facto une nouvelle version de l'exécutable, et vous ne devez pas oublier de définir un nouveau numéro de version, en général, ce n'est pas fiable.

Quelqu'un ici a conseillé de calculer le hachage à partir des sources. Donc, pour ce faire, vous devez connaître toutes les sources (includniks), utilisé par le programme, ce qui signifie que vous avez besoin de pars le code n'est pas enfantin. Ils ne sont pas nécessairement spécifiés sous forme explicite (#include <file.mqh>), et peuvent être mis sous la forme de macros.

 
Alexey Navoykov:

Quelqu'un ici a conseillé de calculer le hash à partir des sources. Donc pour cela il faut connaître toutes les sources (includniki) utilisées par le programme, ce qui signifie qu'il faut parcourir le code à fond. Elles ne sont pas forcément spécifiées explicitement (#include <file.mqh>), mais peuvent être spécifiées sous forme de macros.

Eh bien, si quelque chose dépend des macros, alors pour changer le résultat il faut changer les macros, c'est-à-dire la source. J'ai donné lecture de toutes les dépendances de include-ums dans l'article. Là, d'ailleurs, les commentaires sont supprimés, ce qui laisse le code brut.

#property script_show_inputs

input string SourceFile = "filename.txt";
input string IncludesFolder = "";
input bool LoadIncludes = false;

void OnStart()
{
  Preprocessor loader(SourceFile, IncludesFolder, LoadIncludes);
  
  if(!loader.run())
  {
    Print("Loader failed");
    return;
  }

  // output entire data as it is assembled from one or many files
  int handle = FileOpen("dump.txt", FILE_WRITE | FILE_TXT | FILE_ANSI, 0, CP_UTF8);
  FileWriteString(handle, loader.text().get());
  FileClose(handle);
}
Mais je suis d'accord qu'il est plus pratique de tout avoir dans l'éditeur lui-même plutôt que manuellement.
Raison: