Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools
Zurück   Metatrader Forum | Forex Expert-Advisor | Broker & Forex Tools > Metatrader 4 > Programmierung MQL4

Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4.

Login
Benutzername:
Kennwort:


Statistik
Themen: 4973
Beiträge: 43248
Benutzer: 7.219
Aktive Benutzer: 81
Links: 84
Wir begrüßen unseren neuesten Benutzer: Hopfen&Malz
Mit 2.475 Benutzern waren die meisten Benutzer gleichzeitig online (16.01.20 um 22:38).
Neue Benutzer:
vor einem Tag
- Hopfen&Mal...
vor 2 Tagen
- frankmicha...
vor einer Woche
- DFeck
vor einer Woche
- bb1107
vor 2 Wochen
- rg-trader

Onlineuser
'Wer ist online' anzeigen Benutzer: 0
Gäste: 817
Gesamt: 817
Team: 0
Team:  
Benutzer:  
Freunde anzeigen

Empfehlungen

Thema geschlossen
 
Themen-Optionen Thema durchsuchen Ansicht
  #1 (permalink)  
Alt 28.03.11
Neues Mitglied
 
Registriert seit: Mar 2011
Beiträge: 1
Deviton befindet sich auf einem aufstrebenden Ast
Question Nach schließen einer Order durch SL/TP eine identische Order erstellen

Hallo,

da ich vom Programmieren so viel Ahnung haben wie eine Kuh vom Eier legen und ich mir die Finger auch schon wund gegoogelt habe, hoffe ich dass mir hier geholfen wird.

Was ich brauche ist Folgendes:

Wenn eine aktive Order durch SL oder TP geschlossen wird, möchte ich, dass diese Order mit identischen Werten als neue Pending-Order erstellt wird.

Ich hoffe, dies ist programmiertechnisch möglich.

Ich sag schon mal herzlichen Dank im Voraus.

Gruß

Marco
  #2 (permalink)  
Alt 08.12.11
Mitglied
 
Registriert seit: Jul 2010
Beiträge: 47
forexAlexPH befindet sich auf einem aufstrebenden Ast
Standard

Hi Marco,

hast du einen EA gefunden, der das macht?
Dieser EA würde mich auch interessieren.

Gruß Alex
  #3 (permalink)  
Alt 08.12.11
Benutzerbild von hugo
Elite Mitglied
 
Registriert seit: May 2011
Beiträge: 982
hugo befindet sich auf einem aufstrebenden Ast
hugo eine Nachricht über Skype™ schicken
Standard

So was suche ich auch ...
  #4 (permalink)  
Alt 08.12.11
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

Diesen Wunsch scheinen ja schon mehr Leute gehabt zu haben, lasst uns so einen EA doch hier entwickeln!

Ich mach schon mal den Anfang, andere Programmierer sind herzlich willkommen, mitzumachen. Machen wir doch offenes Entwickeln, d.h. mit Erklärung, wie was programmiert wird, zumindest für den Anfang. Es ist das ja für alle interessant, wie man so einen EA entwickelt.

Zuerst müssen wir da konzeptionell rangehen:

Was brauchen wir:
Einen EA, der bestimmte offene Orders beobachten und, wenn diese durch SL oder TP geschlossen wurden, als Pending Order neu einstellen soll.

Welche Orders soll der EA beobachten?
Zum eine würde ich dem EA die Möglichkeit einbauen, das Währungspaar und/oder die Magicnnummer zu spezifizieren. Das macht also zwei Inputs notwendig (MagicNumber und Symbol). Damit kann man nämlich den EA so einstellen, dass nur einzelne Orders beobachtet und ggf. neu eröffnet werden, und andere Orders von ihm in Ruhe gelassen werden. Will man hingegen alle Orders von ihm prüfen lassen, lässt man beide Inputs einfach leer.

Wie soll der EA mitbekommen, wenn eine Order geschlossen wurde?
Leider bringt da MT4 keine richtig schöne Lösung von Hause aus mit, wie etwa Events. MT5 ist da besser. Für MT4 muss sich also eine selber programmieren, mir fallen da zwei Möglichkeiten ein:
  • Entweder man bildet sich eine Liste von zur Zeit offenen Orders und überprüft jeden Tick, ob aus dieser Liste Orders geschlossen worden sind.
  • Oder man beobachtet die OrderHistory und schaut, ob da eine neue Order hinzugefügt wurde, die vorher nicht da war.
Beide Lösungen haben natürlich Vor- und Nachteile. Ich bin eher für die erste Variante, da müssen wir nämlich nur einen Array mit offenen Orders vorhalten und müssen nicht die komplette History auf Veränderungen überprüfen.

Wie bekommen wir raus, ob die Order wirklich durch T/P bzw. S/L geschlossen wurde und nicht von Hand?
Orders, die von Hand oder durch einen EA geschlossen wurden, sollen ja nicht wieder eröffnet werden, oder?

Wenn ich an manchen Stellen zu weit um die Ecke denke und ihr bessere Lösungen habt, sagt bitte bescheid!
  #5 (permalink)  
Alt 08.12.11
Benutzerbild von hugo
Elite Mitglied
 
Registriert seit: May 2011
Beiträge: 982
hugo befindet sich auf einem aufstrebenden Ast
hugo eine Nachricht über Skype™ schicken
Standard

Klingt nach einem guten Anfang.
  #6 (permalink)  
Alt 08.12.11
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

Was meint ihr zu folgender Fragestellung:
Sollen Orders, die von Hand oder durch einen EA geschlossen wurden, auch wieder eröffnet werden oder soll der EA ganz explizit nur nach T/P und S/L gucken?
  #7 (permalink)  
Alt 08.12.11
Benutzerbild von hugo
Elite Mitglied
 
Registriert seit: May 2011
Beiträge: 982
hugo befindet sich auf einem aufstrebenden Ast
hugo eine Nachricht über Skype™ schicken
Standard

Zitat:
Zitat von Programmierer Beitrag anzeigen
Was meint ihr zu folgender Fragestellung:
Sollen Orders, die von Hand oder durch einen EA geschlossen wurden, auch wieder eröffnet werden oder soll der EA ganz explizit nur nach T/P und S/L gucken?
Müsste er schon. Ansonsten müssten man vor jedem manuellen Schließen den EA erst abschalten. Dann wäre das ganze ziemlich sinnlos, oder?
  #8 (permalink)  
Alt 08.12.11
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

Was soll geschehen, wenn eine Order geschlossen wurde?
Es soll ja eine gleiche Pending order eröffnet werden. D.h. also der EA schaut sich die geschl. Order an, speichert die Orderrichtung (LONG/SHORT), Eröffnungskurs, Ordervolumen, T/P und S/L. Dann muss er ermitteln, ob die neue Pending order eine STOP- oder LIMIT-Order ist (je nach Lage des aktuellen Preises zum Schlusskurs der alten Order; bei SL wirds ne STOP-Order, bei TP ne Limit-Order). Dann kann der EA also die neue Pending order mit identischen Werten eröffnen.
  #9 (permalink)  
Alt 08.12.11
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Zitat von hugo Beitrag anzeigen
Müsste er schon. Ansonsten müssten man vor jedem manuellen Schließen den EA erst abschalten. Dann wäre das ganze ziemlich sinnlos, oder?
Ja, wär nicht schlecht. Machen wir also weiter mit diesem Punkt.

Wie bekommen wir raus, ob die Order wirklich durch T/P bzw. S/L geschlossen wurde und nicht von Hand?
Orders, die von Hand oder durch einen EA geschlossen wurden, sollen ja nicht wieder eröffnet werden. In MQL4 gibts da leider keine einfache Lösung. Man kann:
  • in den OrderComment der geschlossenen Order schauen, wenn da [sl] bzw.[tp] drin steht, dann ist sie durcht T/P oder S/L geschlossen
  • überprüfen, ob der S/L oder T/P Preis erreicht oder überschritten wurde. Zu schauen, ob der S/L oder T/P-Preis erreicht wurde, reicht nicht, da der oft nicht auf den Zehntelpip erreicht wird, sondern überschritten.
Die zweite Lösung ist m.E. sicherer, denn was der Broker genau als OrderComment einstellt, wissen wir ja nicht. Der EA soll ja Broker-übergreifend funktionieren.
  #10 (permalink)  
Alt 09.12.11
Mitglied
 
Registriert seit: Dec 2009
Beiträge: 96
Programmierer befindet sich auf einem aufstrebenden Ast
Standard

so, ich habe nach den o.g. Spezifikation einen Reorder-EA programmiert. Hier kommt also ReorderEA_v0.1

Hier sind die Einstellungen:
  • WatchMagicNumber
    stellt die MagicNummer der Trades ein, die beobachtet werden sollen, lasst es bei -1, wenn ihr diesen Filter nicht anwenden wollt.
  • WatchSymbol
    stellt das Symbol (Währungspaar) der Trades ein, die beobachtet werden sollen, lasst es leer, wenn ihr diesen Filter nicht anwenden wollt.
  • TradeMagicNumber
    stellt die MagicNummer der Trades ein, die für die neuen Pending orders genutzt werden soll. Wenn ihr die gleiche einstellt wie oben oder oben -1 eingetragt habt, dann wird diese Order (sobald ausgelöst) auch wieder beobachtet. Wenn ihr das nicht wollt, stellt hier eine andere Nummer ein und nutzt oben nicht -1.

Der EA bindet viele Funktionen per include ein, die ich auch in meinen Kundenprojekten benutze. Daher kann ich auch nur die .EX4-Datei hochladen. Der Code wäre einige Hundert Zeilen lang.

Über Feedback würde ich mich freuen,
Daniel.
Angehängte Dateien
Dateityp: ex4 ReorderEA_v0.1.ex4 (25,8 KB, 81x aufgerufen)
Thema geschlossen

Lesezeichen

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus




Alle Zeitangaben in WEZ +1. Es ist jetzt 21:23 Uhr.





Suchmaschine - Reisen - Wavesnode - Facebook Forum - Spam Firewall
-----------------------------------------------------------------------------------------------------------------------------
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Powered by vBCMS® 2.7.0 ©2002 - 2024 vbdesigns.de
SEO by vBSEO 3.6.1
Copyright ©2009 - 2023 by Expert-Advisor.com - Das Metatrader Forum
MetaTrader bzw. MetaTrader 4 und MetaTrader 5 sind eingetragene Marken der MetaQuotes Software Corp.
-----------------------------------------------------------------------------------------------------------------------------