[ARCHIVE] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Nulle part sans toi - 3. - page 489

 
DOCTORS:


Je suppose que mes fonctions cérébrales se sont partiellement détériorées après les vacances, ce qui se traduit par un faible niveau d'auto-évaluation :(

Le point est un peu différent :

1. Dès que le conseiller-expert démarre, j'attribue la valeur initiale du dépôt à une variable (je cherche la fonction d'attribution, bien que je puisse bien sûr l'écrire manuellement dans les paramètres initiaux, mais on m'a déjà reproché mes piètres compétences en programmation, mais je veux faire comme une personne blanche).

2. Comme mon système est astucieux, et ne fonctionne qu'avec un seul lot, la valeur initiale du lot (disons) 1,0 ...

3. et la question principale - je veux qu'après chaque transaction rentable, le dépôt soit comparé à l'original, et si la nouvelle valeur (disons) était supérieure à 30%, je change la valeur de la taille du lot par 0,1, c'est-à-dire 1,0 +0,1, et ainsi de suite constamment (clairement la nuance que constamment doit changer l'ancienne valeur de la variable, et encore l'opérateur d'affectation de la valeur variable du dépôt).

Bref, ça se passe comme ça.


Dans la bibliothèque, voyez les outils de gestion de volume par I. Kim et d'autres versions, y compris la version du manuel que je vous ai donnée - quand vous comprendrez comment ils fonctionnent, il ne sera pas difficile de faire le vôtre, ce qui est exactement ce dont vous avez besoin... C'est comme ça. Sans elle - pas question - la pratique et la résolution de problèmes typiques - IMHO, avant tout. Voir la bande-annonce - caractéristiques de la gestion du capital par Igor Kim.
Dossiers :
b-lots.mqh  3 kb
 
sss2019:

Le descripteur de fichier est-il toujours supérieur à zéro lorsque l'ouverture est réussie ?

Veuillez voir si la logique de ce code, qui ouvre le fichier pour l'écriture

faux, et qui fermerait un dossier après sa création s'il n'y en a pas ?

et le terminal vous donnera une erreur d'ouverture dans ce cas, il est donc préférable de vérifier la présence du fichier avec le drapeau FILE_CSV|FILE_READ, dans ce cas, s'il n'y a pas de fichier, le terminal sera silencieux.

 
FAQ:

faux, et qui fermera le dossier après sa création s'il n'y a pas de dossier ?

Et puis, le terminal vous donnera une erreur d'ouverture dans ce cas, donc il vaut mieux vérifier le fichier avec le flag FILE_CSV|FILE_READ, dans ce cas s'il n'y a pas de fichier, le terminal sera silencieux.


Eh bien, il est là. Si le fichier était ouvert

  if(Handle >0)
  FileClose(Handle);

J'ai fait un enregistrement dans le fichier, mais le délimiteur à la fin n'est pas ajouté, et le tutoriel dit qu'il est ajouté automatiquement.

FileWrite(Handle,"Pair, Min, Max, Open, Close, Moment");
 

Et si elle n'existait pas, vous la créez et ne la fermez pas. ou alors si vous avez une fermeture supplémentaire (ci-dessous dans le code)

Quant au délimiteur, quel que soit le délimiteur avec lequel vous ouvrez le fichier (au lieu de le créer), il sera le même.

 


Hehe, c'est un avatar à thème. :)

2 Roman - merci, nous allons nous pencher sur la question.

 

FAQ:

Et si elle n'était pas là, vous la créez et ne la fermez pas. ou alors si vous avez une fermeture supplémentaire (ci-dessous dans le code)

le séparateur - quel que soit le séparateur avec lequel vous ouvrez le fichier (vous ne le créez pas), ce sera le même


Alors pourquoi est-ce redondant, je ne comprends pas, si je ne le ferme pas immédiatement, alors je le ferme plus tard. Veuillez me montrer un exemple de la façon dont on l'ouvre et le ferme correctement.

 
Veuillez m'indiquer comment faire apparaître le signal d'alerte dans l'indicateur, une seule fois sur la barre actuelle. J'ai essayé de faire une variable, et tant que cette variable a la valeur 0 le signal est autorisé, dès que le signal est déclenché la variable prend la valeur 1. Mais ça ne marche pas.
 
sss2019:
Veuillez m'indiquer comment faire apparaître le signal d'alerte dans l'indicateur, une seule fois sur la barre actuelle. J'ai essayé de faire une variable, et tant que cette variable a la valeur 0 le signal est autorisé, dès que le signal est déclenché la variable prend la valeur 1. Mais ça ne marche pas.

https://docs.mql4.com/ru/basis/variables/static
 
sss2019:
Veuillez m'indiquer comment faire apparaître le signal d'alerte dans l'indicateur, une seule fois sur la barre actuelle. J'ai essayé de créer une variable et tant que cette variable a la valeur 0 le signal est autorisé, dès que le signal a retenti la variable prend la valeur 1. Mais ça ne marche pas.
Dossiers :
 
sss2019:
Veuillez m'indiquer comment faire en sorte que l'alerte n'apparaisse dans l'indicateur qu'une seule fois sur la barre actuelle. J'ai essayé de créer une variable et tant que cette variable a la valeur 0 le signal est autorisé. Dès que le signal a été émis la variable prend la valeur 1. Mais ça ne marche pas.


Je crée généralement une variable LastBarAlert et j'y écris Time[0] lorsque l'alerte est déclenchée.

Et ensuite élémentaire, l'alerte est affichée si LastBarAlert!=Time[0]

if (Signal && LastBarAlert!=Time[0]){
  Alert('Signal detected');
  LastBarAlert=Time[0];
}
Raison: