Jede Anfängerfrage, um das Forum nicht zu überladen. Fachleute, gehen Sie nicht vorbei. Nirgendwo ohne dich - 6. - Seite 383

 
clubsmi:

Bitte beraten Sie mich, wie man in MQL4 Prozentsätze berechnet

z.B. x=10+3% wie kann man das programmatisch schreiben?

Ich kann sie im Nachschlagewerk nicht finden.



x=10*1.03
 
r772ra:


x=10*1.03



ok! aber ich werde sie nicht jedes Mal neu berechnen, ich brauche eine Funktion, die die Prozentsätze selbst berechnet

y=3; // Die Zahl ändert sich mit jedem Tick

x=10+yP; // anstelle von P braucht man einen Prozentsatz. ich kann es nicht in mql schreiben

 
if(Line_7 > Lines_1 && Lines_1 > Line_6)
{
OrderSend(Symbol(),OP_BUY,Lots_Typ,Ask,5,0,0);
}
if(AccountProfit() > 50)
{ 
OrderClose(Symbol(),5,Ask,0);
}
Logische Codekette:

1 Wenn die Linie 7 über der Linie 1 liegt, wobei die Linie 1 über der Linie 6 liegt,
2 dann
3 wird ein Kaufauftrag mit Lots_Typ Volumen, möglichem Slippage von 5 Pips, ohne SL und TP, zum Schlusskurs eröffnet.

1 Wenn der potenzielle Gewinn dieses Kontos höher als 50 $ ist,
2 dann
3 werden alle Aufträge geschlossen, unabhängig von ihren Eigenschaften (Volumen, Kauf/Verkauf, ...).

Die Logikkette ist korrekt aufgebaut, aber der Code in der Logikkette ist es nicht.

OrderClose(Symbol(),5,Ask,0);
Der Fehler liegt hier.
Wenn wir eine logische Kette in Bezug auf den obigen Code bilden, erhalten wir:
Schließen von 5 Lots eines Auftrags mit einem Schlusskurs und einem möglichen Slippage von 0 Pips.

Wie kann man sie korrigieren? Bitte beraten Sie mich.
 
clubsmi:



Ich kann sie nicht jedes Mal neu berechnen, ich brauche eine Funktion, die den Prozentsatz selbständig berechnet.

y=3; // die Zahl ändert sich ständig mit jedem Tick

x=10+yP; // wir brauchen Prozente anstelle von P. Ich kann es nicht in mql schreiben.

im Verhältnis zu was?
 
clubsmi:



Ich kann sie nicht jedes Mal neu berechnen; ich brauche eine Funktion, die den Prozentsatz selbständig berechnet.

y=3; // die Zahl ändert sich ständig mit jedem Tick

x=10+yP; // anstelle von P brauchen wir Prozent.

//+----------------------------------------------------------------------------+
double Percent(double x, double y) {return(x*0.01*y);}
//+----------------------------------------------------------------------------+

x - Anzahl, y - benötigter Prozentsatz

Übergeben Sie die Zahl x und den Prozentsatz y. Die Ausgabe ist der Prozentsatz y der Zahl x.

 
Link_x:
Logische Codekette:

1 Wenn Zeile 7 über Zeile 1 liegt, muss Zeile 1 über Zeile 6 liegen,
2 dann
3 ein Kaufauftrag wird mit Volumen Lots_Typ, möglicher Slippage von 5 Punkten, ohne SL und TP, zum Schlusskurs eröffnet.

1 Wenn der potenzielle Gewinn dieses Kontos höher als 50 $ ist,
2 dann
3 alle Aufträge werden geschlossen, unabhängig von ihren Eigenschaften (Volumen, Kauf/Verkauf, ...).

Die logische Kette ist korrekt, aber der Code nach der logischen Kette ist es nicht.

Der Fehler liegt hier.
Wenn wir eine logische Kette in Bezug auf den obigen Code bilden, erhalten wir:
Schließen von 5 Lots eines Auftrags mit einem Schlusskurs und einem möglichen Slippage von 0 Pips.

Wie kann man sie korrigieren? Bitte beraten Sie mich.

Sehr geehrter Herr, lesen Sie die Dokumentation sorgfältig durch,

Speziell

Die Funktion bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Schließung der Stelle. Gibt TRUE zurück, wenn die Funktion erfolgreich abgeschlossen wurde. Gibt FALSE zurück, wenn die Funktion fehlschlägt. Um Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError() auf.
Parameter:
Ticket - Eindeutige Seriennummer der Bestellung.
Lose - Anzahl der zu schließenden Lose.
Preis - Der Schlusskurs.
Schlupf - Der Wert der maximalen Slippage in Pips.
Farbe - Farbe des Schlusspfeils im Diagramm. Fehlt der Parameter oder hat er den Wert CLR_NONE, wird der Pfeil nicht im Diagramm angezeigt.
Beispiel:
 if(iRSI(NULL,0,14,PRICE_CLOSE,0)>75) { OrderClose(order_id,1,Ask,3,Red); return(0); }

 
r772ra:

Sehr geehrter Herr, lesen Sie die Dokumentation sorgfältig durch,

speziell

Die Funktion bool OrderClose( int ticket, double lots, double price, int slippage, color Color=CLR_NONE)
Schließung der Stelle. Gibt TRUE zurück, wenn die Funktion erfolgreich abgeschlossen wurde. Gibt FALSE zurück, wenn die Funktion fehlschlägt. Um Informationen über den Fehler zu erhalten, rufen Sie die Funktion GetLastError() auf.
Parameter:
Ticket - Eindeutige Seriennummer der Bestellung.
Lose - Anzahl der zu schließenden Lose.
Preis - Der Schlusskurs.
Schlupf - Der Wert der maximalen Slippage in Pips.
Farbe - Farbe des Schlusspfeils im Diagramm. Fehlt der Parameter oder hat er den Wert CLR_NONE, wird der Pfeil nicht im Diagramm angezeigt.
Beispiel:

Ich weiß das alles.
Wie kann ich erreichen, dass alle Aufträge unabhängig von ihren Merkmalen abgeschlossen werden?
 
Link_x:
Ich weiß das alles.
Wie kann ich erreichen, dass alle Aufträge unabhängig von ihren Merkmalen abgeschlossen werden?

Gut für dich,

OrderClose(Symbol(),5,Ask,0) //зто твое

OrderClose(order_id,1,Ask,3,Red); // А зто пример из документации

// Найди отличие
 
artmedia70:

x - Zahl, y - erforderlicher Prozentsatz

Übergeben Sie die Zahl x und den gewünschten Prozentsatz y, die Ausgabe ist der Prozentsatz y der Zahl x



Genau das, was ich brauchte, vielen Dank... Es ist so einfach, ich habe einen halben Tag lang nachgedacht! Nochmals vielen Dank!

 
r772ra:

Gut für dich,


In meinem Beispiel: zufällige Auftragsnummer, Volumen 5, zum Schlusskurs, mit Slippage 0, kein Pfeil.
Im Beispiel des Dokuments: Berechnung der Auftragsnummer durch order_id, Volumen ist 1, durch Schlusskurs, mit Slippage 3, Pfeil ist rot.

1 es gibt eine order_id Berechnung - keine order_number Berechnung
2 volume (1) - volume (5)
3 slippage (3) - slippage (0)
4 arrow red - no arrow

Differenzen gefunden.
Kehren wir zur Aufgabe zurück.

Aufgabe 1
Schreiben Sie einen Code, der alle offenen Aufträge ohne Ausnahmen schließt.

Meine Argumentation.
Es ist möglich, diesen Code zu schreiben, aber es stellt sich die Frage: "Wie?
1 - Erstellen Sie einen Code, der alle offenen Aufträge überwacht (Gesamtvolumen, Nummer des Auftrags-Clusters, Kauf/Verkauf, akzeptable Slippage).
2 - Erstellen Sie einen Code, der Aufträge öffnet und Daten an den Code sendet, der alle diese Aufträge überwacht (eine Art Datenbank wird erstellt).
3 - Erstellen Sie einen Code, der alle Aufträge unter bestimmten Bedingungen abschließt und nur die nicht verwendeten Daten aus der "besonderen Datenbank" übernimmt.
Die Daten werden nicht wiederverwendet.

Wir könnten es so machen, aber ich denke, es gibt eine andere, weniger umständliche Variante.
Deshalb frage ich "wie?".