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

 
trader781:
z.B.: Wie warte ich auf den Abschluss eines Geschäfts?
Alexey Viktorov:
1. Wenn ein Auftrag geöffnet wird, schreiben Sie das Ticket in die Variable auf globaler Ebene oder statisch, und überwachen Sie dann diesen Auftrag, bis er blau ist, oops, bis er durch den Vergleich OrderCloseTime() > 0 geschlossen wird. Wenn die Abschlusszeit größer als Null ist, wird der Auftrag abgeschlossen.

2. Die Ersetzung des GOTO-Operators ist wesentlich effizienter. Lesen Sie die Dokumentation über die Funktionen.

Gibt es eine Möglichkeit, mir ein Beispiel zu zeigen? Wie kann ich warten, bis der vorherige Handel abgeschlossen ist?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

 
DenZell:

Gibt es eine Möglichkeit, mir ein Beispiel zu zeigen? Wie kann ich warten, bis der vorherige Handel abgeschlossen ist?

double Lot = 0.1;      

double loss = 100;  



int start()

  {

  int order;

    if(OrdersTotal()==0)                            

    {                  

      order = OrderSend(Symbol(),OP_BUY,Lot,Ask,1*Point,Ask-loss*Point,Ask+loss*Point);   // Вверх

      order = OrderSend(Symbol(),OP_SELL,Lot,Bid,1*Point,Bid+loss*Point,Bid-loss*Point);    // Вниз

    }



   return(0);

  }

//+------------------------------------------------------------------+

Es gibt mehrere Möglichkeiten.

Die einfachste ist die Reihenfolge der Aktionen. Zuerst versuchen wir, etwas mit einem bereits offenen Auftrag zu tun, und dann, wenn es keinen offenen Auftrag gibt, versuchen wir, ihn zu setzen.

Wir unterteilen die Positionsbearbeitung und die Eröffnung eines neuen Auftrags in zwei separate benutzerdefinierte Funktionen. Anschließend wird in der Funktion OnTick() geprüft, ob offene Aufträge vorliegen, und je nach Ergebnis die eine oder andere Funktion aufgerufen.

In Worten sieht das so aus:

void OnTick()
{
if(OrdersTotal() > 0)
  открытие();
else
  сопровождение();
}

bool открытие()
{
// здесь код открытия
}

bool сопровождение()
{
// здесь код сопровождения
}
Und es ist noch schwieriger, nach einem bestimmten Auftrag zu suchen, wenn OrderCloseTime() > 0 ist.

Dies ist der Fall, wenn das Konto bietet, aber häufiger ist es der Fall der Arbeit von anderen Expert Advisors oder Öffnen von Aufträgen manuell.
 
Ist es möglich, das Startdatum der Kontohistorie im Terminal programmatisch auszuwählen?
 
Money_Maker:
Kann ich das Startdatum der Kontohistorie im Terminal programmatisch auswählen?
Sie können. Dies wird der allererste Auftrag in der Geschichte mit dem Typ 6 - Unruhbetrieb sein. Der Eröffnungszeitpunkt dieser Bestellung ist der Beginn der Kontohistorie.
 
Artyom Trishkin:
Sie können. Dies wird der erste Auftrag in der Geschichte mit dem Typ 6 - Unruhbetrieb sein.
Ich brauche nicht die erste Bestellung in der Geschichte ... die Geschichte öffnet maximal ... Ich brauche die Geschichte von einem bestimmten Datum ... die ich programmgesteuert (offenbar wurde die Frage aufgrund der Details gestrafft) festgelegt
 
Money_Maker:
Ich brauche nicht die erste Bestellung in der Geschichte ... die Geschichte ist auf die maximale Ich brauche die Geschichte von einem bestimmten Datum ... die ich programmgesteuert (offenbar wurde die Frage auf Kosten der Details gestrafft) festgelegt
Die Antwort ist ebenfalls möglich.

Aber die Frage ist immer noch "stromlinienförmig", also werde ich sagen, dass wir die Aufträge , deren Öffnungszeit vor diesem "bestimmten Datum" liegt, auslassen sollten.
 
Artyom Trishkin:
Die Antwort ist auch, dass Sie das können.

Aber die Frage bleibt immer noch "gestrafft", so dass ich sagen würde, dass wir Aufträge, deren Öffnungszeit früher als dieses "bestimmte Datum" ist, überspringen sollten ... natürlich kam es mir nicht in den Sinn ... aber für 7 Jahre gibt es eine Menge von Aufträgen ...
Ich habe nicht wirklich daran gedacht, nach dem Datum zu filtern ... aber 7 Jahre sind eine große Anzahl von Bestellungen.
Die Frage ist auf dem Screenshot rot unterstrichen ... die Frage ist also nicht gestrafft?
 
Money_Maker:
Natürlich ist es mir nicht in den Sinn gekommen, nach dem Datum zu filtern ... aber in 7 Jahren gibt es eine Menge Bestellungen.
Auf dem Screenshot ist die Frage rot unterstrichen und man muss ein bestimmtes Datum eingeben... die Frage ist also nicht gestrafft?
Ich verstehe Ihre Frage nicht :(

Was genau wollen Sie programmatisch tun?
 
Artyom Trishkin:
Ich verstehe Ihre Frage nicht :(

Was genau wollen Sie programmatisch tun?
Dort, wo es rot unterstrichen ist, geben Sie das Datum ein und klicken im Wesentlichen auf ok... das bestimmt die Tiefe der Historie im Bericht
 
Money_Maker:
wo es rot unterstrichen ist, geben Sie das Datum ein und klicken Sie im Wesentlichen auf ok... das bestimmt die Tiefe des Verlaufs im Bericht
In einer reinen MQL kann man das nicht programmatisch machen. Ich glaube, Sie müssen dieses Fenster und das Datum über WinAPI suchen.
Grund der Beschwerde: