Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 1185

 
odyn:

Hallo Genießer!

Hier ist der Code:

struct STRUCT_POSITION {\...\}

STRUCT_POSITION SPosition[];

Frage:

Was bedeutet STRUCT_POSITION SPosition[]; ? Wenn es eine Instanz der Struktur erstellt, warum ist es dann ein dynamisches Array? Ist es wirklich möglich, dies zu tun? Und warum?


Ich bin Ihnen für Ihre Antwort sehr dankbar.

Die Deklaration der Struktur struct STRUCT_POSITION {\...\} ist die Erstellung eines benutzerdefinierten Datentyps. Und STRUCT_POSITION SPosition[]; ist die Deklaration einer Variablen des Benutzertyps. Die Tatsache, dass die Variable ein Array ist, wird durch eckige Klammern [] angezeigt. Sie können mehrere Variablen des benutzerdefinierten Typs wie jeden anderen Typ deklarieren.

double a, b[];

STRUCT_POSITION Pos, SPosition[];// при условии, что структура уже создана.
In diesem Eintrag Typ, Variable,Array
 
Guten Tag an alle, zu jeder Tageszeit.
Auf einem meiner Android-Geräte funktioniert MT5 nicht mehr
Es hat einfach aufgehört zu funktionieren. Ich habe nichts geändert und nichts konfiguriert.
Es sieht aus wie auf dem Screenshot.
Ich habe Internet, alles andere funktioniert.
Ich habe nur ein Demokonto.
Tut mir leid, wenn ich an der falschen Stelle bin.
 

Gibt es ein Dienstprogramm (wie WatchDog) für den Neustart von MT5.


Angenommen, MT5 wurde aufgrund eines Fehlers geschlossen. Wie kann ich das sofort aus der Ferne nachvollziehen und MT5 neu starten.

Ich verwende MT4bar für MT4. Ich brauche etwas Ähnliches für MT5.

 

Guten Tag.

Ich versuche, eine universelle Basisklasse zu erstellen, die immer ein Objekt der gleichen Klasse definiert und aufruft.

Und ich mache zwei Lösungen zum Testen von Nachrichten. Ich habe eine Basisklasse CNewsFilter und zwei geerbte CNewsFilterLive und CNewsFilterTester. Ich möchte ein CNewsFilter-Objekt in meinem Code definieren. Je nachdem, welcher Modus gerade läuft, wird automatisch eine Klasse ausgewählt. Aber irgendetwas funktioniert nicht. Hier ist eine Basisklasse, ich habe nur die Init()-Methode als Beispiel angegeben.

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilter
  {
protected:
   //---
public:
                     CNewsFilter(void);
                    ~CNewsFilter(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilter::Init(string symbol_name,int magic_number)
  {
   return true;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif

Eine geerbte Klasse:

//+------------------------------------------------------------------+
//| News Filter Class                                                |
//+------------------------------------------------------------------+
class CNewsFilterTester : public CNewsFilter
  {
protected:
public:
                     CNewsFilterTester(void);
                    ~CNewsFilterTester(void);
   virtual bool      Init(string,int);
   virtual void      Deinit(void);                    
   virtual bool      CheckNews(ENUM_NEWS_TYPE &type);
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::CNewsFilterTester() :  m_delimiter('\t')
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
CNewsFilterTester::~CNewsFilterTester(void)
  {
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
bool CNewsFilterTester::Init(string symbol_name,int magic_number)
  {
   // some code
   return true;
  }

Und dann rufe ich es in meinem EA-Code auf:

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

Beim Debuggen gelangt er nie in die geerbte Klasse CNewsFilterTester, in die er laut der Basisklassenanweisung, die ich am Ende des Codes der Basisklasse hinzugefügt habe, gelangen sollte. __MQL5__ dient hier nur als Beispiel. Wie man das mit dem Prüfgerät macht, ist eine andere Frage. Bislang funktioniert die Idee selbst nicht - Methoden der geerbten Klasse werden nicht aufgerufen. Wenn Init() aufgerufen wird, geht es nicht zu Init() der geerbten Klasse - in diesem Beispiel CNewsFilterTester. Hilfe, bitte.

#ifdef __MQL5__//MQL_TESTER || MQL_VISUAL_MODE
#include <NewsFilterTester.mqh>
#else
#include <NewsFilterLive.mqh>
#endif
 
leonerd:

Guten Tag.

Ich versuche, eine universelle Basisklasse zu erstellen, die immer ein Objekt der gleichen Klasse definiert und aufruft.

Und ich mache zwei Lösungen zum Testen von Nachrichten. Ich habe eine Basisklasse CNewsFilter und zwei geerbte CNewsFilterLive und CNewsFilterTester. Ich möchte ein CNewsFilter-Objekt in meinem Code definieren. Je nachdem, welcher Modus gerade läuft, wird automatisch eine Klasse ausgewählt. Aber irgendetwas funktioniert nicht. Hier ist eine Basisklasse, ich habe nur die Init()-Methode als Beispiel angegeben.

Eine geerbte Klasse:

Und dann rufe ich es in meinem EA-Code auf:

Beim Debuggen gelangt er nie in die geerbte Klasse CNewsFilterTester, in die er laut der Basisklassenanweisung, die ich am Ende des Codes der Basisklasse hinzugefügt habe, gelangen sollte. __MQL5__ dient hier nur als Beispiel. Wie man das mit dem Prüfgerät macht, ist eine andere Frage. Bislang funktioniert die Idee selbst nicht - Methoden der geerbten Klasse werden nicht aufgerufen. Wenn Init() aufgerufen wird, geht es nicht zu Init() der geerbten Klasse - in diesem Beispiel CNewsFilterTester. Bitte um Hilfe.

Hier

#include <NewsFilter.mqh>
....
CNewsFilter    news_filter;

news_filter.Init(Symbol(),MagicNumber);

erstellen Sie ein Objekt der Basisklasse. Dementsprechend haben Sie überall eine Basisklasse.

 

Wie man eine Bedingung richtig schreibt :

wie diese

if(((MASlowHandle - PBid) > 0.0002) && ((MASlowHandle - MAFastHandle) > 0.0002))

oder so:

if((MASlowHandle - PBid) > 0.0002 && (MASlowHandle - MAFastHandle) > 0.0002)

??

 
odyn:

Wie man eine Bedingung richtig schreibt :

wie diese

oder so:

??

Das spielt eigentlich keine Rolle. Man kann es auch so schreiben.

if(MASlowHandle - PBid > 0.0002 && MASlowHandle - MAFastHandle > 0.0002)

Arithmetische Operationen haben Vorrang vor logischen Operationen.

Wenn jedoch sowohl && als auch || in der Bedingung vorkommen, ist es besser, sie durch Klammern zu trennen, um das Verständnis zu erleichtern.

 
Alexey Viktorov:

Das ist keine Frage des Prinzips. Man kann es auch so formulieren

Die Priorität der Arithmetik ist höher als die der Logik.

Wenn die Bedingung jedoch sowohl && als auch || enthält, ist es besser, sie durch Klammern zu trennen, damit sie leichter zu verstehen ist.

Vielen Dank für die Antwort!

 

Was ist der Grund dafür, dass ich den Code nicht veröffentlichen kann?

Ich bekomme immer eine Nachricht:

Codeüberprüfung mit Fehlern abgeschlossen:
Bei der Codeüberprüfung entdeckte Fehler Handelsstatistik Echtzeitbericht.
https://www.mql5.com/en/code/28074/230766

Aber ich verstehe den Grund für den Fehler bei der Veröffentlichung des Codes nicht.

Bitte beantworten Sie mir diese Frage.

Was ist das Problem, zumindest sollte es hervorgehoben werden.

 
jaffer wilson:

Was ist der Grund dafür, dass ich den Code nicht veröffentlichen kann?

Ich bekomme immer eine Nachricht:

Codeprüfung mit Fehlern abgeschlossen:
Bei der Codeprüfung entdeckte Fehler Handelsstatistik Echtzeitbericht.
https://www.mql5.com/en/code/28074/230766

Aber ich verstehe den Grund für den Fehler bei der Veröffentlichung des Codes nicht.

Bitte beantworten Sie mir diese Frage.

Was ist das Problem, zumindest sollte es hervorgehoben werden.

Wo ist die Frage? Was genau sind die Fehler? Tut mir leid, alle Telepathen sind im Urlaub.

Klicken Sie auf