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

 
VIX XIV:
Guten Abend. Wie sollte der Code aussehen, der den letzten abgeschlossenen Auftrag findet? Sieht es so aus: "OrderSelect(OrdersHistoryTotal, SELECT_BY_POS, MODE_HISTORY"?

So sollte Ihr Block ungefähr aussehen:

int a=-1;

for(int is=OrdersHistoryTotal(); is>=0; is--)

{

if(OrderSelect(is, SELECT_BY_POS, MODE_HISTORY))

{

if(Auftragsart()==OP_BUY) {a=OrderType(); break;}

if(OrderType()==OP_SELL){a=OrderType(); break;}

}

}

if(a==OP_BUY) Comment("Der letzte geschlossene Kaufauftrag in der Liste wurde gefunden;)

if(a==OP_SELL) Comment("Der letzte geschlossene Verkaufsauftrag in der Liste wurde gefunden;)


 

Ich habe vor längerer Zeit gelesen, dass es keine Garantie für die chronologische Anordnung der Aufträge in OrdersHistoryTotal gibt und dass man nach dem Abschlussdatum prüfen muss.

 

@Valerius, können Sie es nicht als Code einfügen? Oder was fehlt noch?

 
Сергей Таболин:

@Valerius, können Sie es nicht als Code einfügen? Oder was fehlt noch?

Könnten Sie es menschlich möglich machen, Code als Code in den MT-Editor einzufügen?

Keine Ihrer Schaltflächen funktioniert so, wie ich sie brauche.

 
Valerius:

Können Sie es möglich machen, den Code als Code in den MT-Editor einzufügen?

Keine Ihrer Schaltflächen funktioniert so, wie ich es möchte.

Es gibt einen kniffligen Weg. Kopieren Sie einen beliebigen Code und fügen Sie ihn ein. Und fügen Sie dort Ihren Code ein. Minus: Die Hervorhebung funktioniert so nicht))))


if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))  Это чужой код и его можно править))))
 
Valerius:

Für die erste Frage müssen Sie eine Funktion wie diese erstellen:


for(int is=OrdersTotal()-1; is>=0; is--)
{
if(OrderSelect(is,SELECT_BY_POS,MODE_TRADES))
{//Close Orders, die am Freitag der Woche eröffnet wurden, die nicht die aktuelle Woche ist. In diesem Fall schließen wir die Aufträge nicht am Freitag der laufenden Woche ab.
if(OrderMagicNumber()==Magic && TimeDayOfWeek(TimeCurrent())==5 && TimeDayOfWeek(OrderOpenTime())==5 && TimeDayOfYear(OrderOpenTime())<TimeDayOfYear(TimeCurrent())
{
if (OrderType()==OP_BUY) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_BID),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if (OrderType()==OP_SELL) result=OrderClose(OrderTicket(),OrderLots(),NormalizeDouble(MarketInfo(nameSym,MODE_ASK),MarketInfo(nameSym,MODE_DIGITS)),3,CLR_NONE);
if(!result) {error=GetLastError(); Print("LastError = ",error, ",Symbol()); }
else {error=0;}
sonst
{Print("NoMagic ",OrderMagicNumber();} // für Debug
sonst

{Print("Fehler bei der Auswahl der Bestellung ", GetLastError();}


Bei der zweiten Frage ist folgender Eintrag zu machen:

OrderClose(OrderTicket(), OrderLots(), NormalizeDouble(MarketInfo(nameSym,MODE_ASK)), 3, clrNONE);

Viel Glück!

Danke, bei der ersten Frage hat es wie erwartet funktioniert.

Auf der zweiten - falsche Anzahl von Parametern. Behoben - OrderClose(OrderTicket(),OrderLots(),Ask,3,CLR_NONE);

Nur jetzt habe ich die Bearbeitung meiner ersten Variante nicht ganz verstanden (ich habe sie von irgendwoher kopiert) ...

 
Hallo
Kann mir bitte jemand erklären, wie das Trailing-Take-Profi funktioniert? In der MT5-Hilfe gibt es einige Informationen über Trailing Stop, aber keine Informationen über Trailing Profit. Wenn ich in meinem Expert Advisor "Stop Loss trailing level (in points)" z.B. auf 100 setze, verstehe ich, dass der Trailing Profit aktiviert wird, wenn der Preis 100 Punkte in die gewünschte Richtung passiert. Aber was bedeutet "Take Profit Trailing Level (in Punkten)" = 10?
 
altec3:
Hallo!
Kann mir bitte jemand das Prinzip des Trailing-Take-Profils erklären? Ich kann in der MT5-Referenz keine Informationen über Trailing Stop finden. Wenn ich in meinem Expert Advisor "Stop Loss trailing level (in points)" z.B. auf 100 setze, verstehe ich, dass der Trailing Profit aktiviert wird, wenn der Preis 100 Punkte in die gewünschte Richtung passiert. Aber was bedeutet "Take Profit Trailing Level (in Punkten)" = 10?

TakeProfit wird in Pips und Trailing TakeProfit in der Einzahlungswährung berechnet. Trailing TakeProfit ist der Gewinn in der Währung des Depots von einem oder mehreren Aufträgen, und setzt Stops von Aufträgen in der in den Einstellungen angegebenen Höhe, d.h. in einem berechneten Abstand.

In den Einstellungen ist zum Beispiel ein Trailing Take Profit von $100 festgelegt. Sobald der Preis den Gewinn von 100$ erreicht hat und weiter steigt, berechnet das Programm den Abstand von 100$ und platziert alle Stoplosses der Orders an der berechneten Stelle, wenn es das erlaubt. Sobald der Kurs auf die Stopps zurückfällt, werden alle Aufträge geschlossen. Im Prinzip ist dies dasselbe wie der Trailing Stop, nur dass er in der Depotwährung berechnet wird und dem Gewinn folgt. Vielleicht habe ich irgendwo einen Fehler gemacht, aber das ist das Prinzip. Ich hoffe, ich habe es erklärt.

 
Wie kann ich Python verwenden, um alle Bars aus dem Terminal eines bestimmten Zeitrahmens abzufragen?
 
Verstehe ich das richtig, dass in mt5 anstelle von closing time, POSITION_TIME_UPDATE beobachtet werden sollte?
Grund der Beschwerde: