[Archive] Toute question de débutant, afin de ne pas encombrer le forum. Professionnels, ne passez pas à côté. Je ne peux aller nulle part sans toi - 2. - page 228

 
artmedia70:

Tout dépend si cette variable est disponible pour toutes les fonctions EA (enfin... pas toutes, mais certaines, c'est sûr). Alors la variable est globale.

S'il n'est utilisé que dans une seule fonction, il est alors local.

La question est du genre "dans quelle eau mettre les fleurs, eau plate ou eau sucrée" ... Pendant que vous deviniez, les fleurs sont devenues un balai... :))

:о)

J'ai en quelque sorte compris ces règles, mais en pratique, mes commandes ne fonctionnaient pas, alors pendant que je cherchais le problème, j'ai essayé beaucoup de variantes et déplacé des variables vers le global, comme les statiques, mais tout cela a fonctionné, même si je n'ai qu'une seule fonction. Bien que je ne sois toujours pas sûr que ce soit la raison. Je suis confus et j'ai décidé de poser la question ici. Vous n'avez rien dit sur les variables statiques. On devrait peut-être les faire comme ça ? Je ne comprends pas, lorsque vous réintroduisez le départ (sur un tick, par exemple) les variables sont réinitialisées ? Et les statiques ne le font pas ? Si oui, mes tics deviennent-ils nuls ?

PS Merde, j'ai commencé à programmer de près, je suis en train d'écrire un graal....., s'il y a assez d'herbe...., on dirait que je suis un habitué ici maintenant :))

 
drknn:
Si votre société de courtage a des spreads flottants, il est préférable d'utiliser la détermination automatique de la taille du spread dans la fonction de démarrage de l'EA et de fixer le slippage à trois spreads, par exemple. Le glissement devient alors dynamique.
C'est une excellente idée, je devrais essayer. Merci.
 
artmedia70:
Essayez d'abord de faire dépendre le slippage de la volatilité. Dans un marché calme, elle sera minime, dans un marché rapide, elle s'étendra plus largement.

Je crains que lorsque vous travaillez sur H1, il sera difficile de calculer la volatilité pour une seule bougie, vous devez réfléchir à la façon de la calculer.
 
Fam:

:о)

J'ai compris cette théorie, mais en pratique, mes commandes n'ont pas fonctionné et en cherchant le problème, j'ai essayé beaucoup de variantes et déplacé des variables vers le global comme le statique, mais tout a fonctionné, bien que la fonction soit la même. Bien que je ne sois toujours pas sûr que ce soit la raison. Je suis confus et j'ai décidé de poser la question ici. Vous n'avez rien dit sur les variables statiques. On devrait peut-être les faire comme ça ? Je ne comprends pas, lorsque vous réintroduisez le départ (sur un tick, par exemple) les variables sont réinitialisées ? Et les statiques ne le font pas ? Si oui, mes tics deviennent-ils nuls ?

PS Mince, j'ai commencé à programmer de près, je suis en train d'écrire le graal....., si l'herbe est suffisante...., il semble, je suis un habitué ici maintenant :))


Une variable locale est une variable déclarée à l'intérieur d'une fonction. La portée des variables locales est le corps de la fonction dans laquelle la variable est déclarée. Une variable locale peut être initialisée avec une constante ou une expression, correspondant à son type.

Une variable globale est une variable déclarée en dehors de toutes les fonctions. La portée des variables globales est l'ensemble du programme. Une variable globale n'est pas localisée à un quelconque niveau. Une variable globale ne peut être initialisée que par une constante correspondant à son type (mais pas par une expression). Les variables globales sont initialiséesune seule fois avant l'exécution des fonctions spéciales.

Si le contrôle d'un programme se trouve à l'intérieur d'une fonction, les valeurs des variables locales déclarées dans une autre fonction ne sont pas disponibles. La valeur de n'importe quelle variable globale est disponible à partir de n'importe quelle fonction spéciale et utilisateur.

Variable statique

Au niveau physique, les variables locales sont représentées dans la zone de mémoire temporaire de la fonction respective. Il existe un moyen de localiser une variable déclarée dans une fonction dans la mémoire permanente du programme. Pour ce faire, lors de la déclaration d'une variable, le modificateur static doit être spécifié avant le type de variable :

Les variables statiques ne sont initialisées qu'une seule fois. Chaque variable statique peut être initialisée avec une constante correspondant à son type (contrairement à une simple variable locale, qui peut être initialisée avec n'importe quelle expression). En l'absence d'initialisation explicite, une variable statique est initialisée avec zéro. Les variables statiques sont stockées dans une zone permanente de la mémoire du programme etleurs valeurs ne sont pas perdues lorsque la fonction est quittée. En même temps, les variables statiques ont une limitation inhérente aux variables locales - la portée d'une variable statique reste la fonction dans laquelle cette variable est déclarée, contrairement aux variables globales dont les valeurs sont accessibles de n'importe quel endroit du programme.

https://book.mql4.com/ru/variables/types

 
C'est assez explicite. Il s'avère que si l'on invente une variable statique, dont les valeurs ne sont pas perdues lorsque la fonction sort, alors toutes les autres variables perdent leurs valeurs à chaque tick ? (si START est appelé à chaque tic)
 
Fam:
C'est assez clair. Il s'avère que si nous inventons une variable statique, dont les valeurs ne sont pas perdues à la sortie de la fonction, alors toutes les autres variables perdent leurs valeurs à chaque tick ? (si START est appelé à chaque tic)

Les variables locales sont réinitialisées à chaque tic.

Ne vous en faites pas - utilisez Global pour stocker les billets et oubliez-le. Ou faites un tableau (comptabilité des commandes). Tous les tableaux sont statiques par défaut.

 
Merci, je l'ai fait. Je veux juste savoir ce qu'il en est. Savez-vous comment obtenir une qualité de simulation élevée et un faible décalage des graphiques ? J'ai l'impression que cela ne dépend pas de moi ou du programme, mais du mauvais temps (ou du bon, il faut le découvrir). Comment le logiciel peut-il ne pas bien simuler, je ne comprends pas, le facteur "humain" ?
 
ZZZEROXXX:

Je crains que lorsque l'on travaille sur H1, il sera difficile de calculer la volatilité pour une seule bougie, nous devons réfléchir à la façon de la calculer.
L'amplitude moyenne sur 18 mesures est claire
 

Bonjour à tous !

Pouvez-vous m'aider à répondre à cette question ?

J'essaie d'obtenir la valeur exacte de l'ouverture(Open[i]) ou de la fermeture(Close[i]) de la paire de devises EURUSD avec une valeur à cinq chiffres après zéro, mais en réponse, j'obtiens toujours une valeur arrondie !

 
arrondis à combien de chiffres après zéro ? Si les chiffres après zéro sont supprimés, vous essayez d'affecter une valeur de prix à une variable entière, le double est nécessaire.
Raison: