Fragen von einem "Dummy" - Seite 138

 
joo:
Wenn es sich nicht um ein Skript handelt, sollte die gesamte Logik in/von OnChartEvent() ausgeführt/aufgerufen werden?

Man kann es überall machen, und es gibt auch einen Timer.

Wenn Sie eine zyklische Logik benötigen, können Sie diese in einen Zeitgeber einbauen.

Wenn die Logik ereignisgesteuert ist, dann in chartevent.

 
sergeev:

Man kann es überall machen, und es gibt auch einen Timer.

Wenn Sie eine zyklische Logik wünschen, können Sie diese in einen Zeitgeber einbauen.

Wenn die Logik ereignisgesteuert ist, dann in chartevent.

Das ist die Logik:

1. Start des Programms (wird bei Chartevent ausgelöst).

2. Geben Sie im Dialogfeld (Dateiliste) den Dateinamen ein.

3. Wir öffnen die Datei nach Dateinamen und empfangen und verarbeiten Daten.

4. Beendet das Programm.

Mehr gibt es nicht zu sagen. Bitte zeigen Sie zumindest schematisch auf, wie dieser Fall organisiert werden kann.

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

Eine solche Logik:

1. Starten Sie das Programm (auf der Karte geworfen).

OnInit. Laufwerk gescannt, Dateien gefunden, Fenster mit Liste erstellt (Controls).

2. Im Dialogfeld (Dateiliste) wird der Dateiname angezeigt.

OnChartEvent. Verarbeiten Sie die Mausklicks; wir wissen, welche Zeile in der Liste angeklickt wurde, bzw. wir kennen die Datei.

3. Datei nach Dateinamen geöffnet, Daten erhalten, verarbeitet.

OnChartEvent. Verarbeiten Sie Mausklicks auf die Schaltfläche "Go". Sie haben den Namen einer Datei aus der Liste erhalten. Weiter ist lediglich Ihre Datenverarbeitung dieser Datei.

4. Beenden Sie das Programm.

ExpertRemove()

 
sergeev:
...

Nun, das klärt die Sache jetzt auf, danke.

Aber nur um es auszuprobieren, habe ich einen Expert Advisor erstellt. Es wird auch dann gedruckt, wenn auf der Karte nichts passiert - und das sollte es auch nicht:

#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:

Nun, jede Klassenmethode ist nur einfacher Code. Versuchen Sie, diesen Code hier zu analysieren:

Ich danke Ihnen! Es hat funktioniert.
 
joo:

Nun, das klärt die Sache jetzt auf, danke.

Aber um es auszuprobieren, habe ich einen Experten gemacht. Es wird auch dann gedruckt, wenn auf der Karte nichts passiert - und das sollte es auch nicht:

Nein, es wird gedruckt, weil Sie die Maus über das Diagramm bewegen.

 
sergeev:

Nein, es wird gedruckt, weil Sie die Maus über das Diagramm bewegen.

Ja, ich habe gesündigt - ich habe die Maus über das Diagramm bewegt, deshalb ist der Druck da.
 

Guten Tag.

Eine Frage aus Neugierde. Hier ist der 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;}
};

Die Idee ist die folgende:

  • Es gibt zwei Klassen (#1 und #2).
  • Die Klasse Nr. 1 stöbert in der Klasse Nr. 2 herum.
  • Die Klasse 2 stöbert in der Klasse 1 herum.

Es kompiliert in MQL ohne Fehler, es wird nicht in VS kompilieren (es sagt, ich kann nicht undefinierte Klassen verwenden). Und warum?

 
220Volt:

Es kompiliert in MQL ohne Fehler, es wird nicht in VS kompilieren (sagt, Sie können nicht undefinierte Klasse verwenden). Und warum?

Patamushta mql5 ist besser!

;)

 
MetaDriver:

Weil mql5 besser ist!

;)

Ja, vielleicht sollte ich ein Pluszeichen setzen ))