Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Ian,
Prüfen Sie Straddle&Trail expert. Sie finden es hier https://www.mql5.com/en/forum/general
Hallo zusammen,
Ich möchte alle meine Aufträge zur gleichen Zeit schließen, aber ich konnte es nicht.
Ich habe diesen Code versucht, aber es hat nicht funktioniert:
''''''''''''''''''''''''''''''''''''''''
total = OrdersTotal();
for(i=0;i < gesamt;i++)
{
if(OrderSelect(i, SELECT_BY_POS)==true)
{
OrderClose(OrderTicket(),OrderLots(),Ask,80,CLR_NONE);
OrderClose(OrderTicket(),OrderLots(),Bid,80,CLR_NONE);
}
}
''''''''''''''''''''''''''''''''''''''''
Kann mir jemand helfen?
Ich wäre Ihnen sehr dankbar, wenn Sie mir helfen könnten
Mehdi,
Fügen Sie diesen Code (Prozedur) außerhalb des Abschnitts start() ein, und wenn die Bedingung erfüllt ist, alle Geschäfte zu schließen, rufen Sie die Prozedur einfach so auf:
int start()
{ // Ihr Code hier .....
If (Ihre Bedingung hier) ShutDownAllTrades();
}
void ShutDownAllTrades
{ int Wiederholung;
While (OrdersTotal()>0)
{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
Sleep(1000);
}
else if (OrderType()==OP_SELL)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
Sleep(1000);
}
sonst
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
OrderDelete(OrderTicket());
Sleep(1000);
}
}
}
}
HTH
Yannis
Lieber Yannis,
vielen Dank für deine Hilfe.
Ich wünsche dir das Beste.
Mehdi,
Fügen Sie diesen Code (Prozedur) außerhalb des Abschnitts start() ein, und wenn die Bedingung erfüllt ist, alle Geschäfte zu schließen, rufen Sie die Prozedur einfach so auf:
int start()
{ // Ihr Code hier .....
If (Ihre Bedingung hier) ShutDownAllTrades();
}
void ShutDownAllTrades
{ int Wiederholung;
While (OrdersTotal()>0)
{ for (int cnt=OrdersTotal()-1;cnt>=0;cnt--)
{ OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES);
if (OrderType()==OP_BUY)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Bid,Slippage,Yellow);
Sleep(1000);
}
else if (OrderType()==OP_SELL)
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
RefreshRates();
OrderClose(OrderTicket(),OrderLots(),Ask,Slippage,Yellow);
Sleep(1000);
}
sonst
{ Retry=0; while (Retry<5 && !IsTradeAllowed()) { Retry++; Sleep(1000); }
OrderDelete(OrderTicket());
Sleep(1000);
}
}
}
}
HTH
YannisLieber Yannis,
Ich habe deine Prozedur zwischen " int deinit() { } " (out of start) eingefügt, wie du gesagt hast, aber es gibt ein Problem beim Kompilieren nach void ShutDownAllTrades { : '{' Komma oder Semikolon erwartet.
Ich freue mich darauf, von Ihnen zu hören.
Herzlichen Dank!
Ups, Entschuldigung.
Was fehlt, ist das () nach void ShutDownAllTrades()
Achten Sie auch auf die Variable mit dem Namen 'Slippage' in der orderclose-Funktion.
Möglicherweise müssen Sie diese durch diejenige ersetzen, die Sie bei der Platzierung Ihrer Aufträge verwenden.
Yannis
Ups, Entschuldigung.
Was fehlt, ist das () nach void ShutDownAllTrades()
Achten Sie auch auf die Variable mit dem Namen 'Slippage' in der orderclose-Funktion.
Möglicherweise müssen Sie diese durch die Variable ersetzen, die Sie bei Ihren Aufträgen verwenden.
YannisEs funktioniert sehr gut !
Nochmals vielen Dank
Ich benutze MTF CCI Indikator ftom Multi Time Frame Indikatoren Thread, es ist ein gelber Schritt Linie, siehe Bild im Anhang.
Wenn die Linie über 100 Niveau (überkauft)- der Preis wird nach unten gehen und wenn seine unter -100 (überverkauft) - der Preis wird nach oben gehen.
Das einzige Problem dabei ist, dass es nicht immer aktualisiert wird. Ich muss es manuell machen, indem ich mit der rechten Maustaste auf das Diagramm klicke und "Refresh" wähle.
Eine Frage an die Programmierer: Gibt es eine Funktion in MQ4, die diese Art von Aktualisierung automatisch bei jedem Tick durchführt?
Wäre für einen Ratschlag dankbar.
euro pean
Versuchen Sie dies:
void ObjectsRedraw()
Zeichnet alle Objekte im Diagramm neu
Beispiel
ObjectsRedraw();
Möglicherweise müssen Sie zuerst ObjectCreate verwenden.
Versuchen Sie dies:
void ObjectsRedraw()
Zeichnet alle Objekte im Diagramm neu
Beispiel
ObjectsRedraw();
Möglicherweise müssen Sie zuerst ObjectCreate verwenden.Danke für die Antwort.
Soweit ich weiß, aktualisiert ObjectsRedraw() Objekte, die gerade 'erstellt' und 'gesetzt' wurden.
Ich muss einen Indikator aktualisieren, der sich nicht in der Objektliste befindet, also funktioniert ObjectsRedraw() nicht.
Oder wissen Sie vielleicht, wie man auf einen bestehenden Indikator verweist?