Questions d'un "mannequin - page 138

 
joo:
Si ce n'est pas un script, alors toute la logique doit être exécutée/appelée dans/depuis OnChartEvent() ?

Tu peux le faire n'importe où. Il y a aussi un minuteur.

Si vous avez besoin d'une logique cyclique, vous pouvez la mettre dans un timer.

Si la logique est pilotée par des événements, alors dans chartevent.

 
sergeev:

Tu peux le faire n'importe où. Il y a aussi un minuteur.

Si vous voulez une logique cyclique, vous pouvez la mettre dans un timer.

Si la logique est pilotée par les événements, alors dans la chartevent.

C'est la logique :

1. Début du programme (lancé sur chartevent).

2. à partir de la boîte de dialogue (liste des fichiers), obtenez le nom du fichier.

3. Nous ouvrons le fichier par son nom et recevons et traitons les données.

4. Sortie du programme.

C'est tout ce qu'il y a à faire. Comment ce cas peut être organisé, montrez-le au moins de manière schématique.

Документация по MQL5: Файловые операции / FileOpen
Документация по MQL5: Файловые операции / FileOpen
  • www.mql5.com
Файловые операции / FileOpen - Документация по MQL5
 
joo:

Une telle logique :

1. Lancez le programme (jeté sur le tableau).

OnInit. scanne le disque, trouve les fichiers, crée une fenêtre avec la liste (Contrôles).

2. à partir de la boîte de dialogue (liste des fichiers) obtenir le nom du fichier.

OnChartEvent. Traiter les clics de souris ; nous savons quelle ligne de la liste a été cliquée, respectivement, nous connaissons le fichier.

3. Ouverture du fichier par son nom, obtention des données, traitement.

OnChartEvent. Processus de clics de souris sur le bouton "Go". Reçu le nom d'un fichier de la liste. Par la suite, le traitement de ce dossier est exclusivement réservé à vos données.

4. Quitter le programme.

ExpertRemove()

 
sergeev:
...

Eh bien, ça clarifie les choses maintenant, merci.

Mais, juste pour l'essayer, j'ai créé un conseiller expert. Il s'imprime même si rien ne se passe sur le graphique - et il ne devrait pas :

#include <Controls\ControlsDialog.mqh>
CControlsDialog ExtDialog;

int OnInit()
{
//--- create application dialog
  if(!ExtDialog.Create(0,"Controls",0,20,20,360,324))
    return(-1);
//--- run application
  ExtDialog.Run();
  return(0);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//--- destroy dialog
  ExtDialog.Destroy();
}
//+------------------------------------------------------------------+
//| Expert chart event function                                      |
//+------------------------------------------------------------------+
void OnChartEvent(const int id,         // event ID  
                  const long& lparam,   // event parameter of the long type
                  const double& dparam, // event parameter of the double type
                  const string& sparam) // event parameter of the string type
{
  ExtDialog.ChartEvent(id,lparam,dparam,sparam);
  Print("dsfsdfsdfsdf");
}
//+------------------------------------------------------------------+
 
Yedelkin:

Eh bien, toute méthode de classe est juste du code ordinaire. Essayez d'analyser ce code ici :

Merci ! Je l'ai fait fonctionner.
 
joo:

Eh bien, ça clarifie les choses maintenant, merci.

Mais, juste pour l'essayer, j'ai créé un conseiller expert. Il s'imprime même si rien ne se passe sur le graphique - et il ne devrait pas :

Non, ça s'imprime parce que vous déplacez la souris sur le graphique.

 
sergeev:

Non, il y a une impression en cours parce que vous déplacez la souris sur le graphique.

En effet, j'ai péché - j'ai déplacé la souris sur le graphique, c'est pourquoi il s'imprime.
 

Bon après-midi.

Question par curiosité. Voici le code :

class cl2;

class cl1
{
public:
        int q;
        void fn2(cl2 &t){t.i = 87;}
};


class cl2
{
public:
        int i;
        void fn(cl1 &w){w.q = 9;}
};

L'idée est la suivante :

  • Il y a deux classes (#1 et #2).
  • La classe n°1 fouille dans la classe n°2.
  • La classe n°2 fouine dans la classe n°1.

Il compile dans MQL sans erreur, il ne compile pas dans VS (il dit que je ne peux pas utiliser des classes non définies). Pourquoi ?

 
220Volt:

Il compile dans MQL sans erreur, il ne compile pas dans VS (dit que vous ne pouvez pas utiliser une classe non définie). Pourquoi ?

Patamushta mql5 est meilleur !

;)

 
MetaDriver:

Parce que mql5 est meilleur !

;)

Oui, je devrais peut-être donner un signe plus...)