|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
StopLoss auf 0 ziehen
Hey, ich bräuchte Hilfe. Mein EA kauft und verkauft gleichzeitig das klappt auch soweit. Nun möchte ich wenn z.b. Sell ausgestoppt wird das der SL vom Buy auf 0 nachgezogen wird, also auf denn Einkaufspreis.
Bis jetzt hab ich folgendes: Code:
if(total==1) { if(Sell>0) { OrderSelect(Sell, SELECT_BY_TICKET); bool retrn = OrderModify(Sell, OrderOpenPrice(),FEHLT,0, 0, Red); if (retrn == false) { Print("OrderModify() error ", GetLastError()); } else Print("Check--------Sell"); } else if(Buy>0) { OrderSelect(Buy, SELECT_BY_TICKET); bool retrn1 = OrderModify(Buy, OrderOpenPrice(),FEHLT,0, 0, Red); if (retrn1 == false) { Print("OrderModify() error ", GetLastError()); } else Print("Check--------Buy"); } } |
|
|||
Hallo,
bei "FEHLT" gehört ja der StopLoss eingetragen. Dort schreibst du einfach OrderOpenPrice() rein. ---Leopold--- |
|
|||
Ja das FEHLT war mit Absicht damit am sieht was fehlt ^^
Das Problem da bekomme ich ganze Zeit ERROR 130 also SL ist zu eng. |
|
|||
Also ich hab es soweit jetzt hinbekommen nur das Problem ist das jetzt ERROR 1 kommt. Er versucht mehr mals den StopLoss an die selbe stelle zuziehen. Wie bekomme ich den Error weg?
Code:
for(int cnt = 0; cnt < total; cnt++) { if(!OrderSelect(cnt, SELECT_BY_POS, MODE_TRADES)) Print("Error-OrderSelect: "); if(OrderType() <= OP_SELL && OrderSymbol() == Symbol()) { //---Buy if(OrderType() == OP_BUY) { //--- //if(OrderSelect(Sell,SELECT_BY_POS,MODE_HISTORY)) if(total==1) { if(OrderOpenPrice()< Ask - 20*Point) { if(OrderStopLoss() != OrderOpenPrice()) { if(!OrderModify(Buy,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Green)) Print("Error: "); else Print("Check---Buy"); return; } } } } else //--- { //---Sell //if(OrderSelect(Buy,SELECT_BY_POS,MODE_HISTORY)) if(total==1) { if(OrderOpenPrice()< Bid + 20*Point) { if( OrderStopLoss() != OrderOpenPrice()) { if(!OrderModify(Sell,OrderOpenPrice(),OrderOpenPrice(),OrderTakeProfit(),0,Red)) Print("Error: "); else Print("Check---Sell"); return; } } } } } } Code:
if( OrderStopLoss() != OrderOpenPrice()) |
|
|||
Hallo,
da finde ich jetzt auch nicht wirklich was, aber versuch mal bei der Ticketnummer statt "buy" oder "sell" OrderTicket() zu verwenden, vielleicht hast du ja da einen Fehler bei der Ticketnummer variable. ---Leopold--- |
|
|||
Hab ich mal Probiert, selber Fehler. Komisch nach 14 Trades kommt: Error 1. Davor funktioniert es perfekt.
|
|
|||
Das kommt daher, wenn ein OrderModify() z.B. den StopLoss auf denselben Wert ziehen soll, wo er bereits liegt.
D.h. OrderModify() sollte nur dann angesprungen werden, wenn auch der neue StopLoss einen anderen Wert besitzt als der zu ändernde StopLoss. traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Wurde OrderSelect() richtig ausgeführt? Ich würde das überhaupt so machen, dass alles was nach OrderSelect() kommt auch nur ausgeführt wird, wenn OrderSelect() True ist.
Wie bestimmst du die Variable "total"? ---Leopold--- |
|
|||
Zitat:
if( OrderStopLoss() != OrderOpenPrice()) meiner meinung sollte das so funktionieren. ---Leopold--- |
|
|||
Schätze mal, der SL ist kleiner als MinStopLevel().
Was benutzt Du für SL und TP Werte? Teste gerade nen EA, der genauso funktioniert. Er öffnet ne Markt-Order in die eine Richtung und setzt in die Andere ne Stop-Order, deren OOP dem SL der Market-Order entspricht. Am besten schreiben wir da weiter. Hab eben die neueste Version hoch geladen. http://www.expert-advisor.com/forum/...html#post41331 |
Lesezeichen |
Stichworte |
nachziehen, null, stoploss |
|
|