Toute question des nouveaux arrivants sur MQL4 et MQL5, aide et discussion sur les algorithmes et les codes. - page 1461

 
Dans MT4 dans le testeur comment tracer un appui sur le bouton stop pour un indicateur. OnDeanit n'est pas appelé bien que le test soit terminé. Ou comment fermer les fichiers ouverts lorsque l'on appuie sur le bouton d'arrêt dans le testeur.
 
Valeriy Yastremskiy:
Dans MT4 dans le testeur comment tracer un appui sur le bouton stop pour un indicateur. OnDeinit n'est pas appelé bien que le test soit terminé. Ou comment fermer les fichiers ouverts lorsque le bouton d'arrêt est pressé dans le testeur.

les fichiers ouverts devraient de toute façon être fermés automatiquement

sinon, essayez de créer des fichiers avec SB, il y a CFile, CFileTxt comme OOP - les objets seront détruits lors de la désinitialisation et les destructeurs fermeront les fichiers

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH : Pourquoi pensez-vous que OnDeinit() n'est pas appelé ? - essayer d'ouvrir et d'écrire un fichier

 
Igor Makanu:

les fichiers ouverts devraient de toute façon être fermés automatiquement

sinon, essayez de créer des fichiers avec SB, il y a CFile, CFileTxt comme OOP - les objets seront détruits lors de la désinitialisation et les destructeurs fermeront les fichiers

https://www.mql5.com/ru/docs/standardlibrary/fileoperations


HH : Pourquoi pensez-vous que OnDeinit() n'est pas appelé ? - Essayez d'y ouvrir et d'y écrire un fichier.

Par expérience. J'ai été moi-même surpris. Bien que ce soit logiquement correct, il s'agit d'un indicateur et il ne doit pas être déchargé comme un conseiller expert. Je dois supprimer l'indicateur du graphique de test manuellement ou fermer la fenêtre. Et ce n'est qu'ensuite que je vois les alertes après avoir fermé les fichiers)))

Les tests sont simples, je ne veux pas utiliser de bibble. Oui et je pense qu'il y a autre chose que des événements de souris sur le bouton d'arrêt dans le testeur d'indicateurs. Les coupes de recherche superficielles n'ont pas donné malheureusement.

Zy, les fichiers, s'ils ne sont pas fermés, n'y ont pas accès, et si OnDeinit() ne fonctionne pas soudainement, ils seront fermés en fermant uniquement le terminal.

Par expérience, j'ai oublié d'enregistrer la fermeture des fichiers))))

 
Valeriy Yastremskiy:

Expérimenté. J'ai été moi-même surpris. Bien que logiquement tout soit correct, il s'agit d'un indicateur, et il ne devrait pas être déchargé comme un Conseiller Expert. Je dois supprimer manuellement l'indicateur du graphique de test ou fermer la fenêtre. Et ce n'est qu'ensuite que je vois les alertes après avoir fermé les fichiers)))

Les tests sont simples, je ne veux pas utiliser de bibble. Oui et je pense qu'il y a autre chose que des événements de souris sur le bouton d'arrêt dans le testeur d'indicateurs. Les coupes de recherche superficielles n'ont pas donné malheureusement.

Zy, les fichiers, s'ils ne sont pas fermés, n'y ont pas accès, et si OnDeinit() ne fonctionne pas soudainement, ils seront fermés en fermant uniquement le terminal.

Par expérience, j'ai oublié d'enregistrer la fermeture du fichier)))

Vous n'avez pas encore décrit le processus complet de test de l'indicateur.

si j'ai bien compris, vous exécutez l'indicateur dans le testeur MT4 en mode visuel, bien que vous puissiez ajouter l'indicateur..... dans le visualiseur de MT4.

Je n'ai jamais testé un indicateur dans MT4, je le vérifie seulement dans l'EA dans le code TS.


comme alternative, définissez la date dans l'indicateur, lorsque vous terminez le test comme une variable et après avoir atteint cette date, sauvegardez le fichier et sortez de OnCalculate() - le code est de quelques lignes, mais il fonctionnera certainement.

 
Igor Makanu:

Vous n'avez pas encore décrit le processus complet de test de l'indicateur.

D'après ce que j'ai compris, vous exécutez l'indicateur dans MT4 tester en mode visuel, mais vous pouvez également le remplir dans MT4 dans le visualiseur avec l'indicateur......

Je n'ai jamais testé un indicateur dans MT4, je le vérifie seulement dans l'EA dans le code TS.


comme alternative, définissez la date dans l'indicateur, lorsque vous terminez le test comme une variable et après avoir atteint cette date, sauvegardez le fichier et sortez de OnCalculate() - le code est de quelques lignes, mais il fonctionnera certainement.

Oui, la fenêtre du testeur ne se soucie pas de savoir si l'indicateur est testé ou si l'indicateur est superposé à la fenêtre du testeur.

Merci pour cette béquille pas si évidente)

boolIsTesting() ;

Je vais devoir essayer, je pense que c'est censé revenir par un mensonge d'arrêt)
 
Valeriy Yastremskiy:

Oui, la fenêtre du testeur ne se soucie pas de savoir si l'indicateur est testé ou si l'indicateur est superposé à la fenêtre du testeur.

Merci pour cette béquille pas si évidente)

boolIsTesting() ;

je devrais essayer, il semble que cela devrait retourner false par stop)

Non, ce n'est pas le cas.

J'ai une question ouverte, comment tracer l'événement 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Testeur : bouton d'arrêt pressé

l'a fait)

int OnInit()
{
if(IsTesting()) FlagTest=true;
....
}

int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {

if(!IsTesting() && FlagTest) { Print("Окончание тестирования"); OnDeinit(1);}
....
}

 
Igor Makanu:

Recherche d'articles de Metacquot :"Cloud".

lu il y a longtemps, les agents à distance doivent-ils télécharger l'historique depuis votre PC ou, s'ils sont connectés au même courtier, prendre les ticks réels du courtier ?


mais je peux me tromper, je ne l'ai pas utilisé.


l'un des articles de Metacquot sur ce sujet, peut-être y trouve-t-on des informationshttps://www.mql5.com/ru/articles/2612.

Igor, merci. Documentation, forum, articles - je n'ai pas encore trouvé de réponse.

Dans le journal, il y a :

"REGRES_EURGBP : ticks déjà synchronisés [57 bytes]".

J'espère que c'est ce dont j'ai besoin.

 
Valeriy Yastremskiy:

Non, ce n'est pas le cas.

Quoi qu'il en soit, la question est ouverte, comment suivre dans le test de l'indicateur l'événement 2021.04.29 08:55:41.177 2020.10.01 08:23:13 Testeur : bouton d'arrêt pressé

l'a fait)


tu dois écrire quelque chose comme ça :

datetime t_stop=D'20.04.2021'; 
int OnCalculate(const int rates_total,
                const int prev_calculated,
                const datetime &time[],
                const double &open[],
                const double &high[],
                const double &low[],
                const double &close[],
                const long &tick_volume[],
                const long &volume[],
                const int &spread[])
  {
if(time[0]>=t_stop)
{
        if(f_handle<0) return;
        FileClose(f_handle);
        f_handle = -1;
}
je ne me souviens pas que MT4 laisse tester le dernier jour (aujourd'hui) - je dois récupérer t_stop
 
HimOrik:

Igor, merci. Documentation, forum, articles - je n'ai pas encore trouvé la réponse.

Dans le journal, il y a :

"REGRES_EURGBP : ticks déjà synchronisés [57 bytes]".

J'espère que c'est ce dont j'ai besoin.

les modérateurs sont silencieux, il y a peu d'utilisateurs actifs

Créez un sujet avec votre question dans la discussion générale, je pense que vous résoudrez votre problème plus rapidement.

 
Igor Makanu:

tu dois écrire quelque chose comme ça :

Je ne me souviens pas que MT4 me permette de tester le dernier jour (aujourd'hui) - je dois choisir t_stop.

Je comprends cette idée, elle est utile, mais elle ne fonctionne pas pour moi dans ce cas. J'ai besoin de chronométrer le Testeur: bouton d'arrêt pressé dans l'indicateur

Raison: