|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
Hi, in der Anlage schicke ich Dir einen Indikator, der eine blaue "UpperRange" und rote "LowerRange" Linie malt. Wenn Du diese Linien über die aktuelle Kerze bewegst, zeigt der Indikator den Wert an. Der Wert wird mit
valUpper= ObjectGetValueByShift("UpperRange", 0); valLower= ObjectGetValueByShift("LowerRange", 0); in die Variablen valUpper bzw valLower geschrieben. Dann nimmst Du in Deinem EA z.B. Ask > valUpper und hast den Trigger zum Auslösen einer Close-Funktion. |
|
|||
Zitat:
Lass Dir den Wert mal mit Print(DoubleToStr(CloseLine, Digits)); anzeigen. Wo wird dieser Variablen der Wert zugeordnet? Das geht einfacher und damit übersichtlicher: Code:
if(Bid >= CloseLine) CL=True; if (CL==True) { bool CO= OrderClose(OrderTicket(),OrderLots(),Bid,3); } Code:
if(Bid >= CloseLine) { bool CO= OrderClose(OrderTicket(),OrderLots(),Bid,3); }
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Das war der erste Satz in diesem Thread. Ich bin deshalb davon ausgegangen, das händisch eine Linie gezeichnet wird oder?
|
|
|||
Zitat von Richi777
Hallo wieder einmal , wollte mal fragen, ob es möglich ist, wenn ich eine Hline in den Chart bei einer geöffneten Order einzeichne und diese vom Kurs überschritten wird, dass darauf hin die Order geschlossen wird, egal ob Profit oder Loss??? "Das war der erste Satz in diesem Thread. Ich bin deshalb davon ausgegangen, das händisch eine Linie gezeichnet wird oder?" Nun ja, wenn dem so wäre, dann hätte aber über den folgenden Code überhaupt keine Order geöffnet werden dürfen, denn aufgrund einer händisch eingezeichneten Buy-Linie wird nicht automatisch der Variablen BuyLine ein Wert > 0 zugewiesen, mal davon abgesehen, dass aufgrund des Vergleichsoperators == das Öffnen eher ein Zufall ist. Code:
if(Bid == BuyLine) { Order=OrderSend(Symbol(),OP_BUY,Lots,Ask,Slipage,0,0,"",0,0,Lime); } traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Eine händisch gezeichnete Line war nicht der Sinn. Ich habe es leider falsch formuliert. Die Linie hat schon einen vorgegebenen Wert.
Egal...ich habe auf jeden Fall herausgefunden wie es jetzt doch funktioniert. Dafür das ich eigentlich ein blutiger Anfänger bin was das EA programmieren angeht, habe ich schon so einiges umsetzen können. Ich habe ein CloseAllOrders Script gefunden und mir den Code angeschaut. Den habe ich dann versucht einzubauen und es hat funktioniert. Damit schließt sich jetzt die Order wenn die Linie überschritten wird. Code:
for( i=cnt-1;i>=0;i--) { OrderSelect(i, SELECT_BY_POS); int type = OrderType(); bool result = false; if(Bid < CloseLine) { //Close opened long positions result = OrderClose(OrderTicket(),OrderLots(),MarketInfo(OrderSymbol(), MODE_BID), 5, Red ); break; } if(result == false) { Alert("Order " , OrderTicket() , " failed to close. Error:" , GetLastError() ); Sleep(3000); } } return(0); } |
|
|||
Zitat:
1. Im Eröffnungspost steht was von "Kurs überschritten", im o.g. Code steht allerdings: if(Bid < CloseLine) Das wäre aber ein Unterschreiten!! 2. Wenn im o.g. Code die selektierte Order eine SellOrder wäre, würde permanent ein Fehler auftreten, weil eine SellOrder nicht mit dem Bid-, sondern mir dem Ask-Kurs geschlossen wird, denn in diesem Code wird nicht nach dem Ordertype selektiert. 3. Würde diese Code nicht durch den Compiler gehen. 4. Wäre das int type = OrderType(); so wie es da steht überflüssig, obwohl es eigentlich unabdingbar ist. 5. Es würde permanent eine Fehlermeldung generiert, wenn Bid nicht kleiner als CloseLine wäre. 6. Dass Deine BuyOrder also geschlossen wurde, lag nich daran, dass der Bid-Kurs über der CloseLine lag, sondern darunter. In Summe also ein reiner Zufallscode - schmeiss ihn einfach weg! traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Ja....mein Fehler. Ich habe geschrieben überschritten und meinte unterschritten, weil es sich um eine Buy-Order handelt.
Trotzdem funktioniert das und meine Buy-Order wird beim unterschreiten der Linie geschlossen. Wie auch immer aber es funktioniert komischerweise bei mir |
|
|||
Punkt 2. - 5. des Post #16 bleiben aber weiterhin bestehen.
traderdoc
__________________
Ich erfülle Euch gern Eure EA-, Indikator- und Script-Programmierungswünsche auf Honorarbasis. |
|
|||
Zitat:
Zitat:
Zitat:
Code:
if(Bid < CloseLine) CL=True; if (CL==True) { bool CO= OrderClose(OrderTicket(),Lots,CloseLine,3); } Code:
if(Bid < CloseLine) { bool CO= OrderClose(OrderTicket(),Lots,CloseLine,3); } Soll sie die Funktion eines TakeProfit oder StopLoss einnehmen? Wieso spielt es keine Rolle, ob der Kurs im "Gewinn" oder "Verlust" auf deine Linie trifft und du da einfach nur die Order schließt? |
Lesezeichen |
Stichworte |
hline, hline order schließen, mql4, order schließen, programmierung, programmierung metatrader, programmierung mql4 |
|
|