Ein Fehler in der Funktion OrderSend() ? - Seite 7

 
tara:
Da er nicht vorsieht, dass die Variable beim Neustart des Programms initialisiert wird, MUSS er.

Noch einmal, für die, die im Tank sind:

//+------------------------------------------------------------------+
//| expert initialization function                                   |
//+------------------------------------------------------------------+
int init()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert deinitialization function                                 |
//+------------------------------------------------------------------+
int deinit()
  {
   return(0);
  }
//+------------------------------------------------------------------+
//| expert start function                                            |
//+------------------------------------------------------------------+
int start()
  {
   static int cc=20;
   Print("cc = ",cc);
   cc++;
   
   return(0);
  }
Beispielhafte Arbeiten. Die Initialisierung funktioniert.
 
hoz:

Allerdings ist mir dieser Punkt(aus dem Lehrbuch) nicht ganz klar:

"Statische Variablen werden einmalig vor dem Aufruf der spezialisierten init()-Funktion initialisiert, d.h. der Wert dieser Variablen geht beim Verlassen der Funktion, innerhalb derer eine statische Variable deklariert wird, nicht verloren.

Was hat das mit "vor dem Aufruf der speziellen init()-Funktion " und "nach" zu tun, d.h. wenn Sie eine Benutzerfunktion (dem Inhalt nach zu urteilen) verlassen, in der eine statische Variable deklariert ist? "

Eine Funktion, in der eine statische Variable deklariert wird, kann am Ende eines Programms stehen... d.h. am Ende des Codes oder an einer anderen Stelle. Die Funktioninit() wird einmal kurz vor dem Start des Programms ausgeführt. Sie erweist sich als inkonsequent. Wie kann eine Variable vor der Funktioninit() initialisiert werden?

Es spielt keine Rolle, wo sich die Funktion im Programm befindet, statische Variablen befinden sich außerhalb von Funktionen.
 
PapaYozh:
Es spielt keine Rolle, wo sich die Funktion im Programm befindet, die statischen Variablen befinden sich außerhalb der Funktionen.

Wie meinen Sie das?
 
tara:

Nein, das wird es nicht. Es ist ein Fehler :)
Es ist eine schlechte Angewohnheit, sich auf die Standardinitialisierung zu verlassen.
 
PapaYozh:

Noch einmal, für die, die im Tank sind:

Das Beispiel funktioniert. Die Initialisierung funktioniert.

Klinik...

Ja, die Initialisierung funktioniert. Genau einmal. Und beim Neustart ist das nicht der Fall. Ich wünschte, es wäre so. Ist das klarer?

 
Verdammt noch mal, verwenden Sie in EAs keine Statik.
 
tara:

Klinik...

Ja, die Initialisierung funktioniert. Genau einmal. Und beim Neustart ist das nicht der Fall. Ich wünschte, es wäre so. Ist das klarer?

Sie funktioniert nur einmal, wenn Sie den Expert Advisor neu starten.

Was meinen Sie mit Neustart, Eingabe der Expert Advisor-Eigenschaften und Beenden durch Drücken von OK?

 
TheXpert:
Verdammt noch mal, verwenden Sie in EAs keine Statik.
Nicht "nicht verwenden", sondern"richtig verwenden" oder"nicht falsch verwenden".
 

Ja, und außerdem:

1. Wenn das Konto geändert wird;

2. Beim Wechsel eines Instruments;

3. Beim Wechsel der TF.

Grund der Beschwerde: