OnDeinit dans les indicateurs - page 4

 
eevviill:
OK. Deinit ne fait pas non plus la mise à zéro.

Vous n'avez toujours pas répondu à la question, que voulez-vous dire par mettre à zéro les tampons ?

Le terminal client ne met pas à zéro le contenu des tampons indicateurs. La mise à zéro doit être assurée par le programmeur.

Les tampons sont vidés automatiquement lorsque l'indicateur est déchargé.

 
stringo:

Vous n'avez toujours pas répondu à la question, que voulez-vous dire par mettre à zéro les tampons ?

Le terminal client ne met pas à zéro le contenu des tampons indicateurs. La mise à zéro doit être assurée par le programmeur.

Les tampons sont supprimés automatiquement lors du chargement d'un indicateur

 ArrayInitialize(body_up,EMPTY_VALUE);
ArrayInitialize(body_down,EMPTY_VALUE);
ArrayInitialize(shadow_up,EMPTY_VALUE);
ArrayInitialize(shadow_down,EMPTY_VALUE);
  ArrayInitialize(yell_body_up,EMPTY_VALUE);
ArrayInitialize(yell_body_down,EMPTY_VALUE);
ArrayInitialize(yell_shadow_up,EMPTY_VALUE);
ArrayInitialize(yell_shadow_down,EMPTY_VALUE);
Cela ne fonctionne ni ininit ni deinit.
 
eevviill:
Il ne fonctionne ni dans init ni dans deinit.
Pourquoi en avez-vous besoin dans deinit ? Et pourquoi un tableau d' indicateurs dynamiques devrait-il être initialisé ?
 
eevviill:
Cela ne fonctionne ni dans init ni dans deinit.

Encore une fois.

Vous devez initialiser le tableau uniquement avant le recalcul total. Et ce, uniquement si vous remplissez le tableau de manière sélective et non élément par élément.

 
stringo:

Encore une fois.

Il suffit d'initialiser le tableau avant le recalcul du total. Et ce, uniquement si vous remplissez le tableau de manière sélective, et non pas un élément après l'autre.

eevviill:
Cela ne fonctionne ni dans init ni dans deinit.

Pourquoi en avez-vous besoin dans deinit ? Et pourquoi un tableau d' indicateurs dynamiques devrait-il être initialisé ?

Avez-vous lu le problème ?

 
evillive:
Pourquoi en avons-nous besoin dans deinit ? Et pourquoi initialiser le tableau dynamique de l'indicateur ?

Parce que quelque part, il le faut. Inite dit que vous ne pouvez pas.

Parce que seule la barre 0 est comptée. Après avoir fermé le terminal et l'avoir ouvert après quelques chandeliers, la barre 0 est calculée + une autre barre avec un décalage pour le temps où le terminal a été fermé.

 
stringo:

Encore une fois.

Il suffit d'initialiser le tableau avant le recalcul total. Et ce, uniquement si vous remplissez le tableau de manière sélective et non en ligne, élément par élément.

Joli. Je ne remplis que l'élément 0.

Si vous ne comprenez pas le problème, je peux le décrire à nouveau.

 
eevviill:

Parce que quelque part, il le faut. Inite dit que vous ne pouvez pas.

Parce que seule la barre 0 est comptée. Après avoir fermé le terminal et l'avoir ouvert après quelques chandeliers, il s'avère que 0 barre est comptée + une autre avec un décalage par rapport au moment où le terminal a été fermé.

En fait, la barre de zéro a été correctement calculée, mais ensuite l'historique a été chargé. Et une nouvelle barre de zéro a été calculée.
 
Vinin:
En fait, la barre de zéro a été calculée correctement, mais ensuite l'historique a été chargé. Et une nouvelle barre de zéro a été calculée.

Ici. Je fais une mise à zéro du tampon pour cela. Inite a déjà dit que vous ne pouviez pas faire ça.

Je veux déinir. Mais ça ne marche pas là non plus. Pourquoi ?

 
Je vais essayer d'expliquer à nouveau (sur mes doigts) :
  1. Le terminal a démarré X fois après le dernier démarrage.
  2. Initialisation du téléchargement de l'historique, qui est manquant (le terminal a été inactif pendant X minutes)
  3. Appeler OnCalculate pour l'historique disponible prevtime= dernier historique connu, taille du tampon de l'indicateur N barres
  4. Pendant que l'historique est téléchargé du serveur, un tic-tac se produit
  5. Appelé OnCalculate de l'indicateur, où Time[0] est un tick time, l'indicateur le mémorise comme prevtime, la taille du buffer de l'indicateur est N+1 barres (entre N et N+1 barres il y a un gap dans l'historique).
  6. Après le téléchargement de l'historique, OnCalculate est appelé de nouveau, mais cette fois il n'y a pas de trou dans l'historique, mais prevtime a la même date que Time[0] - pas de nouvelle barre (respectivement, pas de vidage des tampons dans l'indicateur), la taille du tampon des barres de l'indicateur N+X/Timeframe et IndBuffer[0] ne sont pas les mêmes qu'à l'étape 5
Raison: