|
Programmierung MQL4 Hier gehts rund ums Programmieren in MQL4. |
|
Themen-Optionen | Thema durchsuchen | Ansicht |
|
|||
An alle EA-Coder
Hallo liebe MQL-Freunde,
ich habe schon mehrfach verzweifelt in anderen Foren nach Hilfe gesucht. Jetzt bin ich glücklicherweise zu eurem Forum gelangt (schade das es nicht schon früher kam). Mir konnte bisher leider nicht geholfen werden oder man wollte es nicht, aber im Grunde ist mein Bedürfnis recht einfach zu realisieren. Ich benötige einen EA der mir recht einfaches ausführt. Ich hoffe ich werde euch jetzt dieses System verständlich erklären: 1. Es soll der aktuelle Kurs ermittelt werden -> z. B. 1,38053 2. Anhand des aktuellen Kurses soll eine Ober- und Untergrenze ermittelt werden 3. Die Obergrenze liegt bei dem aktuellen Kurs bei 1,38250 und die Untergrenze liegt bei 1,38000 (siehe Bild) 4. Immer wenn der aktuelle Kurs die Ober- oder Untergrenze erreicht soll dementsprechend eine Pending-Buy-Order oder eine Pending-Sell-Order ausgeführt werden. Beispiel: Aktueller Kurs steht bei 1,38053 Distanz für die Orders liegt bei 25 Pips Das heißt die Obergrenze für den Kurs 1,38053 liegt bei 1,38250 und die Untergrenze bei 1,38000. Für die Obergrenze wird eine Pending-Buy-Order in Auftrag gegeben mit Takeprofit bei 1,38500 und Stoploss bei 1,38000. Für die Untergrenze wird eine Pending-Sell-Order in Auftrag gegeben mit Takeprofit bei 1,37750 und Stoploss bei 1,38250. Fakt ist, es soll immer wenn der Kurs eine Grenzlinie von unten nach oben durchläuft eine Pending-Buy-Order auslösen und gleichzeitig eine neue Pending-Buy-Order im Abstand von 25 Pips (auf der nächsten Grenzlinie) setzen. Dementsprechend für die Pending-Sell-Order genau dasselbe. Auf dem Bild sind die möglichen Kreuzungen mit einem roten Punkt markiert. Wer mein schlechterklärtes System versteht, der wird jetzt wahrscheinlich sagen dass sich die Orders gegeneinander aufheben, da mal eine Pending-Buy-Order gewinnt (Sell-Order verliert dann) und auch mal eine Pending-Sell-Order gewinnt (Buy-Order verliert in diesem Fall). Das hieße am Ende des Tradens +- 0 Pips. Sinnvoll ist diese Strategie meiner Meinung nach, wenn der Chart (Kurs) mehrere Grenzlinien aufeinmal durchläuft, ohne das die gegenüberliegende Pending-Order ausgeführt wird. Jetzt natürlich mein größtes Bedenken an diesem System: Ist es überhaupt möglich, genau bei einer Grenzlinie den Kurs 1,38000 zu kaufen oder verkaufen, oder entscheidet der Broker welchen Näherungskurs wir bekommen? Wenn ja, dann glaube ich ist dieses System für den Müll. Zum Vereinfachen will ich euch nochmal rechnerisch zeigen, wie ich traden möchte (dazu nutze ich das Bild als Vorlage): 1. Wir nehmen an der aktuelle Kurs liegt zwischen 1,37250 und 1,37500 (noch vor dem ersten roten Punkt) 2. Es werden zwei Pending-Order in Auftrag gegeben -> Sell bei 1,37250 (TP-> 1,37000, SL-> 1,37500) und Buy bei 1,37500 (TP-> 1,37750, SL-> 1,37250) 3. Kurs durchbricht Wert von 1,37500 nach oben -> Buy - Order wird ausgelöst -> wird wenig später mit Gewinn geschlossen bei 1,37750 4. Während die Buy-Order ausgelöst wird, werden gleichzeitig zwei neue Pending-Order gesetzt -> Buy bei 1,37750 (TP-> 1,38000, SL-> 1,37500) und Sell jetzt bei 1,37750 (TP-> 1,37500, SL-> 1,38000) 5. Wichtig ist jetzt das die alte Pending-Sell-Order gelöscht wird. Im Schnellverfahren würde das ganze dann so weitergehen: 1. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn - > +25 Pips 2. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 3. roter Punkt -> Sell - Order ausgelöst -> endet mit Verlust -> - 25 Pips 4. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 5. roter Punkt -> Sell - Order ausgelöst -> endet mit Verlust -> - 25 Pips 6. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 7. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 8. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 9. roter Punkt -> Sell - Order ausgelöst -> endet mit Verlust -> - 25 Pips 10. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 11. roter Punkt -> Buy - Order ausgelöst -> endet mit Verlust -> - 25 Pips 12. roter Punkt -> Sell - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 13. roter Punkt -> Sell - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 14. roter Punkt -> Buy - Order ausgelöst -> endet mit Verlust -> - 25 Pips 15. roter Punkt -> Sell - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 16. roter Punkt -> Sell - Order ausgelöst -> endet mit Verlust -> + 25 Pips 17. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 18. roter Punkt -> Sell - Order ausgelöst -> endet mit Verlust -> - 25 Pips 19. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 20. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips 21. roter Punkt -> Sell - Order ausgelöst -> endet mit Verlust -> - 25 Pips 22. roter Punkt -> Buy - Order ausgelöst -> endet mit Gewinn -> + 25 Pips .....usw..... (ich hoffe es ist alles soweit richtig) Wenn ich mich jetzt nicht vertan habe, dann müsste ich definitiv 200 Pips im Plus sein und das ohne jegliches Risiko. Wenn ich das falsch sehe dann bitte ich um Berichtigung. Sollte ein derartiges System existieren (sehr wahrscheinlich), dann wäre es super von euch mir damit weiter zu helfen. So jetzt hoffe ich, ich habe euch nicht zuviel gequält mit dieser extravaganten Erklärtechnik. Sagt mir bitte ehrlich was ihr davon haltet und gebt mir wenn möglich Verbesserungsvorschläge. Wie gesagt wünschenswert wäre einen EA dafür zu basteln, aber ich weiß nicht wo ich anfangen soll. Vielen Dank für euer Verständnis und eure Hilfe! Wünsche viel Spaß beim tüfteln. Beste Grüße Privex_MT |
|
|||
Hallo roni,
danke für deine schnelle Antwort. Also, zum Verständnis versuch ichs nochmal bisschen zusammenzufassen. Die Ober- und Untergrenze ist von mir persönlich festgelegt worden. Man kann sie als Unterstützungen und Widerstände ansehen. Habe damit im manuellen Trading ganz passable Ergebnisse bekommen. Den Linienchart habe ich einfach nur zur vereinfachten Darstellung benutzt. Was die Trend- und Seitwärtsphasen betrifft, da habe ich mir natürlich auch schon Gedanken gemacht. Wenn sich der Trade um einen Kurs bewegt zum Beispiel EURUSD 1,38000, dann soll sagen wir mal der Kurs kommt anfangs von unterhalb der 1,38 nach oben (BuyStop-Order auslösen). Sollte dann der Kurs drehen wieder nach unten, soll wieder an der Grenzlinie 1,38 eine SellStop-Order gestartet werden. Wenn der Kurs weiter nach unten geht bis er zum Beispiel den TP der Sell-Order bei 1,37750 erreicht (der gleichzeitig der SL für die BuyOrder ist), dann habe ich zwar +- 0 Gewinn, aber geht der Kurs weiter zum nächsten TP der neuen Sell-Order bei 1,37500 dann habe ich hier meine ersten 25 Pips erreicht. Sollte der Kurs aber vorher nochmals an der 1,38000-Marke nach oben drehen, dann soll keine weitere Buy-Order aufgeben werden, da an dieser Grenzlinie bereits eine Buy-Order aktiv ist. Denke so kann man das erklären. Laut meinem Pic sollten dann also die Orders bei dem roten Punkt 4,5 und 6 nicht ausgeführt werden. Damit verhindert man das zuviele Orders beim Rangetrading geöffnet werden. Sinn und Zweck dieses Systems ist, den Sprung durch mehrere Grenzlinien zu nutzen ohne das die gegenüberliegende Pending-Order ausgeführt wird. Das würde dann bei schönen Breakouts wunderbar funktionieren. Ansonsten wird sich das Ergebnis mehr oder weniger bei mal + 25 Pips und dann mal wieder - 25 Pips einpändeln, da sich die Orders teilweise gegeneinander aufheben. Gut was ich natürlich noch nicht so bedacht habe, ist der Spread. Da kann man bestimmt mal sehen was sich machen lässt. So hoffe es wurde etwas verständlicher. Gruß Privex_MT |
|
|||
"Ich hoffe ich werde euch jetzt dieses System verständlich erklären:
1. Es soll der aktuelle Kurs ermittelt werden -> z. B. 1,38053 2. Anhand des aktuellen Kurses soll eine Ober- und Untergrenze ermittelt werden 3. Die Obergrenze liegt bei dem aktuellen Kurs bei 1,38250 und die Untergrenze liegt bei 1,38000 (siehe Bild)" ich steig eigentlich schon bei punkt1 deiner erklärung wieder aus, denn der aktuelle kurs ändert sich doch mit jedem neuen tick. ich denke ich weiß trotzdem wie du das gemeint hast. ich hänge dir mal nen indikator an der dir das ganze mal in den chart einzeichnet, sieh ihn dir mal an. wenn ich richtig liege sollte es nicht so schwer sein aus dem indikator einen ea zu machen (meine programmierkenntnisse reichen dafür allerdings nicht, der indi ist auch nicht von mir) bei renkoboxsize gibst du den gewünschten abstand der linien in pips an, die anderen inputs kann ich leider auch nicht erklären, vielleicht kann das mal jemand tun, der den code versteht. |
|
|||
Der Indikator ist nicht ganz das was ich suche. Trotzdem danke für eure Mühe - vielleicht erklär ich es ein bisschen zu umständlich. Eigentlich will ich doch nur einen ganz einfachen EA basteln. Ich versuchs nochmal was einfacher (bezugnehmend auf mein Bild im ersten Post): Punkt 1 -> Buy @ 1,38000 (TP -> 1,38250, SL -> 1,37750 (25 Pips)) Punkt 2 -> Buy @ 1,38250 (TP -> 1,38500, SL -> 1,38000 (25 Pips)) Punkt 3 -> Sell @ 1,38250 (TP -> 1,38000, SL -> 1,38500 (25 Pips)) Punkt 4 -> Keine Buy-Order (Order 2 und 3 sind noch aktiv) Punkt 5 -> Keine Sell-Order (Order 2 und 3 sind noch aktiv) Punkt 6 -> Keine Buy-Order (Order 2 und 3 sind noch aktiv) Punkt 7 -> Buy @ 1,38500 (TP -> 1,38750, SL -> 1,38250 (25 Pips)) Punkt 8 -> Buy @ 1,38750 (TP -> 1,39000, SL -> 1,38500 (25 Pips)) Punkt 9 -> Sell @ 1,38750 (TP -> 1,38500, SL -> 1,39000 (25 Pips)) Punkt 10 -> Keine Buy-Order (Order 8 und 9 sind noch aktiv) Punkt 11 -> Buy @ 1,39000 (TP -> 1,39250, SL -> 1,38750 (25 Pips)) usw... Ich weiß ihr könnt das! Helfe auch gern bei euren Problemen wenn ich kann. Danke Gruß Privex_MT |
|
|||
So ich hab jetzt mal angefangen mit dem EA...komme aber mittendrin nicht wirklich weiter.
Wenn jemand von euch mal drüberschauen könnte?! Denke es werden noch einige Fehler im Quellcode vorhanden sein, aber müsste zu beheben sein. Schaut einfach mal. Danke. Gruß Privex_MT |
|
|||
Oh man was machst du da :-)
Jede If anweisung passt nicht so richtig: if (limit_up = 0) schätze mal du willst hier vergleichen, somit.. --> if (limit_up == 0) // Calculate LIMIT_DOWN if (limit_down = 0) hier bitte auch --> if (limit_down == 0) // und so gehts weiter #property copyright "Copyright © 2011, Privex MT" #property link "privex_mt@gmx.de" // hier bitte auch ändern nicht so extern string a = “Privex MT v1.1” sondern lieber so extern string a = "Privex MT v1.1"; // nächste extern string b = wenn hier nichts stehen soll dann bitte so extern string b = ""; // was meinst du hiermit, den aktuellen kurs double current_bprice = MarketInfo(Symbol(), MODE_BID); // Verkaufspreis ermitteln double current_aprice = MarketInfo(Symbol(), MODE_ASK); // Kaufpreis ermitteln das hätte auch nur mit ask und bit gehen können.. usw. kann dir ketzt leider nicht das ganze prgramm durchgehen. vielleicht kommst du aber schon ein wenig weiter... |
Lesezeichen |
|
|