MT4/MT5-EA´s für außerbörsliche Orderaufgabe

      Neu

      Absolutely loving it!
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!

      Neu

      Habe jetzt also Version 1.05 draus gemacht mit folgenden Änderungen:

      1) Umstellung der Input Variablen <OpenHour> für die Uhrzeit, ab wann der EA die Order (mit dem nächsten Tick) an den Handelsserver übergeben soll. Es können nun auch Minuten eingegeben werden.
      2) Uhrzeit für Ablauf von Pending Orders als weitere Input Variable <ExpirationHour> eingebaut, so dass dieser EA dann auch geschlossen werden könnte, sobald die Pending Orders erstellt wurden

      Hard-codiert ist nach wie vor, dass der EA maximal 10 Minuten lang (ab <OpenHour>) versucht, die Order an den Handelsserver zu senden. Sprich:
      • Wenn Du 15:30 eingibst und den EA schon um 15h startest, dann wird die Order mit dem ersten Tick nach 15:30 an den Handelsserver geschickt.
      • Wenn Du 15:30 eingibst und den EA aber erst um 15:39 startest, dann wird die Order mit dem ersten Tick nach 15:39 an den Handelsserver geschickt.
      • Wenn Du 15:30 eingibst und den EA aber erst um 15:40 oder später startest, dann macht der EA gar nichts mehr.
      Bilder
      • 2020-05-21 14h12.png

        22,13 kB, 671×366, 8 mal angesehen
      Dateien

      Neu

      Ich komme mit der US-Version nicht klar. Ich habe mir den EA geklont und für US-Aktien die Zeit geändert, in der die Orderaufgabe gültig ist.

      15:30 will er nicht nehmen. Gut, dann gebe ich also 15 ein und 50 Minuten, dann sollten die Orders ja bis 15:50 aufgegeben werden:



      Will ich ihn anwenden zeigt der EA im Chart aber diese Ausgabe, Orders wurden mir heute um 15:30 auch nicht ausgeführt:

      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Morning @Hintman

      Sieht tatsächlich so aus, als liefen die EAs aus den verschiedenen Charts immer ziemlich parallel an. Hatte mir vorgestellt, dass ein EA bereits einen Deal ausgelöst haben könnte, bevor der andere anläuft. Wenn das also nicht so ist, dann ist alles gut. Ansonsten melde Dich, dann kann man es ja immer noch einbauen wie beschrieben
      Guten Morgen @Remlowski

      Also ich hab jetzt seit einigen Tagen immer die Kombination Stop- und Limit laufen gehabt. Und nie Probleme entdeckt. Kann ja den Zufall nicht immer auf meiner Seite haben, oder was meinst du?

      Angehängt wieder ein Screenshot aus dem Journal von heute.

      Die Stop-Sell auf Daimler wurde zum ersten Tick ausgeführt, danach die Limit-Sell an den Server geschickt.
      Bilder
      • 751531 - ActivTrades-Server - Hedge - [[DAI.GE _ D1] -0.17 S ] 2020-05-12 09.11.01.png

        27,07 kB, 835×221, 22 mal angesehen
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Wie gesagt, der Spread kann nur für Stop- oder Limit-Orders, die in Market-Orders umgewandelt werden, im Kommentar eingetragen werden. Wenn Du nochmal in den Code reinschaust, wirst Du sehen, dass es dort einen Unterschied gibt.

      Zum Beispiel für Deine Buy Stop Order wurde überprüft, wo der aktuelle Kurs ist und da der nicht über deinem angegebenen Preis gelegen hat, wurde eine Buy Stop Order angelegt, siehe Code Zeile 168.
      Das heißt, ab diesem Zeitpunkt liegt diese Pending Order auf Deinem Handelsserver und wird irgendwann (vielleicht) vom Handelsserver ausgeführt. Das bekommt der EA dann aber nicht mehr mit und er kann auch nicht im voraus im Kommentar eintragen, wie hoch der Spread sein wird, weil das noch nicht bekannt ist.

      Wenn der aktuelle Kurs aber über Deinem Preis gelegen hätte, dann wäre Deine Buy Stop Order in eine Market Order umgewandelt worden und der EA hätte direkt selbst gekauft, siehe Code Zeile 159. In dieser Situation ist der Spread dem EA jedoch bekannt (der wurde in Zeile 148 abgefragt) und deshalb kann der EA den Spread im Kommentar auch gleich eintragen.

      Hintman schrieb:

      Finde ich großartig, dass du diese Ausgabe im Kommentar eingebaut hast!


      Eine Idee warum mir der Spread im Kommentar nur bei ausgeführtne Limit-Orders angezeigt wird? Bei den ausgeführten Stop-Orders steht nur "Buy Stop" im Kommentar. Hab in den Code reingesehen, da wäre das eigentlich berücksichtigt.
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!

      Test Vivendi 06.05.

      Wieder Vivendi mit einem Kaufsignal für heute, also wieder mit Buy-Stop über dem Tageshoch und mit Buy-Limit 1 Cent unter dem Close versehen.

      Buy-Limit (die mit 2 Stück) wurde ausgeführt, Buy-Stop (1 Stück) liegt noch als Pending Order drin.
      Bilder
      • 751531 - ActivTrades-Server - Hedge - [[VIV.FR _ H1] -2.16 L ] 2020-05-06 11.03.05.png

        5,25 kB, 686×42, 24 mal angesehen
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Finde ich großartig, dass du diese Ausgabe im Kommentar eingebaut hast!
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Ja also mit dem Spread könnte man programmatisch schon etwas machen, wenn man das möchte. Im EA wird für Stop- oder Limit-Orders, die in Market-Orders umgewandelt werden, die Info bzgl Spread auch im Kommentar eingetragen, was Du sicher schon bei Dir gesehen hast. Am 1. Mai ist mir zum Beispiel beim Programmieren/Testen dieses EAs via FXFlat unabsichtlich eine Order rausgeflutscht (war zu faul, ein Demo Konto einzurichten ;( ), was mich wegen des Spreads von 6.9 Punkten gleich mal 10 EUR gekostet hat, siehe Bild
      Bilder
      • 2020-05-06 09h58.png

        11,18 kB, 1.262×110, 22 mal angesehen
      Guten Morgen,

      meinte tatsächlich den Spread. Der gerade in den ersten Handelsminuten oft außerirdisch ist, je nach Broker. Bei ActivTrades ist dieser "Schutz" bisher praktisch nicht nötig gewesen, da die ersten 30 Sekunden nach 9 rausgefiltert werden.
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Nehme an, Du meinst nicht den Spread zwischen ask und bid, sondern die maximal erlaubte Abweichung (Slippage) vom eigentlich erwarteten Preis. Nein, habe ich noch nicht verwendet.

      Im Kontext dieses EA frage ich mich auch, ob es viel bringt?
      Bei einer Limit Order braucht man es nicht, da man ja den Limit Preis angegeben hat.
      Und bei einer Stop Order weiß man eh nicht im voraus, zu welchem Preis gekauft wird. Hier würde ich eher noch die Angabe eines maximalen Preises sehen, es gäbe hier ja auch noch die Möglichkeit einer "Stop Limit Order". Aber das habt Ihr ja mit der CRV Berechnung abgekaspert. Oder was meinst Du genau ?
      Spannend, ich werde weiter die nächsten praktischen Einsätze dokumentieren, danke schon mal!

      Hast du schon mal eine maximal erlaubte Spread-Begrenzung in deinen EA´s verwendet? Wäre auch eine nette Sicherung...
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      @Hintman

      Habe mal die relevanten 3 Zeilen Deines ScreenShots abgetippt, dem man entnehmen kann, dass der EA bereits beide Orders 1) und 2) an Deinen Handelsserver geschickt hat, BEVOR es zum "Deal" 3) kam:

      1) 2020.05.05 09:00:41.490 buy stop 1.00 VIV.FR at 19.73
      2) 2020.05.05 09:00:41.490 market buy 2.00 VIV.FR
      3) 2020.05.05 09:00:41.543 deal #95897019 buy 2.00 VIV.FR done

      Ich hatte ja vermutet, dass es NICHT funktionieren wird, wenn ZUERST eine Market Order eröffnet wird (sprich wenn es bereits einen "Deal" gegeben hat).
      Das denke ich immer noch. Falls es also bereits einen "Deal" für VIV.FR gegeben hätte, dann hätte der EA die zweite Order (sei es Market Order oder Pending Order) NICHT an den Handelsserver geschickt.

      Was mich überrascht ist, dass 1) und zwei 2) tatsächlich in derselben Millisekunde ausgeführt wurden.
      Wenn es immer so ist, dass der EA für die zweite Order bereits läuft, BEVOR es einen "Deal" gegeben hat, dann sollte es kein Problem geben.

      Aber folgende Reihenfolge wäre halt NICHT gegangen:

      1) 2020.05.05 09:00:41.490 market buy 2.00 VIV.FR
      2) 2020.05.05 09:00:41.543 deal #95897019 buy 2.00 VIV.FR done
      3) 2020.05.05 09:00:41.555 buy stop 1.00 VIV.FR at 19.73

      Sprich der EA hätte die Buy Stop Order 3) nicht an den Handelsserver geschickt, wenn es bereits den Deal 2) gegeben hätte
      Allerdings bin ich auch etwas verunsichert, da ich ja die ursprünglichen Anforderungen nicht kenne, was dieser EA genau machen soll. Wenn ich "OCO" (aus Stock_OCO_Order_at_Open.mq5) als "one cancels other" interpretiere, dann frage ich mich, an welcher Stelle das OCO denn eigentlich stattfindet?Auch wenn ich den EA in zwei verschiedenen Charts habe und zwei verschiedene Orders für dasselbe Symbol mit derselben MagicNumber aufgebe, dann "gewinnt" einfach der EA, der zufällig zuerst anläuft. Die Order des anderen EAs wird dann nicht mehr ausgeführt.Habe ich da was übersehen oder ist die OCO-Funktion mittlerweile obsolet ?


      Das "OCO" war/ist nur zuständig für Take Profit und Stop-Loss. Damit die Aktivierung des einen die andere Order storniert.
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      Hm, wenn ich das Journal richtig deute, wurden die Buy-Stop und Market Buy aus der Limit zur gleichen Zeit aktiviert.

      Dann die Buy Stop gesetzt, und dann Market Buy aus der Limit geordert?
      Bilder
      • 751531 - ActivTrades-Server - Hedge - [[VIV.FR _ H1] +0.26 L ] 2020-05-05 09.35.42.png

        19,39 kB, 816×141, 32 mal angesehen
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      @Remlowski

      So, heute wollte ich mir konkret ansehen was laut deinem letzten Posting funktionieren sollte und was nicht.

      Ich hatte für Vivendi sowohl eine Stop-Limit als auch eine Stop-Buy im Markt. Auf 2 verschiedenen Charts mit veschiedenen Magic Numbers.

      Um 09:00:41 wurde die Limit als Market ausgeführt, und mit dem gleichen Zeitstempel die Stop-Order als Pending Order aufgegeben (die soeben um 09:29 ebenfalls ausgeführt wurde).

      Laut deinem Posting kann das nur klappen, wenn die Limit im System zuerst behandelt worden ist? In meinem Verständnis war um 41 Sekunden nach 9 der erste Kurs für Vivendi in der Plattform und sofort wurden beide Pending Orders erstellt.
      Der Autor ist in den besprochenen Werten zumeist selbst investiert. Traden auf eigene Gefahr, Signale sind aktuell großteils experimentell zwecks Challenge "In 30 Tagen zur Trading Strategie".
      Plane deinen Trade, trade deinen Plan!
      If it´s not a HELL YES, it´s a NO!
      @GeorgM

      Ja, wäre ärgerlich, wenn dieser EA ohne Programmierarbeit zu erstellen wäre. Hab ich nicht überprüft ;(

      @Hintman

      Komme zurück auf die unten von goso erwähnte "Bastellösung" ;) . Haber mir jedenfalls nochmal ein paar Gedanken gemacht und möchte folgendes ergänzen:

      A) In der vorigen Version 1.03 wurde ja keine weitere Order (z.B Stop Buy) für ein Symbol (z.B. Aktie oder Index) aus einem anderen Chart heraus ausgeführt, wenn es für dieses Symbol bereits eine Pending Order (z.B. Limit Buy) oder eine bereits offene Position gab.

      In der neuen Version 1.04 sollte die weitere Order ausgeführt werden, wenn es bereits eine Pending Order gibt. Was aber immer noch nicht funktioniert, ist, dass eine weitere Order (z.B Stop Buy) für ein Symbol aus einem anderen Chart heraus ausgeführt wird, wenn es für dieses Symbol bereits eine offene Position gibt.

      In Version 1.04 funktionierendes Beispiel:
      1. Aus einem Chart heraus wird eine Pending Order für Symbol A und MagicNumber X eröffnet
      2. Danach (e.g eine Millisekunde später zwischen 9h und 9h10) kann aus einem anderen Chart heraus eine andere Pending Order oder eine Market Order für dasselbe Symbol A und anderer MagicNumber Y eröffnet werden (solange aus der Pending Order aus Punkt 1 nicht bereits eine offene Position wurde, was ja aber unwahrscheinlich ist)
      In Version 1.04 nicht funktionierendes Beispiel (der "umgekehrte" Fall):
      1. Wenn zuerst eine Market Order für Symbol A und MagicNumber X eröffnet wird (oder eine entsprechende Pending Order bereits eröffnet wurde, was aber unwahrscheinlich ist)
      2. dann kann danach (e.g eine Millisekunde später zwischen 9h und 9h10) keine andere Pending Order oder Market Order für dasselbe Symbol A mehr eröffnet werden, egal ob mit anderer MagicNumber oder nicht

      Das hat mit diesem Punkt zu tun:

      Remlowski schrieb:

      Der EA macht dann nichts (mehr), wenn er bereits einen Deal für die Aktie in der heutigen History findet (habe das mal so gelassen, wie es war. Kann aber sein, dass man hier auch noch den Check auf MagicNumber einbauen muss)


      Das bedeutet, dass solange der Check auf MagicNumber beim Überprüfen der DealHistory nicht ebenfalls eingebaut wird, wird es immer noch nicht funktionieren. Ausserdem (habe ich heute Nacht überlegt :-)) muss die Überprüfung der DealHistory konkreter werden. Und zwar darf nicht nur geschaut werden, ob es bereits einen Deal für das aktuelle Symbol gibt, sondern es interessiert die Dealrichtung. Wenn die Dealrichtung "Markteingang" ist, dann ist das uninteressant, denn diese Info haben wir bereits aus den offenen Positionen erhalten. Nur wenn die Dealrichtung "Marktausgang" ist, dann handelt es sich hier um eine bereits wieder geschlossenen Position, die weder bei den Pending Orders, noch bei den offenen Positionen zu finden ist. Und genau die bereits wieder geschlossene Position ist das, was wir wissen wollen.

      Ich denke, die ursprüngliche Absicht des Untersuchens der DealHistory war und ist, dass verhindert werden soll, dass wenn eine Order direkt zur Positionseröffnung führt und die Position dann sofort in den Gewinn oder Verlust läuft und daher sofort wieder geschlossen wird, dass dann beim nächsten Tick (zwischen 9h - 9h10) dieselbe Order nochmal eröffnet wird und sich das bis 9h10 mehrfach wiederholen kann.

      Langer Rede kurzer Sinn, ich denke man müsste beim Untersuchen der DealHistory noch einbauen, dass:
      1. die Dealrichtung überprüft wird, es ist nur "Marktausgang" relevant
      2. die MagicNumber überprüft wird
      Nur wenn in der DealHistory ein Deal "Marktausgang" mit derselben MagicNumber (wie im EA des aktuellen Charts angegeben) gefunden wird, dann soll keine weitere Order mehr erstellt werden.

      Falls ich das noch einbauen soll, gib Bescheid.

      B) Allerdings bin ich auch etwas verunsichert, da ich ja die ursprünglichen Anforderungen nicht kenne, was dieser EA genau machen soll. Wenn ich "OCO" (aus Stock_OCO_Order_at_Open.mq5) als "one cancels other" interpretiere, dann frage ich mich, an welcher Stelle das OCO denn eigentlich stattfindet?

      Auch wenn ich den EA in zwei verschiedenen Charts habe und zwei verschiedene Orders für dasselbe Symbol mit derselben MagicNumber aufgebe, dann "gewinnt" einfach der EA, der zufällig zuerst anläuft. Die Order des anderen EAs wird dann nicht mehr ausgeführt.

      Habe ich da was übersehen oder ist die OCO-Funktion mittlerweile obsolet ?
      Danke Remlowski für deine Beiträge.

      https://www.insidetrading.de/mql5-programmieren-lernen-eas-schreiben-einfach-erklaert/

      Wenn der EA nur einfache, „klassische“ Einstiege handeln soll, so ist es durchaus möglich, ganz ohne eigene Programmierarbeit ans Ziel zu gelangen. Auch wir haben diesen Ansatz versucht und uns dem EA-Generator des Metatrader 5 bedient. In diesem kann man ganz ohne zu Programmieren einfach via Drag and Drop Indikatoren und Signale auswählen, das Risikomanagement sowie die Stop Loss und Take Profit Werte eingeben um sich den Code automatisch erstellen zu lassen. Um dieses doch recht unbekannte Feature zu nutzen, ist lediglich der MT5-Editor zu starten. Dies kann im Metatrader 5 durch das Klicken auf das folgende Symbol geschehen:

      Ich werde dies bestimmt nicht mehr lernen, kann mir jedoch vorstellen, dass im neuen Forum im Premium Bereich die Programmierung von Handelsansätzen in EAs angeboten wird.
      Nein ist nicht egal. Einer weiteren Order für dieselbe Aktie muss man jetzt auch eine andere MagicNumber geben.

      Die aktuelle Logik ist so, dass der EA bei jedem Tick schaut, ob die Uhrzeit passt (standardmäßig werden Orders nur zwischen 9:00h und 9:10h aufgegeben) und ob die betreffende Order überhaupt noch erstellt werden soll (oder ob der EA das nicht bereits bei einem vorigen Tick gemacht hat). Hierfür schaut sich der EA bei jedem Tick zuerst sowohl die OrderHistory an, wie auch die Liste der Pending Orders und offenen Positionen.
      1. Der EA macht dann nichts (mehr), wenn er bereits einen Deal für die Aktie in der heutigen History findet (habe das mal so gelassen, wie es war. Kann aber sein, dass man hier auch noch den Check auf MagicNumber einbauen muss)
      2. Der EA macht ebenfalls nichts (mehr), wenn er eine Pending Order oder eine bereits eröffnete Position für die aktuelle Aktie und MagicNumber findet
      3. Trifft weder 1. noch 2. zu, dann wird die Pending Order erstellt (Stop- oder Limit Order) oder es wird direkt Market gekauft (wenn bei einer Stop Order mit Gap das CRV noch passt)
      Viel Spaß beim Ausprobieren :)