L'indicateur se corrompt

 

Tous,

J'ai développé un indicateur qui fonctionne bien pendant les 16 premières heures environ, après quoi il se corrompt et commence à dessiner des lignes sur tout le graphique. Je vérifie également la valeur de IndicatorCounted() et sa valeur ne devient pas négative lorsque j'obtiens les lignes corrompues. Je ne veux pas réinitialiser les tampons des indicateurs car l'historique des "mouvements/lignes valides" sera perdu. Avez-vous des suggestions pour résoudre ce problème ?

Les images de l'indicateur normal et corrompu sont disponibles dans le fichier zip joint.

Dossiers :
images.zip  61 kb
 
Pas de lecteurs d'esprit ici - pas de code = pas d'aide
 
WHRoeder:
Pas de lecteurs d'esprit ici - pas de code = pas d'aide

Merci beaucoup.
 

mes chers,

quelqu'un peut-il m'envoyer le lien pour télécharger le metaEditor 4 ?

Merci.

 
tiger961:

mes chers,

quelqu'un peut-il m'envoyer le lien pour télécharger le metaEditor 4 ?

Merci.


Tiger, vous devez commencer un nouveau fil de discussion au lieu de vous empiler sur d'autres fils de discussion.

L'éditeur est disponible avec le téléchargement gratuit du terminal MT4 de n'importe quel courtier.

 

Quelques informations supplémentaires

a) La corruption des indicateurs ne se produit que sur la plateforme Windows 64 bit.

b) J'ai fait un dump du tableau des indicateurs avant et après la corruption - les mêmes sont disponibles dans le fichier xls ci-joint avec des commentaires.

c) Le paramètre "Max Bars in Chart" est-il applicable uniquement lorsque vous ouvrez le graphique ? Le nombre de barres et le nombre d'indicateurs associés augmentent avec chaque barre supplémentaire ajoutée.

d) L'utilisation du code est la suivante

Déclarations

<code>

#property indicator_chart_window

#property indicator_buffers 8

#property indicateur_color1 Rouge

#property indicator_width1 2

</code>

Pour l'initialisation de l'inidicateur -

<code>

SetIndexBuffer(0, Down1) ;

SetIndexStyle(0, DRAW_LINE) ;

SetIndexEmptyValue(0, EMPTY_VALUE) ;

</code>

Pour l'ajout de données de ligne

<code>

void DrawMoveEx(double& serie[], int start, int end, double startlevel, double endlevel) {

double a = (endlevel - startlevel) / (start - end) ;

double y ;

int bar ;


for(int x = 0 ; x <= start - end ; x++) {

y = a * x ;

bar = début - x ;

serie[bar] = niveau de départ + y ;

}

}

</code>

 
AnkaSoftware:
a) La corruption des indicateurs ne se produit que sur la plate-forme Windows 64 bits.
N'installez pas les fichiers programme* sur Vista/Win7.
 
WHRoeder:
N'installez pas les fichiers de programmes internes* sur Vista/Win7
C'est vrai, l'installation est dans C:/metatrader4/<répertoire du terminal>. Je pense que ce problème n'est pas dû à des problèmes de chemin mais à une corruption de la mémoire. L'indicateur fonctionne bien pendant les 3-4 premières heures, après quoi la corruption commence.
 

Je pense que ce n'est rien de tel...

Il m'a semblé que quelque chose de similaire se produisait lorsque de nouvelles données historiques étaient ajoutées au graphique en faisant défiler le graphique vers la droite.

 
RaptorUK:

Je pense que ce n'est rien de tel...

J'ai vu quelque chose de similaire se produire lorsque de nouvelles données historiques sont ajoutées au graphique en faisant défiler le graphique vers la droite.

Hmm, "de nouvelles données historiques sont ajoutées au graphique", comment ? L'indicateur est lancé et n'est pas perturbé. Nous avons un lookback fixe de 1000 barres. L'indicateur ne charge pas de données historiques.

Quelqu'un de l'équipe de développement peut-il y jeter un œil ?

 
AnkaSoftware:

Hmm, "les nouvelles données historiques sont ajoutées au graphique", comment ? L'indicateur est lancé et n'est pas modifié. Nous avons un lookback fixe de 1000 barres. L'indicateur ne charge pas de données historiques.

Quelqu'un de l'équipe de développement peut-il y jeter un œil ?

Je suis d'accord avec RaptorUK sur ce point : il est très peu probable qu'il s'agisse d'un bogue dans MT4 plutôt que dans votre code, ou d'un problème lié à Windows 64 bits. J'ai vu des rapports sur des problèmes de performance et de stabilité avec MT4 qui se sont avérés fondés (par exemple https://www.mql5.com/en/forum/135355), mais je n'ai jamais vu un rapport sur un bogue de langage MT4 qui se soit avéré exact.

Permettez-moi de souligner une différence entre vos captures d'écran "Move Normal" et "Move Error". Dans "Move Normal", il n'y a pas de barres manquantes apparentes. Alors que dans "Move Error", il semble y avoir des données manquantes sur le graphique. La plupart des marqueurs sur l'axe X sont espacés de 16 minutes, mais l'écart entre le deuxième et le troisième marqueur est de 21 minutes (06:08 à 06:29). Cela peut être ou ne pas être le problème, mais je commencerais à chercher dans votre code les endroits qui supposent qu'il va y avoir une série continue de barres. Par exemple, s'il est actuellement 8h du matin, tout ce qui, dans le code, suppose que (a) la barre de 7h du matin date d'il y a 60 barres, ou même (b) qu'une barre de 7h du matin existe.