Vérification automatique des produits sur le marché (questions et suggestions) - page 6

 
Andrey Khatimlianskii:

Oui, en effet, j'ai oublié "@global_initializations".

Il s'avère que le dessin des barres et des tampons d'indicateurs lui-même prend tant de temps ?

Et si vous compilez jusqu'à la version et lancez le visualiseur dans le même intervalle, en allant directement à la fin ("passez à..."), combien de temps cela prend-il ?

Eh bien, combien de temps ?

 
Prostocar:
Bonjour Bonjour, j'ai perdu mon Marché dans le terminal je ne peux pas installer les Expert Advisors et les indicateurs du Marché la réinstallation du terminal n'a pas aidé ainsi que les produits achetés précédemment sur le Marché ne sont pas mis à jour qui sait comment résoudre le problème.

Vous n'avez toujours pas répondu à ma question :

Vous pouvez le vérifier dans le terminal, dans la fenêtre Outils, dans l'onglet Journal.


Deuxième question : à quel serveur vous connectez-vous ? Essayez de vous connecter à MetaQuotes-Demo.

 
MetaQuotes Software Corp.:

Les journaux de l'autovalidateur ont montré que le test sur M1 ne peut pas passer l'intervalle mensuel en une heure .

Alors que sur H1, le même indicateur passe le test en quelques minutes.

Cherchez la raison dans votre code.

La raison se trouve plus probablement dans l'autovalidateur. J'ai réussi à découvrir que le problème est en quelque sorte lié au traitement de l'historique des tics.

Quand le premier événement OnCalculate est traité, l'indicateur essaie de charger l'historique des ticks du dernier jour, en exécutant la fonction CopyTicksRange. Si chaque barre reçoit au moins quelques ticks, l'historique reçu est dessiné et ensuite il traite les ticks en ligne. Si certaines barres de l'historique n'ont pas reçu de ticks, le gestionnaire OnCalculate renvoie 0 et démarre une minuterie de 5 secondes. Lors des événements suivants OnCalculate, l'indicateur continue à essayer de charger l'historique des ticks. Dans le gestionnaire OnTimer, la minuterie s'arrête et si tous les appels OnCalculate n'ont pas réussi à charger l'historique pendant 5 secondes, la demande de rafraîchissement est faite en utilisant l'appel ChartSetSymbolPeriod(0, NULL, 0).

Notez que tout est exécuté de manière asynchrone et qu'il n'y a pas de raccrochage par la logique. Dans le pire des cas, si nous supposons que la base de données des ticks n'est pas disponible pour une raison quelconque, nous obtiendrons une série de rafraîchissements avec une période de 5 secondes. Mais dans ce cas, l'indicateur n'est pas du tout calculé, car il n'y a pas de données. L'influence du rafraîchissement a été étudiée, elle est absente - voir le commentaire ci-dessous.

Ce code fonctionne bien pour moi en ligne sur différents serveurs, différents personnages/horaires et dans le testeur.

Le même code semble se bloquer quelque part dans l'autovalidateur. Par la méthode de l'intuition (qui ne devrait pas se produire dans le cas d'un retour d'information normal, de journaux, etc.), j'ai découvert ce qui suit.

Si vous commentez le commentaire pour l'historique des ticks, l'indicateur s'autovalide normalement.

Comme il y a de nombreux facteurs de demande d'histoire, je ne peux pas dire exactement ce qui et dans quelle combinaison "accroche" l'autovalidateur :

  • CopyTicksRange en l'absence de ticks historiques (mais même s'ils sont absents, l'indicateur ne calcule pas et rend immédiatement le contrôle à l'environnement, les ticks en ligne continuent à "ticoter" librement, j'ai émulé une telle situation - aucun accrochage) ;
  • minuterie ;
  • ChartSetSymbolPeriod (comme test de stress, j'ai fait tourner l'indicateur avec ce rafraîchissement en mode extrême (à chaque tick) et cela n'a pas entraîné de ralentissement ou de charge CPU notable, cette requête est également asynchrone) ;
  • J'ai ajouté un compteur de rafraîchissement échoué pour les arrêter après un nombre donné de tentatives (5), mais cela n'a aucun effet sur le succès.

Si le rafraîchissement est demandé par le gestionnaire OnTimer, l'autovalidation échoue. Si le rafraîchissement est transféré à OnCalculate - l'autovalidation réussit. Ainsi, il y a une preuve indirecte que c'est l'appel de ChartSetSymbolPeriod depuis OnTimer qui donne un effet négatif. J'ai délibérément utilisé une telle combinaison dans le testeur - aucun problème. De toute évidence, l'autovalidateur est différent du testeur accessible au public.

Étant donné que les conditions identifiées pour passer la validation ne sont pas très claires (étranges du moins) et qu'elles nécessitent de complexifier artificiellement le code au feeling, elles sont inacceptables pour un produit de sortie.

 
Bonjour, je demande de l'aide, lorsque l'autovalidation montre une erreur sur l'absence d'indicateur, l'indicateur est défini via la ressource, sur d'autres terminaux le fichier compilé fonctionne sans problèmes à la fois dans le test et sur le compte réel. Quel peut être le problème ?
Dossiers :
2yr38jvml4.png  32 kb
 
RODION SLOTIN:
Bonjour, je demande de l'aide, lors de l'autovalidation une erreur sur l'absence d'indicateur, l'indicateur est paramétré via la ressource, sur les autres terminaux le fichier compilé fonctionne sans problème aussi bien en test qu'en temps réel. Quel peut être le problème ?

Essayez de ne pas utiliser les doubles extensions et les tirets. C'est juste une supposition rapide.

 
RODION SLOTIN:


Pouvez-vous me dire où exactement ?

#resource "\NIndicateurs\\\\guru.ex4"

double SigUp= iCustom(Symbole(),0,"\Experts\\\\N/SnowyOwl.v1-1.eng.ex4::Indicateurs\\\Nguru.ex4",Sensitivity,PopUp_Alert,5,0) ;


Vous devriez l'écrire de cette façon (exemple) :

#resource "\\Indicators\\trend_channel.ex4"

iCustom(Symbol(),0,"::Indicators\\trend_channel.ex4",kstd,bars,shift,0,bars);

et vous avez écrit des bêtises ici.

 
Le dossier Libraries est également répertorié dans le journal pour une raison quelconque. Pourquoi en est-il ainsi ? Eugène a correctement décrit la référence à une ressource. Il devrait fonctionner localement (si tous les dossiers par défaut, MQL4/Experts, MQL4/Indicateurs). Lorsque vous fixez le lancement local, il est fort probable que cela fonctionne dans l'autovalidateur.
 

Bonjour.

J'essaie de télécharger mon produit sur le marché. La validation automatique donne l'erreur suivante :

test sur EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Cependant, ce n'est pas possible. J'étale le VWAP là où la souris déplace le point de départ. Le script se compile sans erreur et tout fonctionne bien. Peut-être que la validation automatique ne peut pas interagir avec les scripts où je dois sélectionner le point de départ ?

Quelle autre raison peut expliquer cela ? L'indicateur a le choix de compter avec ou sans volumes. Par défaut, il est "sans", mais peut-être que le validateur passe en revue tous les paramètres possibles et tombe sur le calcul avec les volumes sur les paires de devises. Que faire ?

 
Anton Polkovnikov:

Bonjour.

J'essaie de télécharger mon produit sur le marché. La validation automatique donne l'erreur suivante :

test sur EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Cependant, ce n'est pas possible. J'étale le VWAP là où la souris déplace le point de départ. Le script se compile sans erreur et tout fonctionne bien. Peut-être que la validation automatique ne peut pas interagir avec les scripts où je dois sélectionner le point de départ ?

Quelle autre raison peut expliquer cela ? L'indicateur a le choix entre une lecture avec ou sans volumes. Par défaut, il est "sans", mais peut-être que le validateur passe en revue tous les paramètres possibles et tombe sur le calcul avec les volumes sur les paires de devises. Que faire ?

Tentative d'importation de fichiers compilés (même EX4/EX5) et de DLLs

Les programmes distribués sur le marché doivent être garantis comme étant sûrs pour les utilisateurs. Par conséquent, toute tentative d'utiliser des DLL ou des fonctions provenant de fichiers EX4/EX5 compilés est considérée comme une erreur. Ces produits ne seront pas publiés sur le marché.

Si votre programme a besoin d'utiliser des indicateurs supplémentaires qui ne sont pas fournis, utilisezRessources.


Application aux indicateurs personnalisés via iCustom()

Si votre programme a besoin d'accéder aux données d'indicateurs personnalisés, vous devez placer tous les indicateurs nécessaires dansRessources. Les produits du marché doivent être prêts à fonctionner dans n'importe quel environnement non préparé, ils doivent donc contenir tout ce dont vous avez besoin dans votre fichier EX4/EX5. Articles recommandés sur le sujet :


https://www.mql5.com/ru/articles/2555#dll_and_libraries_prohibited

 
Anton Polkovnikov:

test sur EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Cependant, ce n'est pas possible.

Le tableau hors limites de la ligne 387 est le caractère 30. Il est écrit. Nous devons vérifier le tableau.

Raison: