Einzelnen Beitrag anzeigen
  #5 (permalink)  
Alt 17.08.17
next user next user ist offline
Premium Mitglied
 
Registriert seit: May 2015
Beiträge: 367
next user befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von Julia Beitrag anzeigen
Hallo,
ich möchte in einem bestehende EA einen eingetragenen Stop Loss bei einer bestimmten Bedingung löschen.
Einen Stop zu löschen ist alles andere als sinnvoll. Du könntest zwar auch ohne Stop eine "Sicherheit" im EA programmieren, der
dann die entsprechende order schließt, aber das ist weder zuverlässig, noch "gutes Timing", wenn der Kurs mal ausschlägt.
Viel besser wäre es doch, deinen Stoploss dann einfach +- Null zu setzen, um kein Risiko mehr zu haben...

Zitat:
Zitat von Julia Beitrag anzeigen
Also, wenn der aktuelle Kurs über dem OrderOpenPrice() liegt, sollen alle eingetragenen StopLoss gelöscht werden.
Kannst du machen. Wenn die Order 1 Pip im Plus ist, der Kurs dann zurücksetzt, kannst du ohne Stoploss mächtig Probleme bekommen.

Zitat:
Zitat von Julia Beitrag anzeigen
Ist "Bid" der aktuelle Kurs??
Stark vereinfacht...
Eine BUY-Order wird zum Ask eingegangen und zum Bid geschlossen.
Eine SELL-Order wird zum Bid eingegangen und zum Ask geschlossen.

So das du zu Beginn einer Order immer den Spread im Minus bist.

Zitat:
Zitat von Julia Beitrag anzeigen
Ist "ObjectDelete(SL)" der Befehl um einen Stop/Loss zu löschen
Nein. Wie der Funktionsname schon vermuten lässt, löscht du damit ein vorhandenes Objekt. Die Funktion hat garnichts mit Orders zu tun.

Zitat:
Zitat von Julia Beitrag anzeigen
Wie lautet der Befehl um einen StopLoss zu löschen ?
Einen direkten Befehl dafür gibt es nicht. Dazu musst du deine Order Modifizieren. Wie Traderdoc bereits gesagt hat, musst du
OrderModify(...) aufrufen und den "neuen" Stoploss mit 0 angeben. Dadurch wird der gesetzte entfernt.

Zitat:
Zitat von Julia Beitrag anzeigen
Wie lautet die Wenn Dann-Bedingung?

Mein CodeSchnipsel lautet -der nicht funktioniert :

if(Bid>OrderOpenPrice())ObjectDelete(SL)
Wie gesagt, würde ich dir davon abraten den Stoploss zu löschen, aber deine Bedingung würde in dem Fall so aussehen
Code:
// Order vorher natürlich selektieren...

if(OrderType() == OP_BUY) // BUY-Order => Bid abfragen!
{
   if(Bid > OrderOpenPrice())
      OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0);
}
else // SELL-Order => Ask abfragen!
{
   if(Ask < OrderOpenPrice())
      OrderModify(OrderTicket(),OrderOpenPrice(),0,OrderTakeProfit(),0);
}