[ARCHIV] Alle Fragen von Anfängern, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 3. - Seite 53

 

Es scheint sich etwas zu klären.... Hier die Situation: Die globale Variable double Delete_Level wird deklariert. Im Hauptteil der if-Anweisung wird ihr ein neuer Wert zugewiesen:

Delete_Level = MA3

Und beim Verlassen des Körpers ändert sich der globale Wert von Delete_Level nicht. Frage: Wie kann ich den Wert der globalen Variablen Delete_Level ändern, wenn ich den Körper der if-Anweisung verlasse?

 
vovan-gogan:

Tut mir leid, aber könnten Sie es sich leicht machen?) Helfen Sie mir, den Fehler in


Die Tatsache, dass es NIEMALS eine perfekte Gleichheit geben wird - das ist die reale Welt, die reale Welt, in der es einige Unsicherheiten und Toleranzen für diesen oder jenen Prozess, Vorgang usw. gibt. Lernen Sie die "Grundlagen"... :-P Einfacher geht's nicht. Tun Sie, was ich empfohlen habe, und sagen Sie mir, ob der Zustand funktioniert. Ich bin selbst daran interessiert. Ich danke Ihnen.


 
vovan-gogan:

Es scheint sich etwas zu klären.... Hier die Situation: Die globale Variable double Delete_Level wird deklariert. Im Hauptteil der if-Anweisung wird ihr ein neuer Wert zugewiesen:

Und beim Verlassen des Körpers ändert sich der globale Wert von Delete_Level nicht. Frage: Wie kann ich den Wert der globalen Variablen Delete_Level ändern, wenn ich den Körper der if-Anweisung verlasse?


Wie kann sie sich nicht ändern? Das ändert sich natürlich. Drucken Sie den Code aus und sehen Sie sich die Registerkarte Log an, mit F12 - Schritt-für-Schritt-Test im Visualisierungsmodus.
 
sergeev:

Was ist das Datum, wie Sie und MQL es verstehen?
Ich möchte vor einer Bestellung eine Überprüfung vornehmen. Angenommen, eine Sitzung beginnt um 10:30 Uhr, dann sind um 10:35 Uhr alle Bedingungen für die Eröffnung eines Kaufauftrags erfüllt, aber der Auftrag sollte erst erteilt werden, wenn die aktuelle Uhrzeit größer oder gleich 10:45 Uhr ist.
 
Roman.:

Wie kommt es, dass sich das nicht ändert? Das ändert sich natürlich.


Das geht so. In einem EA deklariere ich zum Beispiel zuerst eine globale Variable int Orders, und wenn dann eine schwebende Order platziert wird, sollte sich der Wert von int Orders wie unten gezeigt ändern:

int Orders;
if (MA2_2<MA1_2 && MA2_1>MA1_1)//пересечение МА
{
   if (OrdersTotal()>= 1)
   {
   return;
   }
         SL = 30;
         TP = 12;
         S_Price = Low[1] - 1* Point;
         if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0)
            {
               Orders++;
               Alert ("Ордер выставлен. Orders=",Orders );
            }
}           

Aber das wird sich in den Aufträgen nicht ändern. Jedes Mal erhalten wir die Meldung "Auftrag ist erteilt. Aufträge=1"

 
vovan-gogan:


Das geht so. In einem EA deklariere ich zum Beispiel zuerst eine globale Variable int orders, und wenn dann eine schwebende Order platziert wird, sollte sich der Wert von int orders wie unten gezeigt ändern:

Aber es gibt keine Änderung der Aufträge. Jedes Mal erhalte ich die Meldung "Auftrag ist erteilt. Aufträge=1"


Sie brauchen keine globale Variable, sondern eine lokale Variable der Startfunktion. Also, bitte versuchen Sie

int start()                            // Спец. функция start
  {
    int Orders=0;
     if (MA2_2<MA1_2 && MA2_1>MA1_1)  //пересечение МА
        {
          if (OrdersTotal()>= 1) return(0);   
          SL = 30;
          TP = 12;
          S_Price = Low[1] - 1* Point;
          if (OrderSend (Symbol(), OP_SELLSTOP, Lots, S_Price, 0, SL, TP, "My order", Magic)>0)
            {
               Orders++;
               Alert ("Ордер выставлен.Orders = ",Orders );
            }
        }   
       Alert ("Ордеров нет. Orders = ",Orders );    
//----------------------------------------------------------------  
   return;                             // Выход из start()
  }
 
Roman.:


Sie brauchen dort keine globale Variable, sondern eine lokale Variable für die Startfunktion. Versuchen Sie also


Ist das in meinem Beispiel nicht auch so? Inwiefern ist sie anders? Nur habe ich keine Startfunktion hinzugefügt.
 
vovan-gogan:

Ist das nicht auch in meinem Beispiel so? Inwiefern ist sie anders? Nur habe ich keine Startfunktion hinzugefügt.

Sie sollten mein Beispiel ausprobieren.
 
Roman.:

Versuchen Sie meine Version.

Aber ich sehe keinen Unterschied darin, es zu versuchen. Bitte sagen Sie mir, was ich falsch gemacht habe.
 
Erklären Sie mir, warum ich beim Öffnen eines Diagramms (in Echtzeit) mit M30-Zeitrahmen und wende den Indikator mit dem Parameter int shift=iBarShift(NULL,PERIOD_M5,some_time) an; shift wird so sein, wie es sein sollte, aber wenn ich denselben Indikator durch den Tester mit Periode M30 laufen lasse, wird shift nicht berechnet?