OnDeinit dans les indicateurs - page 3

 

Faites un Print au début de OnDeinit et après avoir fermé le terminal client, regardez le log de l'Expert et assurez-vous que OnDeinit a été appelé !

Voici votre erreur

for(int i=ObjectsTotal()-1;i>=0;i--)

Vous connaissez clairement les objets que vous avez créés vous-même.

Garder leurs noms et les supprimer sans référence à ObjectsTotal et ObjectName

PS la nouvelle version a ajouté une fonction pour supprimer un groupe d'objets par préfixe. Cela vous aidera si vous nommez vos objets en utilisant le même préfixe unique dans leur nom.

 
stringo:

Faites Print au début de OnDeinit et après avoir fermé le terminal client, regardez le journal EA et assurez-vous que OnDeinit a été appelé !

Voici votre erreur

Vous connaissez clairement les objets que vous avez créés vous-même.

Enregistrer leurs noms et les supprimer sans référence à ObjectsTotal et ObjectName

PS La nouvelle version a ajouté une fonction permettant de supprimer un groupe d'objets par préfixe. Cela vous aidera si vous nommez vos objets en utilisant le même préfixe unique dans leur nom.

J'ai déjà eu l'occasion de tester le fonctionnement de la suppression d'un groupe d'objets par préfixe. Super, mais même le code compilé dans les builds précédentes ne fonctionne pas. Par conséquent, il ne peut être utilisé, pour l'instant, qu'à des fins personnelles. Nous n'avons pas à forcer les utilisateurs à se mettre à jour à cause de cela. Beaucoup ne savent même pas comment mettre à jour jusqu'à ce qu'ils téléchargent la mise à jour sur le serveur du DC.
 
stringo:

En fait, dans tous les programmes, deinit est appelé lorsque le terminal est fermé.

Il existe même un code spécial pour la cause de la désinitialisation. REASON_CLOSE

Et est-ce que cela remet à zéro les tampons des indicateurs ou non ?
 
eevviill:
Et est-ce que cela réinitialise les tampons de l'indicateur ou pas ?
Qu'est-ce que la "réinitialisation des tampons de l'indicateur" ?
 
eevviill:
Et est-ce que cela réinitialise les tampons de l'indicateur ou pas ?
Tout est remis à zéro. Après tout, le terminal se ferme ;)))
 
stringo:

La situation avec votre indicateur a été résolue.

Voilà le problème : l'indicateur est calculé non seulement à l'arrivée des ticks, mais aussi au premier tirage et à l'arrivée de l'historique manquant.

1. Un nouveau tick arrive - l'indicateur est calculé.

2. L'historique manquant arrive, ce qui permet de boucher le trou entre les dernières données du début du terminal et le dernier tick. L'indicateur est calculé. Mais en même temps, il n'y a pas de nouvelle condition de bar !

Pour résoudre ce problème, vous devez vérifier le nombre de barres. A peu près comme ceci

Hmm. Mettre le bloc d'initialisation du tampon EMPTY_VALUE dans Inite. Le problème reste entier.
 

Bloque le bloc d'initialisation du tampon avec une valeur vide dans init et deinit. Le résultat est le même. C'est-à-dire qu'il n'existe pas.

Nous attendons les commentaires des développeurs.

 
Scriptong:
Tout est remis à zéro. Après tout, le terminal se ferme ;)))
Oui, oui.
 
eevviill:
Hmm. Le bloc d'initialisation du tampon EMPTY_VALUE est placé dans Inite.

Pourquoi ? Il se peut que les tampons inites ne soient pas encore alloués.

Qu'en est-il lorsque le tampon est fortement sollicité (un nouveau lot de données historiques est arrivé) ?

Dans ce cas, l'initialisation des tampons se fait avant le calcul de l'indicateur, lorsqu'il est clair que l'indicateur entier sera recalculé.

 
stringo:

Pourquoi ? Il se peut que les tampons inites ne soient pas encore alloués.

Et qu'en est-il lorsque le tampon est très grand (un nouveau lot de données historiques est arrivé) ?

Dans ce cas, l'initialisation des tampons est effectuée avant le calcul de l'indicateur, lorsqu'il est clair que l'indicateur entier sera recalculé.

ok. La mise à zéro ne fonctionne pas non plus dans deinit.