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

 

Hilfe, bitte. Was ist hier los?

 double buy_OrderProfit = 0;
 double sell_OrderProfit = 0;
 double buy_Order_price  = 0;
 double sell_Order_price = 0;
 
  double Drop_proc1 =AccountEquity();
  double Drop_proc2 =AccountBalance();
  double Drop_proc3 =(Drop_proc1*100)/Drop_proc2;
  
  if (Drop_procK <= Drop_proc3)
  {
  for(int i=OrdersTotal()-1; i>=0; i--)
       if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
            if((OrderType()==OP_SELL) sell_OrderProfit + OrderProfit())
                 if((OrderType()==OP_BUY)  buy_OrderProfit + OrderProfit()) 

  for (int i=OrdersTotal()-1; i>=0; i--)
        if ((OrderSelect(i,SELECT_BY_POS,MODE_TRADES))&& (OrderSymbol()==Symbol() && OrderMagicNumber()==Magic))
             if ((OrderType()==OP_BUY ) && ( buy_OrderProfit < sell_OrderProfit ) )     
                  OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_BID),slippage);
                    if ((OrderType()==OP_SELL) && sell_OrderProfit < buy_OrderProfit )
                         OrderClose (OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(),MODE_ASK),slippage);  
        } 
   else 1=1;

Fehler 'if' - Ausdrücke sind in einem globalen Bereich nicht erlaubt v.4.1.5(2).mq4 793 3



 
new-rena:

Meine Herren!

Wie kann ich wissen, ob der Markt während der Initialisierung eines MQL4 Expert Advisors geschlossen ist oder nicht? (welcher Befehl?)

Einen solchen Befehl gibt es nicht. Sie können versuchen, einen schwebenden Auftrag mit langer Laufzeit zu platzieren, und ihn dann löschen, wenn er erfolgreich ist.
 
Kisolen:

Hilfe, bitte. Was ist hier los?

Die if-Bedingung kann nur innerhalb einer Funktion stehen.
 
Sergei Vladimirov:
Die if-Bedingung kann nur innerhalb einer Funktion stehen.
Ich danke Ihnen für Ihre Antwort. Dieser Code befindet sich innerhalb der Funktion void OnTick(), innerhalb der geschweiften Klammern. Er steht ganz oben, ich bitte um Entschuldigung, dass ich ihn nicht kopiert habe. Verstehe ich das richtig? Dies ist eine Funktion, richtig? Und es gibt immer noch einen Fehler.
 
Kisolen:
Ich danke Ihnen für Ihre Antwort. Dieser Code befindet sich innerhalb der Funktion void OnTick(), innerhalb der geschweiften Klammern. Es ist ganz oben, tut mir leid, dass ich es nicht kopiert habe. Verstehe ich das richtig? Dies ist eine Funktion, richtig? Und es gibt immer noch einen Fehler.
Der Compiler schreibt, dass if im globalen Bereich liegt. Vielleicht ist es nur ein Ungleichgewicht der Klammern, sehen Sie es sich an (was übrigens bei dieser Art von Code nicht überrascht).
 
Vitaly Muzichenko:

Versuchen Sie das hier, es schien einmal zu funktionieren, aber ich habe es nicht benutzt:

Ihr Code funktioniert nicht, da die aktuelle Zeit durch TimeCurrent() bestimmt wird und diese die Zeit des letzten Kurses zurückgibt, und Ihre Funktion immer true zurückgibt. Sie können das Gleiche mit TimeLocal() tun, unter Berücksichtigung des Zeitzonenunterschieds zwischen Computer und Server, aber das garantiert nicht das richtige Ergebnis: die Uhr auf dem Computer kann falsch sein, und es kann nicht die Zeit der Sitzung auf dem Server füllen, und an Feiertagen (Silvester), weiß niemand, was zurückgegeben wird... Und es gibt keine einfache und zuverlässige Funktion wie MarketIsClosed() in µl.
 
Sergei Vladimirov:
Einen solchen Befehl gibt es nicht. Sie könnten versuchen, einen langfristigen schwebenden Auftrag zu erteilen und ihn dann löschen, wenn er sich bewahrheitet.

Ja, eine gute Option. Das Team meldet die Fehlermeldung "Markt ist geschlossen".

Das Problem ist gelöst.

Ich danke Ihnen!

 

Guten Tag zusammen.

Bitte beraten Sie, welchen Weg zu graben, oder wenn Sie ein Stück Code für ein Beispiel können :)

Ich brauche Folgendes:

Ich habe Expert Advisor und Indikator auf dem Diagramm. Wie kann ich die Parameter des Indikators mit Expert Advisor ändern?

Vielen Dank im Voraus für die Antworten.

 
GrRusel:

Guten Tag zusammen.

Bitte beraten Sie, welchen Weg zu graben, oder wenn Sie ein Stück Code für ein Beispiel können :)

Ich brauche Folgendes:

Ich habe einen Expert Advisor und einen Indikator in einem Diagramm. Wie kann ich die Parameter des Indikators mit Expert Advisor ändern?

Vielen Dank im Voraus für die Antworten.

Sie werden die Einstellungen des Indikators nicht visuell ändern, aber wenn Sie Daten aus dem Indikator über iCustom in den Expert Advisor einlesen, können Sie Parameter einstellen, die der Expert Advisor von diesem Indikator erhält. Sie können auch globale Variablen verwenden, wenn Sie dem Indikator beibringen, sie zu verwenden.
 
Vladimir Zubov:
Sie werden die Einstellungen des Indikators nicht visuell ändern, aber wenn Sie Daten aus dem Indikator über iCustom in den Expert Advisor einlesen, können Sie Parameter einstellen, die der Expert Advisor von diesem Indikator erhält. Sie können auch globale Variablen verwenden, wenn Sie dem Indikator beibringen, sie zu verwenden.
Aber wenn ich die Einstellungen für den Indikator ändere, möchte ich, dass der Indikator seine Visualisierungseinstellungen ändert - zum Beispiel habe ich die OBOS-Zonen geändert. Ich habe beschlossen, die OBOS-Zonen zu ändern. Vielleicht sollte ich sie aus dem Diagramm entfernen und dann mit neuen Einstellungen hinzufügen, aber das muss über Expert Advisor geschehen. Hat nicht jemand ein solches Problem und jedes Mal, wenn sie alles von Hand ändern - es kann nicht sein...