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

 
Valeriy Yastremskiy #:
So etwas gibt es nicht. Es handelt sich nicht um eine Verfahrenssprache. Hier ist das Programm strikt von oben nach unten ausgerichtet. Und Funktionsaufrufe lösen alles, was es an Schleifen gibt, wenn überhaupt. AND OOP)
Ich hab's. Ich hab's. Danke für die Klarstellung.
 
Tretyakov Rostyslav #:

Ich danke Ihnen!

 
Tretyakov Rostyslav #:

Hallo

    if(OrderSelect(FindTicketOrder(), SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(FindTicketOrder(),OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

Ich habe einen Gewinnauftrag für ein Ticket, das ich schließen möchte, wenn es -x erreicht.

Aber ich bekomme alle Aufträge nacheinander abgeschlossen.

Können Sie mir sagen, wie man das richtig macht?

 
Alexander Avksentyev #:

Hallo

Ich habe einen Gewinnauftrag für ein Ticket, das ich schließen möchte, wenn es -x erreicht.

Aber ich bekomme alle Aufträge nacheinander abgeschlossen.

Können Sie mir sagen, wie man es richtig macht?

Versuchen Sie es auf diese Weise

 int min_ticket=FindTicketOrder();
    if(OrderSelect(min_ticket, SELECT_BY_TICKET,MODE_TRADES)) 
    { 
      if(OrderProfit()<=-x);
        {
         OrderClose(min_ticket,OrderLots(),OrderClosePrice(),iSlippage,clrPink);
        }
    } 
  else 
    Print("OrderSelect() вернул ошибку - ",GetLastError());

Im Allgemeinen sollten Sie die gesamte Funktion entwickeln, um zu verstehen, was Sie tun

//+------------------------------------------------------------------+
void Функция()
  {
   ...твой код, возможные ошибки;
  }
//+------------------------------------------------------------------+
 
Alexander Avksentyev #:

Hallo

Ich habe einen Gewinnauftrag für ein Ticket, das ich schließen möchte, wenn es -x erreicht.

Aber ich bekomme alle Aufträge nacheinander abgeschlossen.

Können Sie mir sagen, wie man das richtig macht?

Wie werden alle Aufträge geschlossen, wenn ich nur einen OrderClose-Aufruf sehe?

Es ist nicht ganz klar, wo dieser Code überhaupt aufgerufen wird... Auch der Algorithmus des Roboters ist unklar...
 
Mihail Matkovskij #:

Wie schließen Sie alle Aufträge, wenn ich nur einen OrderClose-Aufruf sehe?

Er schließt den Auftrag ab, sobald er geöffnet wird.

 
Tretyakov Rostyslav #:
Das ist nicht das, was Sie wollten - es ist ein Beispiel. Ich habe einen EA für den halbautomatischen Handel entwickelt.


Was Sie wollen, müssen Sie selbst schreiben).

Wenn überhaupt, werde ich helfen.

Also, ich werde genauer beschreiben, was ich für diese Fast Pending Orders Panel EA brauchen, habe ich teilweise Stücke von Code aus dieser Liste (20%) gefunden, aber der Rest werde ich brauchen, um Sie zu fragen, Kollegen.


1) Shell: Anzeige als solche ein Brett mit Tasten auf dem Diagramm: BUY_lp(niedrigere ASK in___pips), SELL_hp (höhere BID in___pips) - Anzahl in Pips manuell auf dem Brett eingegeben, BUY_lt (niedrigere ASK bis zu____Sekunden),SELL_ht (höhere BID bis zu____Sekunden) - Anzahl in Sekunden manuell auf dem Brett eingegeben, CLOSE_buys, CLOSE_sells - schließen alle Aufträge.

a) Code zum Erstellen einer Schaltfläche auf dem Diagramm; die Anzeigetafel als Hintergrundobjekt;

b) Code für die Eingabe von Werten in diese Anzeigetafel (Pips, Sekunden) spezielle Felder für diese

c) Speichern des Wertes der Pips in einer bestimmten Speicherdatei, in der der Preis nach dem Drücken der Taste festgelegt wird und die Anzahl der Pips für den Preis, zu dem Sie in den Markt einsteigen wollen, addiert oder subtrahiert wird;

d) Speicherung des Sekundenwerts in einer bestimmten Speicherdatei, in der der Mindest-/Höchstwert des Preises für den gewählten Zeitraum "in Sekunden" kontinuierlich gezählt wird;

2) innen: Ausführung.

a) Lesen Sie den Wert in Pips und den Festpreis aus der Datei, nachdem Sie die Taste BUY_lp oder SELL_hp gedrückt haben, um ihn mit dem aktuellen Preis zu vergleichen;

b) Wenn die Taste BUY_lt oder SELL_ht gedrückt wird, wird der Wert in Sekunden und der geänderte Höchst-/Mindestpreis aus der Datei gelesen und mit dem aktuellen Preis verglichen;

c) wenn der aktuelle Kurs den gewünschten Wert erreicht - in den Markt eintreten (offener Auftrag);

d) Schaltfläche zum Schließen der Order oder aller Orders. Diese Schaltfläche sollte je nach Ausführungsmodus unterschiedlich funktionieren; wenn der Preis nach "Pips" eingegeben wurde, dann sollte nach dem Schließen um eine gleiche Anzahl von Pips der Schließungspreis in die "bessere" Richtung abweichen (auf diesen Preis wird gewartet, nachdem Sie auf "Schließen" gedrückt haben), wenn die Schaltfläche "nach Sekunden" ist, dann sollte der beste Preis für eine bestimmte Zeitspanne berechnet werden (auf diesen Preis wird gewartet, aber nicht niedriger/höher in dem Moment, in dem Sie die Schaltfläche drücken).

 
Alexander Avksentyev #:

Schließt den Auftrag ab, sobald er geöffnet wird

Nun, ja. Der Gewinn hat immer einen negativen Wert, sobald er aufgrund des Spreads eingegeben wird... Versuchen Sie, den Wert von x zu verringern.

Und es ist besser, Ihre eigene Gewinnberechnungsfunktion in Pips zu machen (natürlich, wenn Sie sie nicht in der Einzahlungswährung einstellen wollen).
 
Mihail Matkovskij #:

Nun, ja, der Gewinn hat zum Zeitpunkt des Einstiegs aufgrund des Spreads immer einen negativen Wert... Versuchen Sie, den Wert von x zu verringern.

-x kleiner als Spanne, Ausgabe auf Print

if(OrderProfit()<=-x);

wird wahr, wenn die Bedingungen übereinstimmen. einen Schließbefehl hinzufügen. wird sofort geschlossen

 
Mihail Matkovskij #:

Nun, ja, der Gewinn hat immer einen negativen Wert im Moment nach dem Einstieg, weil es einen Spread gibt... Versuchen Sie, den Wert von x zu verringern.

Und es wäre besser, eine eigene Funktion für die Berechnung des Gewinns in Pips zu erstellen (natürlich nur, wenn Sie ihn nicht in der Einzahlungswährung festlegen wollen).

Sie können es mit Punkten machen, es macht keinen großen Unterschied. Ich wollte es nur einfacher machen

Grund der Beschwerde: