Lorsque j'essaie de tester sur le usdjpy, je reçois un message comme celui-ci :
et semble continuer indéfiniment, quand il est arrivé à 3000 je l'ai éteint. Les tests ont essayé de passer sur 2010.10.01 - 2010.10.10, seulement les prix d'ouverture.
Bild 401
Je n'arrive pas non plus à faire démarrer un autre agent distant, voici le journal :
J'ai également observé un schéma similaire hier... On dirait que toute l'histoire a été surchargée et apparemment il y a eu quelques problèmes en le faisant.
Il semble que j'ai attendu la fin du processus ou que j'ai redémarré le terminal.
j'ai trouvé une chose intéressante hier. après avoir recompilé l'EA, les changements ne fonctionnent pas dans le testeur jusqu'à ce que vous redémarriez le terminal - c'est l'étain !!!
Depuis hier, les experts ont commencé à vivre leur vie numérique.
Lors du test, il donne un focus aléatoire... Il saute la fonction OnInit() par un moyen magique, puis il génère l'erreur array out of range dans la fonction DeInit().
Le problème est qu'avec les mêmes paramètres, il peut démarrer et exécuter tout le test, ou bien se planter.
Voici le défi : rendre le paramètre de l'indicateur dynamique. Lorsque vous fermez une position, vous changez l'un des paramètres de l'indicateur, voilà le défi.
Maintenant, ma solution :
Je peux dire que ce code fonctionne car les tests montrent un résultat différent, mais il n'est pas clair pourquoi il fonctionne t.s. de temps en temps, j'ai regardé dans le journal - 1 semaine tout fonctionne comme il le devrait, puis il boucle et sort les mêmes valeurs dans le tampon, bien que ce soit impossible (2 semaines les mêmes valeurs dans le journal du testeur), si pas de boucles alors juste écrit une erreur :
message via Alert
D'après ce que j'ai pu comprendre, l'Expert Advisor crée un handle d'un indicateur lorsqu'une nouvelle barre apparaît et en même temps il demande de copier les buffers de cet indicateur. Mais cela ne permet pas de résoudre le cas où le calcul des indicateurs tampons peut prendre un certain temps. En d'autres termes, la poignée de l'indicateur peut être créée avec succès, mais les tampons de l'indicateur n'ont pas encore été calculés.
Статья о традиционных и не совсем традиционных алгоритмах усреднения, упакованных в максимально простые и достаточно однотипные классы. Они задумывались для универсального использования в практических разработках индикаторов. Надеюсь, что предложенные классы в определенных ситуациях могут оказаться достаточно актуальной альтернативой громоздким, в некотором смысле, вызовам пользовательских и технических индикаторов.
Yedelkin: D'après ce que j'ai pu comprendre, l'Expert Advisor crée un handle d'indicateur lorsqu'une nouvelle barre apparaît et en même temps il demande de copier les buffers de cet indicateur. Mais la situation n'est pas élaborée, lorsque le calcul des indicateurs tampons peut prendre un certain temps. En d'autres termes, la poignée de l'indicateur peut être créée avec succès, mais les tampons de l'indicateur n'ont pas encore été calculés.
Oui, je suis d'accord - c'est pourquoi j'ai essayé ce design :
//+------------------------------------------------------------------+//| Expert tick function |//+------------------------------------------------------------------+voidOnTick()
{
if (isNewBar()==true && proverkaHANDLA()==true)
{
if (!PositionSelect(Symbol1) && !PositionSelect(Symbol2))
{
BSOpen();
}
}
}
//+==================================================================+bool proverkaHANDLA()
{
ArraySetAsSeries(Sp1Buffer,true);
ArraySetAsSeries(Sp2Buffer,true);
//----------------------
vhandle=iCustom(NULL,0,"МТ5",Symbol1,100,Lots,1,Close());
if(vhandle<0)
{
Alert("Ошибка при создании индиката: ",GetLastError());
return(0);
}
if(CopyBuffer(vhandle,0,0,50,Sp1Buffer)<0 || CopyBuffer(vhandle,1,0,50,Sp2Buffer)<0)
{
Alert("Ошибка копирования буферов индикатора номер ошибки:",GetLastError());
return(0);
}
return (true);
}
Cela fonctionne pour l'instant ! Merci pour votre aide
Oui, je suis d'accord - c'est pourquoi j'ai essayé ce design :
Ça marche jusqu'à présent ! Merci pour votre aide
Une telle construction permet d'éviter les cas où "la poignée a été créée, mais les tampons indicateurs n'ont pas encore été calculés". Comme la construction elle-même est appelée une fois par période, vous pouvez essayer d'appeler la fonction CopyBuffer() plusieurs fois. C'est-à-dire que si CopyBuffer()<0, alors on appelle la fonction de manière répétée, aussi longtemps que la période sélectionnée le permet (dans la période de temps sélectionnée).
Eh bien, c'est vrai. Votre fonction proverkaHANDLA() est un bloc indépendant, qui fait référence en interne àCopyBuffer() une seule fois.Par conséquent, si les tampons ne sont pas calculés, il réapparaîtra toujours. Jusqu'à présent, votre fonction proverkaHANDLA() ne gère pas la situation "handle créé, mais les tampons d'indicateurs ne sont pas encore calculés", mais l'ignore.
Yedelkin: Cette construction permet d'éviter les cas où "la poignée a été créée, mais les tampons indicateurs n'ont pas encore été calculés". Comme la construction elle-même est appelée une fois par période, vous pouvez essayer d'appeler de façon répétée la fonction CopyBuffer(). C'est-à-dire que si le CopyBuffer()<0, alors répéter l'appel de la fonction, aussi longtemps que la période sélectionnée le permet (dans la période de temps sélectionnée).
C'est-à-dire que pendant que CopyBuffer>0 nous le calculons, et le nouveau paramètre (Close()
apparaît à la fermeture de la position. C'est-à-dire qu'il faut boucler sur While. Ça se passe comme ça.
Lorsque j'essaie de tester sur le usdjpy, je reçois un message comme celui-ci :
et semble continuer indéfiniment, quand il est arrivé à 3000 je l'ai éteint. Les tests ont essayé de passer sur 2010.10.01 - 2010.10.10, seulement les prix d'ouverture.
Bild 401
Je n'arrive pas non plus à faire démarrer un autre agent distant, voici le journal :
J'ai également observé un schéma similaire hier... On dirait que toute l'histoire a été surchargée et apparemment il y a eu quelques problèmes en le faisant.
Il semble que j'ai attendu la fin du processus ou que j'ai redémarré le terminal.
j'ai trouvé une chose intéressante hier. après avoir recompilé l'EA, les changements ne fonctionnent pas dans le testeur jusqu'à ce que vous redémarriez le terminal - c'est l'étain !!!
Un soutien total - peut-être un servicedesk ? (fermez-la une centaine de fois)
Depuis hier, les experts ont commencé à vivre leur vie numérique.
Lors du test, il donne un focus aléatoire... Il saute la fonction OnInit() par un moyen magique, puis il génère l'erreur array out of range dans la fonction DeInit().
Le problème est qu'avec les mêmes paramètres, il peut démarrer et exécuter tout le test, ou bien se planter.
Voici le défi : rendre le paramètre de l'indicateur dynamique. Lorsque vous fermez une position, vous changez l'un des paramètres de l'indicateur, voilà le défi.
Maintenant, ma solution :
Je peux dire que ce code fonctionne car les tests montrent un résultat différent, mais il n'est pas clair pourquoi il fonctionne t.s. de temps en temps, j'ai regardé dans le journal - 1 semaine tout fonctionne comme il le devrait, puis il boucle et sort les mêmes valeurs dans le tampon, bien que ce soit impossible (2 semaines les mêmes valeurs dans le journal du testeur), si pas de boucles alors juste écrit une erreur :
message via Alert
D'après ce que j'ai pu comprendre, l'Expert Advisor crée un handle d'indicateur lorsqu'une nouvelle barre apparaît et en même temps il demande de copier les buffers de cet indicateur. Mais la situation n'est pas élaborée, lorsque le calcul des indicateurs tampons peut prendre un certain temps. En d'autres termes, la poignée de l'indicateur peut être créée avec succès, mais les tampons de l'indicateur n'ont pas encore été calculés.
Oui, je suis d'accord - c'est pourquoi j'ai essayé ce design :
Cela fonctionne pour l'instant ! Merci pour votre aide
Mais de temps en temps, ça lâche :
Oui, je suis d'accord - c'est pourquoi j'ai essayé ce design :
Ça marche jusqu'à présent ! Merci pour votre aide
Mais de temps en temps, ça arrive :
Eh bien, c'est vrai. Votre fonction proverkaHANDLA() est un bloc indépendant, qui fait référence en interne àCopyBuffer() une seule fois.Par conséquent, si les tampons ne sont pas calculés, il réapparaîtra toujours. Jusqu'à présent, votre fonction proverkaHANDLA() ne gère pas la situation "handle créé, mais les tampons d'indicateurs ne sont pas encore calculés", mais l'ignore.
Cette construction permet d'éviter les cas où "la poignée a été créée, mais les tampons indicateurs n'ont pas encore été calculés". Comme la construction elle-même est appelée une fois par période, vous pouvez essayer d'appeler de façon répétée la fonction CopyBuffer(). C'est-à-dire que si le CopyBuffer()<0, alors répéter l'appel de la fonction, aussi longtemps que la période sélectionnée le permet (dans la période de temps sélectionnée).
C'est-à-dire que pendant que CopyBuffer>0 nous le calculons, et le nouveau paramètre (Close()
apparaît à la fermeture de la position. C'est-à-dire qu'il faut boucler sur While. Ça se passe comme ça.