Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 9

 
gyfto:

Man könnte auch if((b-a)*(c-a)*(d-a)>0) schreiben, aber nicht unbedingt schneller. Das logische UND ist eine binäre Multiplikation, es ist nur eine andere Schreibweise desselben Ausdrucks, der einzige Unterschied ist die Größe der Variablentypen. a>b ist eine boolesche Variable, 4 Byte, und b-a, wenn sie doppelt sind, ist die Differenz doppelt so groß (8 Byte), und diese Multiplikation ist mindestens 2-mal länger.


Unbezahlbarer Rat.

Lassen Sie mich das erklären. Sie können Ihren Ausdruck als if(((a>b)*(a>c)*(a>d)==1) umschreiben, da Ausdrücke in Klammern die Werte 0 oder 1 annehmen (und diese wiederum in define im Precompiler als false und true definiert sind).

Danke - ich denke, das wird schneller gehen.
 

Leute, bitte um Rat.

Im Strategietestmodus kann ich die Zahlen in den Optimierungseigenschaften nicht ändern:

Mindestguthaben 200

Maximaler Gewinn 10000

usw.

Was ist das Problem?

 

Können Sie mir sagen, welche Werte init, start und deinit zurückgeben können und was sie bedeuten?

Ich habe versucht, das Forum zu durchsuchen, konnte es aber nicht finden. Das Handbuch enthält diese Informationen nicht. Wahrscheinlich handelt es sich um vertrauliche Informationen. : )))(Emotionaler Text gelöscht... )

Wie ich vermute - "0" - es ist alles gut gelaufen... Da ihr Typ aber interger ist, kann es offenbar mehr als nur 2 Werte geben...

 
Chiripaha:

Können Sie mir sagen, welche Werte init, start und deinit zurückgeben können und was sie bedeuten?

Ich habe versucht, das Forum zu durchsuchen, konnte es aber nicht finden. Das Handbuch enthält diese Informationen nicht. Wahrscheinlich handelt es sich um vertrauliche Informationen. : )))(Emotionaler Text gelöscht... )

Wie ich vermute - "0" - es ist alles gut gelaufen... Aber, da ihr Typ interger ist, kann es offensichtlich mehr als nur 2 Werte geben...

Dies wurde erst kürzlich diskutiert. Referenz:

In MQL4 gibt es 3 Funktionen mit vordefinierten Namen:

init() - Funktion, die bei der Initialisierung des Moduls aufgerufen wird. Fehlt sie, wird bei der Initialisierung keine Funktion aufgerufen.

start() - die Hauptfunktion. Sie wird bei den Expert Advisors nach dem Empfang des nächsten Ticks aufgerufen. Bei benutzerdefinierten Indikatoren wird sie während der Neuberechnung aufgerufen, nachdem der Indikator an das Diagramm angehängt wurde, wenn das Client-Terminal geöffnet wird (wenn der Indikator an das Diagramm angehängt ist), und auch nach dem nächsten Tick. In Skripten wird es sofort nach dem Anhängen an das Diagramm und der Initialisierung ausgeführt. Wenn im Modul keine start()-Funktion vorhanden ist, kann dieses Modul (Expert Advisor, Skript oder benutzerdefinierter Indikator) nicht gestartet werden.

deinit() - die Funktion, die bei der Deinitialisierung des Moduls aufgerufen wird. Fehlt sie, wird bei der Deinitialisierung keine Funktion aufgerufen.

Vordefinierte Funktionen können Parameter haben. Wenn diese Funktionen jedoch vom Client-Terminal aufgerufen werden, werden keine Parameter von außen übergeben, sondern die Standardwerte verwendet.
Die Funktionen start(), init() und deinit() können von jeder Stelle des Moduls gemäß den allgemeinen Regeln aufgerufen werden, ebenso wie andere Funktionen.

Es ist nicht wünschenswert, start() oder trade von der init()-Funktion aus aufzurufen, da zum Zeitpunkt der Initialisierung des Moduls die Chartdaten, Marktpreise usw. möglicherweise noch nicht bereit sind. Die Funktionen init() und deinit() sollten ihre Arbeit so schnell wie möglich beenden und auf keinen Fall bei dem Versuch stecken bleiben, den vollen Betrieb aufzunehmen, bevor die Funktion start() aufgerufen wird.

Bei Systemaufrufen spielt die Rückgabe keine Rolle.
 

OK, dann werde ich versuchen, die Frage zu klären.

Ich möchte zum Beispiel einige Parameter in der Initialisierungsphase prüfen und je nach Ergebnis entweder zur Startphase übergehen oder nicht.

Wenn ich Ihren Kommentar richtig verstanden habe, Vadim, dann spielt das Ergebnis der Initialisierung keine Rolle (in diesem Fall) und die Funktion Start wird gestartet?

 

dann müssen Sie das Init von Anfang an aufrufen.

Warum müssen Sie sich all diese Mühe machen? Die globalen Variablen wurden noch nicht gelöscht...

 
Chiripaha:

OK, dann werde ich versuchen, die Frage zu klären.

Ich möchte zum Beispiel einige Parameter in der Initialisierungsphase prüfen und je nach Ergebnis entweder zur Startphase übergehen oder nicht.

Wenn ich Ihren Kommentar richtig verstanden habe, Vadim, würde das Ergebnis der Initialisierung keine Rolle spielen (in diesem Fall) und die Funktion Start würde gestartet werden?

Rustam antwortete:

FAQ:

dann müssen Sie das Init von Anfang an selbst aufrufen.

Warum eine solche Komplikation? Niemand hat bisher globale Variablen gestrichen...

Sie deklarieren globale Variablen und initialisieren sie nach Bedarf. Alle Funktionen desselben Moduls können die globalen Variablen sehen.
 
Zhunko:

Rustam antwortete:

Sie deklarieren die Variablen global und initialisieren sie nach Bedarf. Alle Funktionen in einem Modul können die globalen Variablen sehen.

Ja, es sei denn, es handelt sich um eine Prüfung, die beispielsweise den Zugang zum Programm einschränkt.
 
FAQ:

dann müssen Sie das Init von Anfang an aufrufen.

Warum müssen Sie sich all diese Mühe machen? Die globalen Variablen wurden noch nicht gelöscht...


Wäre es nicht einfacher, dies mit einer Flagge zu überprüfen? Ja, natürlich...
 
hoz:

Wäre es nicht einfacher, dies mit einer Flagge zu kontrollieren? Sicherlich weltweit...

Nein, es ist nicht einfacher. Denn wenn ein negatives Flag (oder eine globale Variable) vorhanden war, muss die Prüfung trotzdem durchgeführt werden. Sowohl das Flag als auch die globale Variable funktionieren nur im positiven Fall. Und einige Funktionen werden beim Start immer noch benötigt (obwohl das hier anders ist).

Wie auch immer Sie es betrachten, fangen Sie auf jeden Fall an: entweder durch Wiederholung von "inite", was genauso ärgerlich ist, oder durch Wiederholung der erforderlichen Funktionen.

Grund der Beschwerde: