Fragen von Neueinsteigern zu MQL4 und MQL5, Hilfe und Diskussion über Algorithmen und Codes - Seite 853

 
Priffekt:
Guten Tag, ich habe alle Werte geändert, aber ich bin an der Möglichkeit interessiert, die Funktion selbst in den EA-Einstellungen zu deaktivieren.

Guten Morgen.

Wenn Sie ein Stück Code einfügen, verwenden Sie die </> Taste, es wird viel besser lesbar sein, ich schrieb Ihnen oben, dass "es besser ist, auf diese Weise zu befestigen".

In Beitrag 8518 habe ich Ihnen Ihren eigenen Code geschickt, in dem ich den Schalter bereits hinzugefügt habe. Sie müssen nur die erste Zeile mit den eingehenden Variablen und die zweite Zeile mit OnTick trennen.

 
Sergey Voytsekhovsky:

Natürlich bin ich für die Rolle des Beraters nicht besonders geeignet, aber die Aufgabe scheint nicht schwer zu sein.

Bitte beachten Sie, dass ich nicht in Ihren Code selbst, es gibt eine Menge von Kontroversen, auch für mich (Dummies), beginnend mit der Tatsache, dass Ihre Funktion ist vom Typ void. Dieser Typ wird entweder verwendet, um anzuzeigen, dass die Funktion nicht einen Wert zurück, oder als Parameter der Funktion zeigt das Fehlen von Parametern. Und Sie haben return(Exist) am Ende Ihres Codes;

Deklarieren Sie eine Eingabevariable, schreiben Sie sie als Parameter für Ihre Funktion und verlassen Sie die Funktion, wenn Sie "diese Variable auf False" setzen.

Die Hervorhebung ist absolut falsch. Niemand verbietet den Umgang mit global deklarierten Variablen.

int n = 0;

int OnInit()
 {
  f();
 }

void OnTick()
 {
  Print(n);
  f();
 }

void f()
 {
  n += n*3+12;
 }
 
Priffekt:
Guten Tag, ich habe alle Werte geändert, aber ich bin an der Möglichkeit interessiert, die Funktion selbst in den EA-Einstellungen zu deaktivieren.

Wenn Sie eine Funktion in den EA-Einstellungen deaktivieren möchten, müssen Sie ein variables Flag setzen

input bool flag = true; // флаг отключения

void OnTick()
 {
  if(flag)
   f();
 }

void f()
 {
  // что-то выполняем
 }
Die Funktion f() wird nur ausgeführt, wenn flag == true ist;
 
Alexey Viktorov:

Dies ist absolut falsch. Niemand verbietet die Verarbeitung von Variablen, die auf globaler Ebene deklariert sind.

Seltsam, das ist eigentlich ein Zitat aus dem MQL5-Handbuch, das in voller Länge so aussieht:

"Der Typ void und die Konstante NULL.

Syntax Der Typ void ist ein Grundtyp, zusammen mit den Typen char, uchar, bool, short, ushort, int, uint, color, long, ulong, datetime, float, double und string. Dieser Typ wird entweder verwendet, um anzuzeigen, dass die Funktion keinen Wert zurückgibt, oder als Funktionsparameter, um anzuzeigen, dass keine Parameter vorhanden sind.

Eine vordefinierte konstante Variable NULL ist vom Typ void. Sie kann ohne Umwandlung Variablen anderer Grundtypen zugewiesen werden. Es ist auch erlaubt, Variablen von Grundtypen mit NULL" zu vergleichen .


Ich habe dieses Fragment zitiert, weil die Funktion im Text des Autors vom Typ void ist, d.h. sie sollte nichts anderes als ".return(Exist);". Was wahrscheinlich falsch ist, meinen Sie nicht auch?

Die ganze Diskussion über die Datenverarbeitung wurde nicht einmal geführt. Es kann sein, dass ich irgendwo falsch liege, denn ich lerne gerade erst die Grundlagen, aber trotzdem danke für die Informationen.

 
 
 
Alekseu Fedotov:

"...return(Exist);" ,

Rückgabewert, nach Funktion

wie diese

Ja, Sie haben recht, ich war unaufmerksam und habe diese Rückkehr auf die vorherige Funktion (über die) zurückgeführt.

 
Alexey Viktorov:

Darum geht es nicht... Ich habe nur die hervorgehobene Stelle nicht sorgfältig gelesen.

Hervorgehobener viod bedeutet keine Parameter. Aber Sie müssen es nicht schreiben. Keine Parameter, also nicht...

Ja, Sie haben Recht, ich war auch unaufmerksam.

 

Frage an die Experten.

Ich versuche, einen EA zu schreiben, fand ein Skript, das meinen Bedürfnissen in Bezug auf Funktionalität entspricht. Ich möchte eine Funktion daraus machen, ich bereite die Umgebung vor, natürlich gibt es Überschneidungen in Standardbibliotheken. Ich möchte den Unterschied zwischen diesen Einträgen verstehen und ob das Zeichen "*" an sich eine geheime Bedeutung hat, ist es möglich, sie in einen einzigen Typ innerhalb der zukünftigen Funktionen umzubenennen?

CTrade         trade;
CPositionInfo  apos;
CSymbolInfo    asymbol;


CTrade         *m_trade;
CSymbolInfo    *m_symbol;
CPositionInfo  *m_position_info; 

 

Hilfe, wie kann ich die erste Zeitkoordinate der Trendlinie herausfinden?

price = NormalizeDouble(ObjectGetValueByShift("trend",0),Digits);//ЦЕНА НА ТЕКУЩЕМ
Grund der Beschwerde: