Eigenes TradingSystem braucht Hilfe.
Liste der Anhänge anzeigen (Anzahl: 1)
Hi Leute,
ich habe ein eigenes Trading System entwickelt und wollte es eigentlich mal backtesten. Programmieren kann ich ein bisschen, doch ich bin mit MQL4 doch ein wenig überfordert. Im Anhang findet Ihr, was ich bereits geschrieben habe. Zum System: Das System ist im 15 min Chart oder höher. Man darf bis 3% Risiko ins Geld haben (Soll aber Variabel sein). Gehandelt werden ausschließlich die großen Indizies, bei Forex funktioniert es nicht so gut. Gehandelt werden außerdem nur CFD´s. Es basiert auf 3 Indikatoren: Supertrend (10|3); BollingerBänder (20|2); RSI(14); Ein (Ver)Kaufsignal wird gegeben, wenn: 1. Der Supertrend gerade die Richtung gewechselt hat (von long zu short oder andersrum). Gehandelt wird der Eröffnungskurs der 2. Candle unter der neuen Farbe. 2. Gehandelt wird nur, wenn die 1. Candle unter der neuen Farbe auch über/unter dem BollingerBand schließt. 3. Gehandelt wird nur, wenn sich der RSI n i c h t im Extrembereich befindet. Der Stop wird kurz über(bei short)/unter (bei long) der Supertrendlinie geführt (Variabel, da jeder Markt eine andere Punktezählung hat.) Der Trade wird geschlossen, wenn: Der Stop ausgeführt wird, oder Der RSI aus dem Extremum wieder h e r a u s kommt. Es wäre echt cool, wenn sich jemand der Sache annehmen könnte und mir weiterhelfen könnte. LG PS.: Auch wenn das erst mein erstes Handelssystem ist und vermutlich schlecht: Das Copyright liegt bei mir. Wer das System verändert/mir hilft/es herunterläd, darf es getrost verwenden und damit handeln. Aber n i c h t weiterverkaufen oder in irgendeinerweise mit der Idee kommerziellen Gewinn erzielen, außer mit meiner Einwilligung. |
Da gibt es kein Copyright auf das System oder meinst Du das Programm?
traderdoc |
Nein, es gibt aber ein Copyright auf die Idee. :) Es geht mir einfach darum, dass niemand einfach so meine Idee verkaufen soll. Ich bin EDM-Produzent und hab das schon mal miterleben müssen. Deshalb schreibe ich das immer.
|
Auf die Idee wird es kein Copyright geben!
Und was ist ein EDM-Produzent? traderdoc |
Morgen :)
Auf das eigene Gedankengut gibt es ein Copyright. Das nennt man in der Musik/Kunst/Wirtschaft Schutz des Urheberrechts bzw. geistiges Eigentum. Ich hatte damit leider in der Musik schon Bekanntschaft gemacht :mad: Und EDM? :D https://www.youtube.com/watch?v=cUhPA5qIxDQ (Bisschen was für die Ohren, viel Spaß damit. Bin gerade von dort zurückgekommen, habe meinen ersten Beitrag von Tomorrowland aus geschrieben :cool: ) LG |
Liste der Anhänge anzeigen (Anzahl: 1)
Aber um mal auf das eigentliche Thema zurück zu kommen:
Ich habe den EA nocheinmal modifiziert. Aber leider plaziert er nichteinmal eine Order :( und ich weiß auch überhaupt nicht, was ich falsch gemacht habe. Wäre cool, wenn mal jemand drüberschauen würde. |
Zitat:
Aber egal. Läßt Du Dir allerdings ein Softwareprogramm schreiben zu dieser Handelsstrategie, dann kannst Du da ein Copyright drüberlegen. traderdoc |
Liste der Anhänge anzeigen (Anzahl: 1)
Ok aktuell versuche ich mich weiter und mache bescheidene Fortschritte.
Allerdings habe ich 2 Probleme: 1. Ich will meinen Stoploss an den SupertrendIndikator binden. Das will er aber im MT4 nicht. Stattdessen schmeisst er mir eine Fehlermeldung hinterher. Wie kann ich denn einen CustomIndikator zu einem Stop machen? 2. Ich habe ihn so programmieren wollen, dass er 1 Position eröffnet, wenn ein Signal gegeben wird. Wenn der Stop ausgeführt wird, dann soll er auf das nächste Signal warten. Allerdings eröffnet er sofort eine neue Position. Und da ich das mit dem Stop noch nicht hingekriegt habe, eröffnet er pro Signal etwa 200 Positionen hintereinander. Ich habe das Programm aufgeteilt und behandele gerade nur die longpositionen. Wäre cool, wenn Ihr mir weiterhelfen könntet. Quellcode im Anhang (138 Zeilen) |
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe noch ein wenig weitergeschrieben und mir ist noch etwas aufgefallen.
Der EA eröffnet die Positionen korrekt, schließt sie aber falsch: Er soll ja eine Position eröffnen, wenn unter anderem ein Bollinger Signal gegeben wird. Er schließt aber die Position sofort, sobald kein Bollingersignal mehr gegeben ist. Außerdem schließt und eröffnet er die Position immer mit einer neuen Bar. Wie kann ich das abstellen? (QC im Anhang) LG |
Ich komme nicht mehr weiter, es wäre jetzt wirklich toll, wenn mir jemand kurz helfen könnte:
Ich möchte den StopLoss an den SuperTrend Indikator binden. double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0); double sl = Bid - TrailingStopLoss*Point; ...... ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My order",16384,0,clrGreen); Das Problem: Er spuckt mir immer aus, dass er keine Order setzen kann, weil der Stop invalid wäre. Kann mir bitte jemand weiterhelfen? Wäre echt dankbar. LG |
double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0);
double sl = TrailingStopLoss; if (Bid > sl) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green); traderdoc |
Liste der Anhänge anzeigen (Anzahl: 1)
Hey,
danke für die Antwort. Ich habe den Code implimentiert, aber er will trotzdem nicht. Jetzt wirft er mir den Fehlercode 4051 hinterher, aber die Lotanzahl ist per extern double Lots festgelegt... |
double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0);
double sl = TrailingStopLoss; Den Teil unbedingt in die Funktion start() unter double Ticket; schreiben. Ich gehe mal davon aus, dass die Custom-Werte des Super-Indis Kurswerte sind!? Ansonsten mal auslesen über double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,0); Print (DoubleToStr(TrailingStopLoss, Digits); Ansonsten ticket und ticket2 mit int deklarieren! bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Open[0]-Point*sl,OrderTakeProfit(),0); sl liegt bereits als subtrahierbarer Wert vor. Das Point müßte schon mal gelöscht werden, nur dann würde der modifizierte sl sehr, sehr tief liegen!! Wozu aber OrderModify(), wenn der sl bereits bei OrderSend() angegeben wurde und das OrderTakeProfit() ergibt eh 0, weil nicht gesetzt. traderdoc |
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
suuuuper, hat mein erstes Problem gelöst! Kurz zu dem sl: Die Idee ist, einen TrailingStop auf Basis des SuperTrend-Indikators zu haben. Deshalb soll der StopLoss immer mit dem SuperTrend verändert werden. Mein Problem ist, dass er das nicht macht. Er lässt den StopLoss immer an der gleichen Stelle, nämlich an dem Ort, wo der ST stand, als die Position eröffnet wurde. Er zieht aber den Stopp nicht nach. Eigentlich müsste er ja jede Periode überprüfen, wie der ST steht und dann nachziehen. Das mit dem Überprüfen steht drin, er greift nämlich auf die Variable zu. Code:
bool ordermodify = OrderModify(OrderTicket(),OrderOpenPrice(),Open[0]-sl,0,0); Code:
if (Bid > sl) ticket=OrderSend(Symbol(),OP_BUY,Lots,Ask,10,sl,0, "My Order",16384,0,Green); LG (PS: Meinst du wirklich, dass der SL zu tief sei?) |
Wenn eine! Order offen ist wird ab hier
if(ord > 0) return (0); //Abbrechen, es ist schon eine Position eröffnet. das Programm verlassen. Damit kann der SL auch nicht verändert werden. Außerdem greift der EA nicht nur jede Periode auf den Super-Indi zu, sondern mit jedem Tick. Soll er nur am Anfang jeder Kerze zugreifen, dann sollte das so aussehen: OldBar vorher global int datetime deklarieren. if (Time[0] != OldBar) { ... OldBar = Time[0]; } Die Punkte sind nun der Platz, wo einmalig genau zu Beginn einer neuen Kerze eine Aktion stattfindet. Also bei Dir die Indikatorabfrage! Aber Achtung die letzte Ziffer muß eine 1 sein, weil auf den Wert der letzten geschlossenen! Kerze Bezug genommen wird. double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,1); traderdoc |
Liste der Anhänge anzeigen (Anzahl: 2)
Ich meine, nicht das ich mich beklagen würde:
http://www.expert-advisor.com/forum/...1&d=1438330138 Ich habe den Kontostandt verzehnfacht, aber gewollt waren so viele Positionen nicht :D Vielen Dank für den Tipp mit if return(0), dass habe ich völlig übersehen. Den Teil habe ich jetzt verübergehend entfernt, nur jetzt habe ich wieder das Problem mit den vielen Orders, siehe Bild. Ich hatte auch mal daran gedacht, in die Einstiegsbedingung das zu schreiben: Code:
if(rsio() == true && BBo() == true && sto() == true && OrdersTotal == 0) Was mich auch wundert, ist, dass er zum Teil Positionen eröffnet, wo er keine Positionen eröffnen darf, also von den Startbedingungen her, die ich global definiert habe. Das mit dem RSI habe ich noch nicht korrekt definiert (Weil ich noch herausfinden muss, wie ich das mit der Kreuzung der 70er Linie schreibe.), aber das BollingerBand ist eigentlich korrekt definiert, und wird trotzdem oft einfach ignoriert. LG TrololoTromberino Edit: Nachziehen mag er den SL immernoch nicht. Das kann vielleicht aber auch daran liegen: Code:
2015.07.30 15:48:54.125 2015.06.26 16:30 Neuer Versuch Long only EURUSD,M15: Fehler beim Positionsliquidieren. |
equity sieht aber schon etwas brutal aus
|
Hallo trololotromberino,
in der OrderModify Funktion benötigst du einen absoluten Kurs. Diesen hast du schon in der Variable sl, daher entferne mal das Open[0] - und schon sollte es funktionieren. Ich habe das nicht getestet, nur durch hinsehen, könnte also falsch sein. Tip: Verwende doch den Debugger oder nutze Print-Statements,um dir die momentenen Werte anzuzeigen. gruß yytrader |
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
danke, der Tipp hat immerhin dafür gesorgt, dass ich überhaupt wieder Orders reinkriege. Das Problem: Er schießt mir immernoch 10000 Orders pro Signal an die Börse und den Stopp zieht er leider nicht nach. Will er einfach nicht. Ich bin den Stopp Zeile für Zeile durchgegangen, finde aber einfach nicht heraus, wo der Fehler liegt. LG |
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Ich lasse eine einzige Order erstellen (eigentlich): Code:
if(rsio() == true && BBo() == true && sto() == true && OrdersTotal()== 0) //Wenn Alle Indikatoren true sind und die offenen Positionen in diesem Markt 0 sind, eröffne eine long - Position. Und danach lasse ich einen Stoploss, den ich iniziiert habe, einfach nachziehen: Code:
if (Time[0] != OldBar) { |
Hi,
mir ist noch ein Gedanke gekommen, warum der Stop sich möglicherweise nicht Nachziehen möchte: Kann es sein, dass sich der Indikator nicht aktualisiert? Also der EA läuft ja den Code einmal komplett durch. Und der Wert des Indikators wird dabei einfach nicht aktualisiert, nicht neu berechnet? Denn ich greife ja nur darauf zu: Code:
double TrailingStopLoss = iCustom(NULL,0,"SuperTrend",10,3.0,0,1); LG |
Liste der Anhänge anzeigen (Anzahl: 1)
Also das ganze hat sich jetzt ein wenig geändert.
Ich habe es irgendwie hinbekommen, dass sich der Trailingstop automatisch nachzieht. Allerdings habe ich immer noch ein sehr großes Problem, was die Ordereröffnung angeht. Der EA eröffnet meistens eine Order, schließt diese sofort, eröffnet noch eine Order, schließt diese auch sofort. Die dritte Order lässt er dann offen und zieht sie mit dem Trailingstop nach. Auch die Stops bei den ersten beiden Orders sind sehr merkwürdig: Sie liegen nicht am ST-Indikator, sondern relativ knapp unter dem Eröffnungskurs. Deshalb werden sie meistens sehr schnell ausgeführt. Wäre echt cool, wenn mir da jemand weiterhelfen könnte, weil ich mit den vielen Orders leider nicht weiterkomme. LG TrololoTromberino |
Hi, hast du dein Problem mit den vielen Orders bereits gelöst?
LG |
Hallo,
der Code ist schlichtweg merkwürdig. Das da überhaupt was geht... So gehts jedenfalls nicht, meiner Meinung nach. Wie soll das weitergehen? Was Du anfangs geschrieben hast, mit Copyright hier und oder vielleicht da, war wohl erschreckend genug, um die Profis auf Abstand zu bringen. Wenn Dein letzter Versuch das Resultat ist, dann fang lieber nochmal neu an. Normalerweise wird durchaus mehr geholfen, wenn der Schuster bei seinen Leisten bleibt. Bin grade dabei das Teil weitestgehend zu fixen. Kommt dann korrigiert zurück. Aber ob die Strategie was bringt, wird man dann sehen. LG jOE |
Korbinian.mq4
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
hier im Anhang, den von mir in korbinian.mq4 umbenannten und umgearbeiteten EA. Man kann im Backtest einige Parameter austesten, für RSI Bollinger, Supertrend1 und Abstandunter der ST1-Linie. Ihr müßt euch den SuperTrend in SuperTrend1 umbenennen, da der bei mir so heißt, oder macht die Umbenennung im Code, indem ihr dort die 1 wieder wegnehmt. Es ist im günstigsten Fall ein Geldwechsler. Thats all. LG jOE |
Liste der Anhänge anzeigen (Anzahl: 1)
Ersteinmal vielen, vielen Dank an Euch.
Ja, wahrscheinlich war es ein Fehler mit dem Copyright-Gerede. Zu den Orders: Ja ich habe es lösen können: Der Trick war einfach zu sagen, dass nur eine Order eröffnet werden durfte, wenn Close erst unter dem ST-Indikator war und danach über. An diesem Punkt ein kleines Shoutout an traderdoc, der mich auf diese Idee gebracht hat :) Aktuell funktioniert es eigentlich auch alles, bis auf den RSI-Close. Dazu hatte ich einen neuen Thread aufgemacht: RSI-Cross Das funktioniert leider immer noch nicht. Auch wird manchmal (ganz selten) der Stop falsch (zu knapp) gesetzt (Keine Ahnung warum) und dann wird dieser sofort ausgelöst. Danach wird eine neue Order aufgesetzt (weil immer noch in der ersten Periode). Wenn das alles funktioniert, werde ich das ganze dann noch um die short-Seite erweitern. Ich habe aktuell nur ein Leistungsschwaches Macbook zum Coden und muss für den Backtest auf den großen Rechner warten. Aber aktuell (noch ohne RSI-Ausstieg) funktioniert es auf dem m1 lustigerweise ganz in Ordnung. Vielen Dank auch an Joe. Deine Änderung hat mir das mit den zusätzlichen Abstand zum Stoploss gelöst. Was bei deinem System noch nicht ganz korrekt ist, ist die Ordereröffnung: Bei dir wird immer eine Order eröffnet, wenn alle Regeln übereinstimmen. Das war bei mir am Anfang auch so (An dieser Stelle nochmals Danke an traderdoc :D). Aber meine Idee war es, dass nur die Order eröffnet wird, wenn der ST nachhaltig gekreuzt wird. Das habe ich aber, wie gesagt, gelöst. Im Anhang ist der EA für Long only, wer sich das ganze ansehen möchte. Ja er ist vermutlich sehr umständlich gecoded, ist aber auch mein erster EA ;) LG |
Hallo,
Dazulernen ist das was am interessantesten ist, oder? Die Tradeeröffnung habe ich lediglich gefixt ;-) LG jOE |
Korbinian v1.01
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
habe noch etwas optimiert. Wäre evtl. sogar brauchbar? Gebt Bescheid wie das Teil bei Euch funzt. LG jOE |
Hey,
auch wenn ich durch deinen Code nicht so ganz durchblicke, vielen vielen Dank für deine Hilfe ;) Eigentlich sollte die Strategie auch ganz brauchbar sein. Ich habe sie per Hand mal ausgewertet und kam auf eine Win/Loss-Ratio von 2/1 - 3/1, also definitiv hoch. Ich habe deinen QC mal ausgeführt und durchgeschaut. Mir ist aufgefallen, dass noch nicht alles stimmt. Manchmal funktioniert der Trailingstop nicht, die Order wird dann einfach bei rotem ST-I weiter gehalten. Außerdem wird die Order nicht glattgestellt, wenn der RSI von oben nach unten die 70er Linie kreuzt. Zumindest manchmal nicht. Auch wird manchmal mittendrin eine Order eröffnet. Wichtig ist aber, dass das Einstiegssignal nur gilt, wenn der ST nachhaltig gekreuzt wird. Also nur an der Candle nach der Kreuzug. Du kannst dich ja an meinem QC orientieren. Bis auf den RSI-Kram funktioniert fast alles. (Manchmal wird leider auch der SL falsch gesetzt). Leider ist mein QC auch nicht so schnell, also irgendwie kann man Deinen schneller ausführen, also der Backtest läuft schneller ab. LG Den QC habe ich noch nicht geändert, du kannst ihn im Post oben herunterladen. (War im Urlaub). |
Liste der Anhänge anzeigen (Anzahl: 1)
Hola Amigos,
ich habe endlich meinen neuen Computer, deshalb kann ich auch endlich weiterarbeiten. Ich habe den Expert-Advisor jetzt auch auch Short umgeschrieben. Er erstellt jetzt für alle Signale eine Order. Leider habe ich ein Problem. Nicht nur, dass er beim Erstellen einer Shortorder den Stop einfach weglässt, bei manchen RSI-Bedingungen ignoriert er diese einfach. Wäre super, wenn mir jemand weiterhelfen würde. Tut mir leid, wenn der Code ein wenig anfängerhaft geschrieben ist, er ist ziemlich langsam beim testen. MFG TrololoTromberino |
Zitat:
Allerdings sind die Regeln für mich nicht ganz ersichtlich, weil ich das Gefühl habe, dass manchmal einfach so Orders eröffnet werden. Ich wollte deinen Code weiterverwenden, weil meiner einfach unglaublich langsam ist und deiner superschnell, aber ich steig da irgendwie nicht durch :D Wenn Du noch an dem EA weiterarbeiten möchtest, schreibe ich Dir nochmal auf, wo ich Fehler in der Ausführung sehe. Ansonsten probiere ich mich weiter an meinem Codeungetüm :D LG |
Zitat:
Aber lass Dir die Ergebnisse einmal ausprinten. Buffer 1 und Buffer 2. Wenn einer davon eine Zahl über 2 Milliarden hat, dann werden Deine if > < Anweisungen unbrauchbar. |
Liste der Anhänge anzeigen (Anzahl: 1)
Also die Werte sind normal und ich habe jetzt auch mal an @JoeDormann ´s Code weitergeschrieben, bzw. die Parameter verändert.
Jetzt will der Code jedoch garkeine Trades mehr machen. Er spuckt mir ständig aus: Code:
2015.09.21 13:52:31.084 TestGenerator: unmatched data error (volume limit 245 at 2015.09.18 09:45 exceeded) Vielleicht kann ja mal jemand den Code bei sich ausprobieren und mir sagen, ob er funktioniert. Falls ja, werde ich ihn um die shortseite erweitern. LG |
Während ich das Problem mit dem TestGenerator gelöst habe, ist ein neues Problem aufgetreten:
Code:
2015.09.24 18:58:43.394 DE30,M1: 211195 tick events (69545 bars, 2492112 bar states) processed in 0:00:22.390 (total time 0:00:22.609) Nach stundenlanger Suche habe ich herausgefunden, dass Error 130 am Broker liegen kann. Dieser hat mir aber gesagt, dass es vermutlich an ´meinem EA liegt, der in Pips geschrieben sein könnte. Ist er aber nicht. Keine einzige Angabe ist in Pips geschrieben. Habt Ihr eine Ahnung, wie ich diese Errors lösen kann? LG |
TP oder SL zu nah am aktuellen Kurs?
|
Zitat:
Code:
2015.09.27 19:21:00.362 DE30,M1: 130750 tick events (71136 bars, 2558716 bar states) processed in 0:00:07.812 (total time 0:00:08.047) Bis auf dieses Open-Price ist alles eigentlich normal, oder? LG Danke für deine Hilfe :) |
So und ich schreibe nochmal :)
Ich habe jetzt an meinem EA immer wieder kleine Änderungen gemacht. Nur jetzt komme ich leider immer noch an folgendem Problem nicht vorbei: Code:
2015.10.29 09:22:38.836 2014.04.21 09:00 Korbinian feat. Dormann Complete DE30,M15: OrderSend -1 long successfully #-1 Der SL wird berechnet durch: Code:
int slshort = iCustom(NULL,0,"SuperTrend",st1,st2,0,1) + abst*Point; Ich habe jetzt mal per print die einzelnen stops ausgegeben, nachdem ich sie per int bearbeitet hatte (An dieser Stelle nochmals vielen Dank an traderdoc). st1 = 10, double st2 = 3.0; auch hier sollte erstmal nichts falsch sein. Rausgekommen ist das hier: Code:
2015.10.29 09:22:38.836 2014.04.21 09:00 Korbinian feat. Dormann Complete DE30,M15: OrderSend -1 long successfully #-1 Hoffentlich könnt Ihr mir bei diesem Problem helfen, denn der EA ist eigentlich fast fertig und ich möchte Ihn endlich gescheit backtesten können :) LG und vielen Dank für eure Hilfe Trololotromberino |
Alle Zeitangaben in WEZ +2. Es ist jetzt 04: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