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

 
leonerd:

aber ist es möglich, eine Klasse als Basisklasse zu deklarieren und sie dann, abhängig von den Bedingungen, als eine der geerbten Klassen zu überschreiben?

Die Aufgabe besteht darin, den Klassennamen im Code gleich zu halten.

Bitte geben Sie auch an, welche Richtlinie zur Definition des Testers zu verwenden ist.

Ist es möglich, dies auf diese Weise zu tun?

#include <NewsFilter.mqh>
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
 
Artyom Trishkin:

Ich danke Ihnen. Ja, aber hier ist das news_filter-Objekt undefiniert. Sie muss global deklariert werden, damit sie von überall im Code zugänglich ist. Was ist zu tun?

CNewsFilter       news_filter;
void OnInit()
  {
  }
 
leonerd:

Ich danke Ihnen. Ja, aber hier ist das news_filter-Objekt undefiniert. Sie muss global deklariert werden, damit sie von überall im Code zugänglich ist. Was ist zu tun?

In welchen Fällen wäre sie undefiniert?

 
Artyom Trishkin:

In welchen Fällen wird sie unbestimmt sein?

#include <NewsFilter.mqh>

void OnInit()
  {
//...
   if(MQLInfoInteger(MQL_TESTER))
      CNewsFilterTester news_filter;
   else
      CNewsFilter       news_filter;
//---
   news_filter.Init(Symbol(),MagicNumber);
  }
void OnTick()
  {
   news_filter.Check()...
  }
 

Bitte helfen Sie mir, die Logik hinter der Ausführung dieser Anweisung und dem Ausdruck ihrer Bedingung zu verstehen.


CTrade         m_trade;

CPositionInfo  m_position;

if(!m_trade.PositionClose(m_position.Ticket()))

Wenn sie die im Ticket definierte Position NICHT schließt?

Zuerst erhält es ein Positionsticket -> das Programm versucht, die Position zu schließen -> der zurückgegebene boolesche Wert wird umgekehrt.

Oder?

 
odyn:

Bitte helfen Sie mir, die Logik hinter der Ausführung dieser Anweisung und dem Ausdruck ihrer Bedingung zu verstehen.


Wenn sie die im Ticket definierte Position NICHT schließt?

Zuerst erhält es ein Positionsticket -> das Programm versucht, die Position zu schließen -> der zurückgegebene boolesche Wert wird umgekehrt.

Oder?

-> Gibt true zurück, wenn die Position mit dem angegebenen Ticket geschlossen ist, andernfalls false

Die Bedingung lautet: Wenn die Position mit dem angegebenen Ticket nicht geschlossen ist...

 
Сергей Таболин:

-> Gibt true zurück, wenn die Position mit dem angegebenen Ticket geschlossen ist, sonst false

Die Bedingung lautet: Wenn die Position mit dem angegebenen Ticket nicht geschlossen ist...

Die Frage ist, ob das Programm versucht, die Position zu schließen oder nicht.

 
odyn:

Die Frage ist, ob das Programm versucht, die Position zu schließen oder nicht.

Ja, das tut sie.

 
Сергей Таболин:

Ja, das ist er.

Vielen Dank für Ihre Antwort

 

Bitte erläutern Sie dies.

Die FunktionOnTradeTransaction.

Muss es im Expert Advisor sein?

Wenn nicht, in welchen Fällen sollte sie in den Code aufgenommen werden und warum?