Order schließen wenn der Kurs eine HLine überschritten wird???
Hallo wieder einmal :D ,
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??? Ich habe schon versucht so einige verschiedene Codes in einen EA einzubauen aber irgendwie habe ich einen Denkfehler oder es liegt an etwas anderen. Dass beim überschreiten einer Hline eine Order geöffnet wird, ist überhaupt kein Problem aber beim Schließen geht das nicht. :confused: Ist es überhaupt möglich und wenn ja, welchen Code würde funktionieren? Für Hilfe wäre ich sehr dankbar :) |
Wenn du es beim eröffnen geschafft hast, sollte es doch auch zum schließen möglich sein.
Du müsstest den Code mal Posten, damit man das auch nachvollziehen kann wie du das machst. --- Leopold --- |
|
Code:
if(Bid == BuyLine) |
Auf den ersten Blick fehlt mal "OrderSelect".
Du musst ja festlegen welche Order geschlossen werden soll. --- Leopold --- |
Code:
int i,cnt,CL; Die CloseLine ist der unter "double CloseLine;" gespeicherte Preis. Beim Order öffnen geht das komischer Weise. |
Verwende bei der LotSize "OrderLots()" und beim ClosePrice "Bid".
Und CL würde ich als "bool" deklarieren. |
Dazu kommt, dass bei
if(Bid == BuyLine) ein Öffnen der Order in den seltensten Fällen real!! vorgenommen werden würde. Viel besser wäre: if(Bid >= BuyLine) traderdoc |
Wobei man noch anmerken sollte
wenn der Kurs die Linie überschritten hat bei jedem Tick wieder > BuyLine ist und erneut setzten würde |
Code:
int i,cnt; Bin ich zu blöd dafür oder warum geht das immer noch nicht??? Irgendwo muss doch noch ein Fehler sein? Auf meinen Chart sehe ich die CloseLine aber wenn der Kurs sie durchquert passiert nichts....Hilfe!!! Das muss doch irgendwie funktionieren... |
Liste der Anhänge anzeigen (Anzahl: 1)
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; Code:
if(Bid >= CloseLine) { |
Zitat:
|
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) traderdoc |
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--) |
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 |
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 |
Zitat:
Zitat:
Zitat:
Code:
if(Bid < CloseLine) CL=True; Code:
if(Bid < CloseLine) 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? |
Alle Zeitangaben in WEZ +2. Es ist jetzt 15:34 Uhr. |
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.6.1
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum