Jump to content
Tom Next - Daytrading Community

EA Daily-Range


Recommended Posts

Hallo zusammen,

 

wie in dem Thread zuvor soll hier die Idee der Daily-Range aus einem Traders-Magazin von Philipp Kahler als Indikator und EA umgesetz werden. Die Range bestimmt die Schwankungsbreite des Vortages. Diese wird dann vom aktuellen Hoch des laufenden Tages abgezogen und zum Tief hinzuaddiert. So werden Tage mit größerer Volatilität erkannt, die man Intraday in die Ausbruchsrichtung traden kann. Pro Tag wird nur ein Trade eingegangen, wenn die UpperRange oder LowerRange durchbrochen wird. Ist der Schlusskurs von gestern größer als die Range und als die Eröffnung, wird heute eingestiegen, wenn es einen Tick über oder unter dem Band gibt.

 

Der Ausstieg findet entweder am Schlusskurs, hier 21:45 statt, oder bei Erreichung der Eröffnung, da dies einen strategischen Wechsel von Short nach Long oder umgekehrt nach sich zieht. Vorerst reicht dies, um die Ergebnisse zu testen.

 

In TradeSignal hatten sich bessere Werte ergeben, wenn die Uhrzeit auf 10-12 und 14-21 Uhr begrenzt wird, Fehltrades werden so vermieden. Ich rede hier als Underlying vom FDAX, bei anderen Werte kann sich das ändern. Da ich den FDAX als Symbol bei TradeSignal sehr gut zum Vergleich nehmen kann und hier die Open + Close-Werte transparenter sind, würde ich gerne erst die Strategie hierauf zum Laufen bringen, danach kann man sich um EURUSD oder andere Währungspaare kümmern.

 

Leider wird, wenn ich den nun funktionierenden (so glaube ich) Indikator DailyRange nehme, immer nur ein Trade generiert. Laufzeit ist ab dem 01.01.2009, getradet wird erst ab dem 10.01.09, da über Weihnachten nichts los ist. Wo ist hier der Fehler? Ich verwende doch nur den Indikator. Leider werden in der Print-Ausgabe auch ander Range-Werte ausgespuckt, als der Indikator für die Tage zugrunde legt ... merkwürdig.

 

Sollten die Fehler behoben sein, können wir uns gerne um Themen wie Money-Management, Effizientester Ausstieg und bestes Underlying kümmern.

 

Hier ist der Code:

 

DT_IND_DailyRange.mq4

DT_EA_DailyRange.mq4

 

Seht es mir bitte nach, wenn einige Debug-Ausgaben vorhanden sind, ich bin ja noch die Sprache am lernen. Wobei eher, wie bei vielen Tradingprogrammen, der Ablauf bzw. die Abarbeitung der Bars das größere Problem darstellt.

 

Viel Spaß damit und einen guten Wochenstart

DarthTrader

Link to comment
Share on other sites

  • Replies 54
  • Created
  • Last Reply

Top Posters In This Topic

Top Posters In This Topic

Posted Images

Als erstes:

Find ich super das du den EA reinstellst! Das hilft sicher auch den anderen MT-Neulingen! :pfue:

Leider wird, wenn ich den nun funktionierenden (so glaube ich) Indikator DailyRange nehme, immer nur ein Trade generiert. Laufzeit ist ab dem 01.01.2009, getradet wird erst ab dem 10.01.09, da über Weihnachten nichts los ist. Wo ist hier der Fehler? Ich verwende doch nur den Indikator. Leider werden in der Print-Ausgabe auch ander Range-Werte ausgespuckt, als der Indikator für die Tage zugrunde legt ... merkwürdig.

 

Inwiefern andere Rangewerte ausgespuckt? Du führst das ganze bei jedem Tick aus, wenn du jetzt also einen Bar hast, bei dem gerade ein neues lokales Low entsteht, wird ab dem Moment, wo der kurs unter das aktuelle Low fällt, bei jedem Tick deine UpperRange ausgespuckt, und hier natürlich immer eine andere, weil ja das aktuelle Low nach unten wandert (und damit dazwischen auch anders ist, als am Ende von dem Bar (was dann im Chart angezeigt wird).

 

Warum nur eine Order ausgeführt wird: Das eröffnen von mehr als einer pro Tag verhindert "schonGetradet", aber woher weiß die Variable wann ein neuer Tag startet und sie wieder false sein sollte? ;)

 

Bei der Margin Berechnung blick ich noch nit ganz durch ;) Zahlst du beim FDAX immer nur 1000 Euro Margin pro Lot? Wär mir neu...

 

Zum System: Soweit ich mich erinnere war der Ausstieg bei Open bzw. anderem Ende der Range, je nachdem was näher ist oder?

Und wurde nicht "nur ein Trade in eine Richtung pro Tag"? Also wenn er zuerst nach oben läuft, umdreht ins SL und dann nach unten abmarschiert, kriegt er eine zweite Chance? I mein man kann natürlich das System auch einfach modifizieren, je nachdem was erfolgreicher ist ;)

 

Ansonsten nur noch ein paar Anmerkungen:

Noch zum Indi: du löscht beim deinit alle Objekte, obwohl du gar keine erzeugst ;) Also auch Trendlinien oder was auch immer der User selber einzeichnet.

 

Zum EA:

- Bid und Ask müssen nit Normalisiert werden, die sind direkt vom Server und damit auf "Kursniveau" ;)

- Aufgrund deiner Defaults bei den Parametern: Du kannst auch intern die Ticksize des Symbols abfragen und damit die Entfernungen vom User in Ticks angeben lassen, ist meist intuitiver als in Points.

- Ich würd empfehlen, dass du eine Magicnumber verwendest, um die Trades vom EA zu kennzeichnen. Derzeit würdest du am Abend alle offenen Orders in dem Account in dem Symbol closen, auch wenn sie händisch oder von einem anderen EA geöffnet wurden.

Link to comment
Share on other sites

Inwiefern andere Rangewerte ausgespuckt? Du führst das ganze bei jedem Tick aus, wenn du jetzt also einen Bar hast, bei dem gerade ein neues lokales Low entsteht, wird ab dem Moment, wo der kurs unter das aktuelle Low fällt, bei jedem Tick deine UpperRange ausgespuckt, und hier natürlich immer eine andere, weil ja das aktuelle Low nach unten wandert (und damit dazwischen auch anders ist, als am Ende von dem Bar (was dann im Chart angezeigt wird).

 

Klar, so ist der Algo. Aber in der Print-Ausgabe jeden Tages sollten zumindest für heute die aktuellen Werte drinn stehen. Es sind aber andere, als wenn ich mir im Chart die Rangewerte anschaue. Das irritiert mich etwas. Zumal der EA ja noch nicht fehlerfrei läuft.

 

Warum nur eine Order ausgeführt wird: Das eröffnen von mehr als einer pro Tag verhindert "schonGetradet", aber woher weiß die Variable wann ein neuer Tag startet und sie wieder false sein sollte? ;)

 

Oh, hatte vorher nicht auf meinen Indi zugegriffen, sondern die Berechnung nochmal im EA ausgeführt, da wusste sie es natürlich. Jetzt muss ich nochmal den Tageswechsel hinzuprogrammieren :-)

 

Bei der Margin Berechnung blick ich noch nit ganz durch ;) Zahlst du beim FDAX immer nur 1000 Euro Margin pro Lot? Wär mir neu...

Zum System: Soweit ich mich erinnere war der Ausstieg bei Open bzw. anderem Ende der Range, je nachdem was näher ist oder?

Und wurde nicht "nur ein Trade in eine Richtung pro Tag"? Also wenn er zuerst nach oben läuft, umdreht ins SL und dann nach unten abmarschiert, kriegt er eine zweite Chance? I mein man kann natürlich das System auch einfach modifizieren, je nachdem was erfolgreicher ist ;)

 

Zur Margin: Das habe ich aus einem anderen EA kopiert, ist nur ein Anhaltspunkt für mich, wie so etwas geht, denn für einen späteren Live-Handel finde ich das schon wichtig.

 

Ja, das andere Ende der Range habe ich noch nicht beachtet. Brachte aber in TS keine wirklich besseren Ergebnisse. Das muss aber nochmal getestet werden.

 

Nur ein Trade, ja, dass kann man variabel halten, einer hat sich eben beim FDAX in TS besser bewährt, aber da bin ich offen.

 

Noch zum Indi: du löscht beim deinit alle Objekte, obwohl du gar keine erzeugst ;) Also auch Trendlinien oder was auch immer der User selber einzeichnet.

 

Yo, dass ist auch intern für mich, um zu sehen wie es geht, aber Danke für den Hinweis. Es ist geplant Textobjekte zur Ausgabe der Rangeweite einzubauen.

 

Zum EA:

- Bid und Ask müssen nit Normalisiert werden, die sind direkt vom Server und damit auf "Kursniveau" ;)

- Aufgrund deiner Defaults bei den Parametern: Du kannst auch intern die Ticksize des Symbols abfragen und damit die Entfernungen vom User in Ticks angeben lassen, ist meist intuitiver als in Points.

- Ich würd empfehlen, dass du eine Magicnumber verwendest, um die Trades vom EA zu kennzeichnen. Derzeit würdest du am Abend alle offenen Orders in dem Account in dem Symbol closen, auch wenn sie händisch oder von einem anderen EA geöffnet wurden.

 

Ticks, Points, ok ich schaue mal nach was Du genau meinst.

Gibt es eine Methode, zur Generierung von MagicNumber und dann wieder der Abfrage bei der Order?

Ich gebe ja eine mit, muss sie nur wieder auslesen. Wenn ich diese dann noch per Random() erzeugen könnte, hätte man es ja...

 

... kann erst wieder Morgen am EA weiterarbeiten ... danke aber schon mal für die Tipps ...

Link to comment
Share on other sites

Ticks, Points, ok ich schaue mal nach was Du genau meinst.

 

ticksize: minimale Kursbewegung: beim FDAX 0.5, beim EURUSD 0.0001

Pointsize: kommastellen in denen der kurs läuft, hat nix direkt mit dem kurs zu tun und ist mitunter auch sehr unintuitiv (wenn man Handel mit dem FDAX gewohnt ist, und dann 2000 für einen 20 punkte SL eintragen muss ....)

 

 

Gibt es eine Methode, zur Generierung von MagicNumber und dann wieder der Abfrage bei der Order?

Ich gebe ja eine mit, muss sie nur wieder auslesen. Wenn ich diese dann noch per Random() erzeugen könnte, hätte man es ja...

 

Naja, Random erzeugen wär nit so top, du musst die Order ja auch wieder erkennen.

Mach dir einfach eine Konstante

#define MAGIC_NUMBER 12345

Die gibst bei der OrderSend dazu, und mit OrderMagicNumber() kannst sie wieder abrufen.

Damit kannst du dann mehrere EAs am gleichen Symbol im gleichen Account laufen lassen, ohne das sie sich beeinflussen (solang du in jedem EA eine andere Zahl bei der Konstanten nimmst ;)

Link to comment
Share on other sites

So, anbei die neue Version, mit den von Mythos angesprochenen Änderungen.

Jetzt läuft er schon mal, aber die Ergebnisse sind im Gegensatz zu TS ganz anders ...

Hm... hatte extra nur ab 01.01.09 backgetestet, da ich irgendwie keinen Endlos-Kontrakt vom FDAX habe.

Aber auch hier wird nur Verlust generiert. Muss noch ein Programmfehler sein.

Alle Trades, werden direkt wieder geschlosesen ...

 

Da ich jetzt weg muss, hier schon mal die Version 1.1 des Codes.

 

DT_EA_DailyRange.mq4

Link to comment
Share on other sites

Klasse, vielen Dank für diesen Code. Kleiner Vorschlag: Versions-Nummer bitte im Namen angeben. (Kann zwar jeder selber machen, aber so haben wir es alle einheitlich). :pfue:

 

Wie gesagt, erstes Ziel ist es dieselben Ergebnisse wie bei TS zu erzielen, dann weiß ich,

dass ich auf dem richtigen Weg bin. Da ich wahrscheinlich bald mit Subversion als Konfigurationsverwaltungssystem

arbeite, werden dort die VErsionsnummern verwaltet. Im Namen macht das aus meiner Erfahrung selten Sinn...

 

Noch eine Frage. Was muss ein EA alles haben, was benötigt dieser EA noch alles um Fehler beim produktiven Einsatz

abzufangen? Will ja lernen :-) Ich habe mal eine Endlosschleife gesehen, die immer wieder bei fehelrhafter Orderabwicklung

durchlaufen wird, ist dass sinnvoll?

 

Beste Grüße

Darth

Link to comment
Share on other sites

Wie gesagt, erstes Ziel ist es dieselben Ergebnisse wie bei TS zu erzielen, dann weiß ich,

dass ich auf dem richtigen Weg bin. Da ich wahrscheinlich bald mit Subversion als Konfigurationsverwaltungssystem

arbeite, werden dort die VErsionsnummern verwaltet. Im Namen macht das aus meiner Erfahrung selten Sinn...

SVN ist natürlich klasse, da du hier Versionen reinstellst, wärs trotzdem schön einen Header anzulegen, in dem du die Versionsnummer einträgst, dann ist es auch leichter abzugleichen ob alle über den gleichen reden ;)

 

 

Noch eine Frage. Was muss ein EA alles haben, was benötigt dieser EA noch alles um Fehler beim produktiven Einsatz

abzufangen? Will ja lernen :-) Ich habe mal eine Endlosschleife gesehen, die immer wieder bei fehelrhafter Orderabwicklung

durchlaufen wird, ist dass sinnvoll?

Es ist schwer eine vollständige Liste aufzuzählen. Errorhandling beim senden von Orders etc macht auf alle Fälle Sinn. Wenn du willst kannst du da die Funktionen von der TradeBox verwenden (hier im Downloadbereich), dort wird die Preis"normalisierung" und das Errorhandling bereits intern erledigt, was den Code ein bissl übersichtlicher macht.

 

Ich werd das ganze auch mal testen (leider nur auf EURUSD), mal sehen wo die derzeitigen Fehler liegen.

 

Noch ein allgemeiner Hinweis zum schließen von Orders:

Wenn du in einer Schleife alle Orders aus der History durchgehst und teilweise welche schließt, musst du sehr aufpassen mit dem index. Wenn du die Order i schließt, rücken dadurch alle anderen auf, und das was vorher i+1 war, ist jetzt i. Gehst du also einfach weiter, überspringst du dabei manche order.

Link to comment
Share on other sites

Hab mich ein bissl mit dem EA gespielt.

1. Entry bis Hour == 21 zu machen ist suboptimal, da er zwischen 2145 und 2200 weiterhin einsteigen versucht, aber sofort wieder gekickt wird.

2. Du hast bei der Zeitabfrage Klammern vergessen. Wenn du && und || i einer Bedingung hast, immer _alle_ Klammern setzen. Denn bei (a && b || c && d) weiß ich nicht wie der Compiler es liest, vermutlich von links nach rechts, was aber nicht in deinem sinn sein dürfte.

Hier wie ich denke das du es gemeint hast:

if ((((TimeHour(Time[0]) >= StartZeit1) && (TimeHour(Time[0]) <= EndZeit1)) ||
    ((TimeHour(Time[0]) >= StartZeit2) && (TimeHour(Time[0]) <= EndZeit2))) &&
     
    // Weihnachten rausnehmen, erst ab 10.01. wieder handeln
    (((TimeMonth(Time[0]) < 12) &&  (TimeMonth(Time[0]) > 1)) ||
     ((TimeMonth(Time[0]) == 12) && (TimeDay(Time[0]) < 20)) ||
     ((TimeMonth(Time[0]) == 1)  && (TimeDay(Time[0]) >  9))))

 

Sonst tut der EA glaub ich genau das was er soll. Es ist im Moment nur nicht positiv ;)

Beim vergleichen mit TradeSignal ergebnissen musst du aufpassen, in der TradeSignal werden nur ganze Bars betrachtet. Außerdem ist die Zeitberechnung eine andere. In MT ist Time[0] die Zeit des ersten Ticks des Bars, in Tradesignal die vom letzten Tick. Außerdem dürftest du andere Daten haben oder?

Link to comment
Share on other sites

Hab mich ein bissl mit dem EA gespielt.

1. Entry bis Hour == 21 zu machen ist suboptimal, da er zwischen 2145 und 2200 weiterhin einsteigen versucht, aber sofort wieder gekickt wird.

2. Du hast bei der Zeitabfrage Klammern vergessen. Wenn du && und || i einer Bedingung hast, immer _alle_ Klammern setzen. Denn bei (a && b || c && d) weiß ich nicht wie der Compiler es liest, vermutlich von links nach rechts, was aber nicht in deinem sinn sein dürfte.

Hier wie ich denke das du es gemeint hast:

if ((((TimeHour(Time[0]) >= StartZeit1) && (TimeHour(Time[0]) <= EndZeit1)) ||
    ((TimeHour(Time[0]) >= StartZeit2) && (TimeHour(Time[0]) <= EndZeit2))) &&
     
    // Weihnachten rausnehmen, erst ab 10.01. wieder handeln
    (((TimeMonth(Time[0]) < 12) &&  (TimeMonth(Time[0]) > 1)) ||
     ((TimeMonth(Time[0]) == 12) && (TimeDay(Time[0]) < 20)) ||
     ((TimeMonth(Time[0]) == 1)  && (TimeDay(Time[0]) >  9))))

 

Ich möchte einfach nur die Tradezeit eingrenzen, da es nicht immer Sinn macht zu handeln, wenn

gar nichts am Markt los ist. Werde mir das heute Abend anschauen. Hatte erste nur Hour() dort

stehen, aber dass ist ja wieder nur die letzte Serverzeit.

 

Sonst tut der EA glaub ich genau das was er soll. Es ist im Moment nur nicht positiv ;)

Beim vergleichen mit TradeSignal ergebnissen musst du aufpassen, in der TradeSignal werden nur ganze Bars betrachtet. Außerdem ist die Zeitberechnung eine andere. In MT ist Time[0] die Zeit des ersten Ticks des Bars, in Tradesignal die vom letzten Tick. Außerdem dürftest du andere Daten haben oder?

 

Ich denke, so unterschiedlich sollten die Ergebnisse nicht sein. Zum Vergleich sollten die Anzahl der TRades annähernd gleich sein und wenn ich als Einstieg die Ranges angebe, mit Limit Orders, sollte es zumindest einigermaßen passen. Die Daten auf 15min Ebene sind nur marginal anders. Es sind eben noch einige Fehler im Code ... die es auszumerzen gilt, danke für Tipps.

 

Was meinst Du mit Time[0] ist der erste Tick des Bars in der Zeiteinheit? Wenn ich M15 habe und dort schon 10 min. gelaufen sind, ist denn Time[0] immer noch der erste Tick? ich dachte, es ist immer der letzte Tick? Wie sollte ich sonst an den letzten, oder vorletzten aufgetretenen Tick gelangen?

 

SVN ist natürlich klasse, da du hier Versionen reinstellst, wärs trotzdem schön einen Header anzulegen, in dem du die Versionsnummer einträgst, dann ist es auch leichter abzugleichen ob alle über den gleichen reden ;)

 

Habe ich bereits erledigt, mal sehen, ob ich Author, Version und Date -Tags von SVN verwaltet bekomme :-)

 

Wenn du in einer Schleife alle Orders aus der History durchgehst und teilweise welche schließt, musst du sehr aufpassen mit dem index. Wenn du die Order i schließt, rücken dadurch alle anderen auf, und das was vorher i+1 war, ist jetzt i. Gehst du also einfach weiter, überspringst du dabei manche order.

 

Ok, dann muss ich bei schließen einer Order i wieder um eins dekrementieren, dann sollte es gehen. Etwas tricky, aber klingt logisch. Allerdings hätte die Funktion bzw. der Wert auch erst nach einem Programmzyklus angepasst werden können :-)

 

Danke schonmal für die Auskünft

Darth

Edited by DarthTrader
Link to comment
Share on other sites

Ich möchte einfach nur die Tradezeit eingrenzen, da es nicht immer Sinn macht zu handeln, wenn

gar nichts am Markt los ist. Werde mir das heute Abend anschauen. Hatte erste nur Hour() dort

stehen, aber dass ist ja wieder nur die letzte Serverzeit.

Die letzte Serverzeit ist ja genau die Zeit, zu der start() aufgerufen wurde.

 

 

Was meinst Du mit Time[0] ist der erste Tick des Bars in der Zeiteinheit? Wenn ich M15 habe und dort schon 10 min. gelaufen sind, ist denn Time[0] immer noch der erste Tick? ich dachte, es ist immer der letzte Tick? Wie sollte ich sonst an den letzten, oder vorletzten aufgetretenen Tick gelangen?

 

Sieh dir einfach mal im MetaTrader den chart an, bzw. die Zeit im Datenfenster. Time[0] ist die Zeit des Bars, nicht des letzten Ticks. Auf die Zeit des letzten Ticks (also der, bei dem start() aufgerufen wurde) kommst du mit TimeCurrent() bzw. direkt über Hour().

Link to comment
Share on other sites

Die letzte Serverzeit ist ja genau die Zeit, zu der start() aufgerufen wurde.

 

Hm ... klar, ich war wieder bei den Indikatoren, da bekomme ich ja alle Chartdaten

sofort und es wird nicht wie im Test nach und nach dier Ticks abgearbeitet. Also wäre es bei EAs

egal welche Funktion ich verwende, bei Indis muss ich aufpassen ... Arrrghhhh ...

Link to comment
Share on other sites

Hm ... klar, ich war wieder bei den Indikatoren, da bekomme ich ja alle Chartdaten

sofort und es wird nicht wie im Test nach und nach dier Ticks abgearbeitet. Also wäre es bei EAs

egal welche Funktion ich verwende, bei Indis muss ich aufpassen ... Arrrghhhh ...

 

jup, bei indis musst du immer selber wissen für welchen Bar du gerade die Werte berechnest und dementsprechend die werte raussuchen, bei eas arbeitest du immer im "jetzt".

Noch ein Spezialfall: skripte. Sind eigentlich wie EAs aber die start() wird nur einmal aufgerufen, zwingst du ein Skript jetzt zu warten bis etwas bestimmtes passiert, kann die Serverzeit schon lang nicht mehr aktuell sein, und du musst wieder selber schaun wie spät es ist ;)

Link to comment
Share on other sites

Ok, Version 1.2 ist aktuell. Verwende nun die TradeBox (sehr schöne Funktionen)

Korrektur, möchte sie verwenden, aber wegen init() Funktion und Inputs noch nicht möglich.

Siehe anderen Thread ...

 

Aber die korrekte Serverzeit mit Hour() geht nun ... endlich ...

 

Weiterhin ist der OrderTotal() Bug behoben.

Man sieht deutlich, das der EA nun wie bei TS funktioniert, die Orders

sind im großen und ganzen identisch, nur die Ausführung manchmal ne andere.

Ein PF von 1.5 ist schon Ok für den Anfang.

 

Jetzt ist Optimierung angesagt. Welche Ausstieg würdet Ihr empfehlen?

Können auch Forex-Märkte gehandelt werden, mit anderen TRadezeiten und

dann vielleicht auch Rangezeiten?

 

Input ist gerne gesehen....

 

Nochmal herzlichen Dank an Mythos, ohne ihn wäre der EA noch nicht fertig,

da die Programmierung in MT doch etwas gewöhnungsbedürftig ist.

 

DT_EA_DailyRange.mq4

Edited by DarthTrader
Link to comment
Share on other sites

Halla DT,

:pfue: endlich mal // "Super-gute Kommentare", die kann ich als +53 nun endlich besser verstehen. Danke.

 

Was ist ein PF? (PF von 1.5).

 

Tippfehler letzte Zeile? wäre // 10 [entspricht 10 Punkte im DAX] nicht richtig? unser Team-EA soll ja 100 % stimmen. der erbsenzähler...

frage.jpg

Link to comment
Share on other sites

Halla DT,

:pfue: endlich mal // "Super-gute Kommentare", die kann ich als +53 nun endlich besser verstehen. Danke.

 

Danke. Wenn man in eine Sprache reinkommen will, ist dies für mich sehr wichtig.

 

Was ist ein PF? (PF von 1.5).

 

PF = ProfitFactor := Win / Loss, Alleine ist er natürlich nicht so aussagekräftig, aber hieran sehe ich schon

mal, ob ich Gewinne oder verliere. Ein PF über 2 ist schon sehr gut, pber 1.5 kann man damit arbeiten.

Gibt es eigentlich Indis oder EAs, die mir weitere Statistiken bzgl. meines Systems anzeigen, bspw. Sharpe-Ratio

oder den Fröhlich-Faktor, ... ?

 

Tippfehler letzte Zeile? wäre // 10 [entspricht 10 Punkte im DAX] nicht richtig? unser Team-EA soll ja 100 % stimmen. der erbsenzähler...

 

Tippfehler akzeptiert ... wird heute Abend geändert ...

Link to comment
Share on other sites

Ich sehe des öfteren im Log die Fehlermeldung:

 

2009.03.04 19:47:06 2009.01.22 16:20 DT_EA_DailyRange EuBundMr09,M15: unknown ticket 3 for OrderClose function

 

Was kann das sein. In der Ergbnissliste wird die Order trotzdem geschlossen, im Chart habe ich allerdings

keine ClosedOrder dazu, zumindest nur manchmal.

 

Liegt es daran, dass ich den OrderTotals Zähler immer um eins erniedrige, wenn ne Order geschlossen

wurde? Da in dem OrderTotal -Array nach Schließung einer Order, diese um einen Platz nach vorner rücken?

Link to comment
Share on other sites

Ich sehe des öfteren im Log die Fehlermeldung:

 

2009.03.04 19:47:06 2009.01.22 16:20 DT_EA_DailyRange EuBundMr09,M15: unknown ticket 3 for OrderClose function

 

Was kann das sein. In der Ergbnissliste wird die Order trotzdem geschlossen, im Chart habe ich allerdings

keine ClosedOrder dazu, zumindest nur manchmal.

 

Liegt es daran, dass ich den OrderTotals Zähler immer um eins erniedrige, wenn ne Order geschlossen

wurde? Da in dem OrderTotal -Array nach Schließung einer Order, diese um einen Platz nach vorner rücken?

 

gute Frage. Am besten ein Print vor jede OrderClose mit der Ausgabe des Tickets etc. dann weißt was sache ist ;)

Link to comment
Share on other sites

gute Frage. Am besten ein Print vor jede OrderClose mit der Ausgabe des Tickets etc. dann weißt was sache ist ;)

 

Ok, habe den Fehler nicht gefunden, aber mit der TradeBox geht es nun. Leider tritt der Fehler

nun beim OrderModify auf .... 2009.03.04 21:56:53 2009.01.28 21:36 TradeBox Ger30Mr09,M15: OrderModify error 130

 

Werde weiter forschen ....

 

 

.... klar, kein gültiger Stop, der war zu nah am Markt nehme ich, obwohl 10 Punkte beim Dax ...

... Hm Stoplevel gibt mir 100 aus, sind damit 100 Ticks gemeint = 50 Punkte oder wirklich

100 Punkte ... beides ist für nen Trailing Stop recht viel ....

Edited by DarthTrader
Link to comment
Share on other sites

Ok, habe den Fehler nicht gefunden, aber mit der TradeBox geht es nun. Leider tritt der Fehler

nun beim OrderModify auf .... 2009.03.04 21:56:53 2009.01.28 21:36 TradeBox Ger30Mr09,M15: OrderModify error 130

 

Die TradeBox liefert bei OrderModify einen Error... das ist dann ein Bug von der TradeBox... muss ich mir mal anschauen.

 

 

.... klar, kein gültiger Stop, der war zu nah am Markt nehme ich, obwohl 10 Punkte beim Dax ...

... Hm Stoplevel gibt mir 100 aus, sind damit 100 Ticks gemeint = 50 Punkte oder wirklich

100 Punkte ... beides ist für nen Trailing Stop recht viel ....

Diese Werte sind in Points. Beim DAX dürftest du digits= 2 haben, das bedeutet ein Point = 0.01. stoplevel 100 also 1 Punkt, bzw 2 Ticks.

Error 130 kann auch bedeuten, dass die Werte für die Stops nicht passen (was ich glaube das der Fehler ist), sprich ich in der tradeBox wo einen Hund eingebaut hab ;)

 

werds mir demnächst mal anschauen

Link to comment
Share on other sites

Habe jetzt erstmal den Trailing-Stop rausgenommen und folgende Stopps eingebaut:

 

LONG-EXITs:

- Schnitt der LowerRange (nach Definition)

- Schnitt der UpperRange (wenn Trade nicht in die gewünschte Richtung läuft)

 

SHORT-EXITs analog.

 

Beim FDAX für März habe ich einen PF von über 2, sieht also sehr gut aus. Auch andere Werte

sehen ganz gut aus. Für den Forex Markt musste man evtl. noch die Tradingzeiten anpassen

oder die Berechnungszeit für die Range. Habe da noch keine richtige Idee. Haupthandelszeit ist ja

8-18Uhr für EURUSD, wenn ich es richtig gelesen habe.

 

Ansonsten kann man konfigurieren, ob man nur einen Trade pro Tag machen möchte oder Wiedereinstige erlaubt sind.

Es gibt also genug zum Testen ... Feel Free ...

 

DT_EA_DailyRange.mq4

 

Noch eine Info. Die Datei DT_Include.mqh beherbergt einfach nur die Standard-Includes zur TradeBox.

Leider darf ich sie nicht hochladen. Das müsste noch angepasst werden.

Link to comment
Share on other sites

- Schnitt der UpperRange (wenn Trade nicht in die gewünschte Richtung läuft)

 

Den x-timeExit find ich ne klasse idee! Wenn der Kurs nur rumtümpelt, wird er wieder geclosed. :pfue:

 

noch was zur TBModifyOrder :

TBModifyOrder (OrderTicket(), OrderOpenPrice(), TrailingStop, OrderTakeProfit(), 0);

Da TrailingStop bei dir 10 ist, versuchst du hier den Stop der Order auf 10 zu setzen, nicht auf Kurs-10 ;)

(zumindest glaub ich das die TradeBox das tut ;)

 

Meine Empfehlung:

ticksize= MarketInfo(Symbol(),MODE_TICKSIZE);
TBModifyOrder (OrderTicket(), OrderOpenPrice(), Bid - TrailingStop*ticksize, OrderTakeProfit(), 0);

 

Damit hättest du den Trailingstop in ticks angegeben, was meist einfacher zum Denken ist.

 

Weitere Tests und Ideen kommen wie gesagt morgen, im Texteditor mql code durchschauen erinnert zwar an die Basics, ist aber irgendwie nit so lustig...

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...