Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 650

 

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

Toutes questions pour les débutants sur MQL4, aide et discussion sur les algorithmes et les codes

Taras Slobodyanik, 2018.10.07 09:47

Je l'écris à titre d'exemple).

si vous n'avez pas besoin de vous souvenir du symbole, vous risquez de ne pas le retenir

Si le nom ne sera qu'un identifiant de graphique, comment puis-je supprimer les variables inutiles ?
(avec un usage fréquent, il y aura beaucoup de variables)

Si pas de préfixe - même chose, comment supprimer les variables inutiles ?


=Jen'écris ceciqu'à titre d'exemple).

Si vous voulez développer un esprit non sophistiqué, c'est un bon exemple pour l'éducation :-)

=Si jene nomme que l'identifiant du graphique, comment supprimer les variables inutiles ?

Pourquoi les enlever ? Si, par exemple, vous voulez enregistrer uniquement le point, alors nom = préfixe+symbole est suffisant. Je pars du principe que je peux me contenter d'un seul GP - si j'effectue une seule opération de changement de trame sur un graphique, elle sera terminée avant que je ne passe au graphique suivant et là, la période est à nouveau interrogée et le GP est écrasé. Y a-t-il des écueils dans ce cas ?

 
Taras Slobodyanik:

mon code, mon code fonctionne, je ne peux pas voir ton code.
s'il vous plaît)

J'ai donc lancé votre script sur le graphique et la liste des variables globales est de 0.
 
inter78:
J'ai donc lancé votre script sur le graphique et la liste des variables globales est de 0.

voulez-vous vérifier ou voulez-vous conduire ?)
regarder la liste visuellement, c'est regarder les bits longs, comme les bits pour le doublage - il y a abracadabra, ou NaN

 
psyman:

Pourquoi les enlever ? Si, par exemple, vous n'avez besoin de stocker qu'un point, alors nom = préfixe + symbole est suffisant. Je suppose que je peux me contenter d'un seul GP - si j'effectue une seule opération de changement de trame sur le graphique, elle se termine avant que je passe au graphique suivant, et là, la période est réinterrogée et le GP est écrasé. N'y a-t-il pas d'écueils dans ce cas ?

tout dépend du but recherché

si l'indicateur (ou quoi que ce soit d'autre) fonctionne dans un cas, sur un symbole, et que personne d'autre ne fera les mêmes variables, alors, bien sûr, vous ne pouvez pas vous en préoccuper.

 
Taras Slobodyanik:

voulez-vous vérifier ou conduire ?)
regarder la liste visuellement c'est regarder les bits longs, comme les bits pour le doublage - il y a abracadabra, ou NaN

C'est-à-dire que si je comprenais maintenant ce que vous venez de m'écrire, je ne m'embêterais pas avec vous. C'est juste que ma connaissance de la programmation tend vers zéro. Mais si je pouvais fourrer ChartID dans des variables globales sans distorsion, je serais heureux. Merci.
 

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

Toutes les questions des débutants sur MQL4, aide et discussion sur les algorithmes et les codes

Taras Slobodyanik, 2018.10.06 21:47

      string name=prefix_gv+"Price_"+IntegerToString(num,4,'0');
      if (GlobalVariableCheck(name) || GlobalVariableTemp(name))
         GlobalVariableSet(name, Line_ALL[i].price);
      

Comment faire pour que la variable name se voie attribuer une valeur de chaîne de texte et queLine_ALL[i].price s'y inscrive également, mais en tant que GP ?

En théorie, le nom devrait simplement l'écraser.

UPD

Je pense que j'ai trouvé - j'ai besoin d'une variable simple pour stocker le nom du GP. Le nom de la variable peut être le même. N'est-ce pas ?

 
psyman:

Expliquez la partie délicate : on attribue à name une valeur de chaîne de texte et ensuite on écritLine_ALL[i].price à cet endroit,mais comme un GP ?

En théorie, les noms devraient simplement être écrasés.

UPD

Je pense que j'ai compris - j'ai besoin d'une variable simple pour stocker le nom du GP. Le nom de la variable peut être le même. N'est-ce pas ?

Dans lenom de la variable, un nom (textuel) est créé, puis une Variable Globale est créée avec ce nom et la valeur est écrite dans ce GP.
c'est-à-dire qu'une liste de GPs est générée et qu'une partie du tableau y est stockée

1

 
inter78:
Si je comprenais ce que vous venez d'écrire, je ne vous dérangerais pas. C'est juste que ma connaissance de la programmation tend vers zéro. Mais si je pouvais fourrer ChartID dans des variables globales sans distorsion, je serais heureux. Merci.

mon code écrit le longChartID dans une variable globale temporaire.

Visuellement, si vous appuyez sur F3, le zéro (ou une autre valeur différente) est affiché à cet endroit.
Cela se produit parce que le terminal pense qu'il s'agit d'une valeur double et essaie de l'afficher, mais nous avons glissé un long - qui est un format de nombre complètement différent.

Si cette valeur est relue comme un double normal, ce sera un désordre.
S'il est lu par mon code, il sera à nouveau long (le même que celui que nous avons sauvegardé).
Si vous cliquez manuellement sur cette variable dans la fenêtre du terminal, elle sera réinitialisée car le terminal détectera le swap.

 
Taras Slobodyanik:

Un nom est créé dans lenom de la variable (textuel), puis une variable globale est créée avec ce nom et une valeur est écrite dans cette GP.
c'est-à-dire qu'une liste de GPs est générée et qu'une partie du tableau y est stockée


Mais cette condition.

GlobalVariableCheck(name) || GlobalVariableTemp(name)

pour quoi faire ?

La définition même "GlobalVariableTemp tente de créer une variable globale temporaire" n'est pas claire pour moi.

Pourquoi essayer de créer alors que GlobalVariableSet le fait ?

UPD

Mettez-le dans OnInit :

   string   GV_prefix="ZZ_";
   string   ctime=GV_prefix+_Symbol+"_"+ChartID();
   GlobalVariablesDeleteAll(NULL, 0);
    if (GlobalVariableCheck(ctime) || GlobalVariableTemp(ctime))
      GlobalVariableSet(ctime, Period());

Appel dans OnChartEvent :

if(GlobalVariableGet(ctime)!=Period()) 

La réponse que j'obtiens est 'ctime' - identifiant non déclaré.


 
psyman:

Mais cette condition.

Pourquoi ?

GlobalVariableCheck()- vérifie si une telle variable existe déjà, si non
GlobalVariableTemp()- crée une variable temporaire, qui sera supprimée d'elle-même au prochain lancement.

psyman:

UPD

Je l'ai écrit dans OnInit :

Je l'appelle dans OnChartEvent :

En réponse, j'obtiens 'ctime' - identifiant non déclaré.

la chaîne de caractères doit être déplacée au-dessus de OnInit, vers les variables de code globales.

ou ajouter àOnChartEvent

string   GV_prefix="ZZ_";
string   ctime=GV_prefix+_Symbol+"_"+ChartID();
Raison: