Alle Inhalte von Mythos
-
Open Source EA AIS1
Hey Leute, klingt nach nem spannenden EA, hab ihn mir aber gerade erst runtergeladen und hab leider gerade nicht die Zeit ihn genauer durchzugehen, dennoch ist mir eine Idee zum Thema "was er tut" etc. in den Sinn gekommen: Was haltet ihr davon, wenn wir den EA gemeinsam öffentlich "analysieren"? Da er OpenSource ist, gibts sicher keine Copyrightverletzungen oder? Und ich denke es lesen hier viele (inzwischen ja fast schon tausende ;) User mit, die sich über sowas freuen. Und für Jörg wär es ein schöner Anlass seine Programmierkenntnisse zu vertiefen ;) Wer ist dabei?
-
tom-next.com ist 4-stellig - Welcome N# 1.000 - Henrik
Willkommen am board und auf gute "Diskussionen"/Austausch!
-
Party für Pi
Du hast gefragt... Und soviel höhere Mathematik war da gar nit dabei ;)
-
Party für Pi
ist es auch ;) du hast die mehrdeutigkeit erkannt! aber das deutsche Wortspiel H ~ Haar ist irgendwie nit so toll .... *Krümel einen Fingerabdruck hinmalt*
-
Party für Pi
PHI... der goldene Schnitt, Grenzwert von F_n/F_{n+1} (F_n sind die Fibonacci) Von manchen als die irrationalste Zahl bezeichnet und das obwohl sie algebraisch is (PI is transzendent) Mit den schönen Eigenschaften: 1+PHI = 1/PHI Damit ergibt sich PHI aus der Gleichung PHI^2+PHI - 1 = 0 Gleichzeitig hat PHI die schöne Reihenbruchdarstellung 1/(1+1/(1+1/(1+...))) (deswegen oft als irrationalste Zahl bezeichnet) Und über die schönen Eigenschaften des Goldenen Schnitts fang ich gar nicht erst an Numerisch (also unschön) : PHI ~ 0.618 http://farm3.static.flickr.com/2036/2124187021_37897b1cb9.jpg?v=0
-
Party für Pi
PHI is an age cooler than PI
-
MQL Library mit Standardfunktionen
Hmm, bei mir nicht... Frag mich nicht warum, aber der Reg Eintrag von MT hat keinen Language Key... Korrektur: Jetzt schon... der Eintrag ist erst da, wenn er einmal vom User gesetzt wird. Bleibt man bei der Standardeinstellung, so gibt es noch keinen Eintrag in der Registry...
-
EA Daily-Range
Wie ich schon sagte: das ist die alte TradeBox, bitte "lTradeBox" verwenden, die neuen Versionen werden auch alle so heißen
-
EA Daily-Range
natürlich. Ehrlich gesagt: weil ich die Close Function von der send Function übernommen hab und nur angepasst habe, und dort macht es Sinn. Es ist ein bissl Konsistenzmäßig, vor allem weil ich bei einem Fehler direkt den (-1)*FehlerCode retouniere. Aber gut das dus gesagt hast, das war im wesentlichen eh ein Bug. Du meinst den Daily-ATR oder? Zum Trailing: du musst ihn ja nit auskommentieren, setz einfach den Parameter auf 0, dann ist das testen leichter.
-
EA Daily-Range
Ich selber handle überhaupt nix, zumindest im Moment. Ich denke zu Beginn muss man sich noch keinen Server mieten. Ein "kostengünstiger" Test mit dem eigenen PC und einem Notstrom-system zeigt schnell ob der EA in Real funktioniert. Entscheided man sich dann, das dauerhaft laufen zu lassen, macht es natürlich sinn über einen Server nachzudenken.
-
EA Daily-Range
Ich habs vorhin kurz auf EURUSD getestet, ohne Trailingstop wars leicht positiv mit ein PF von 1.15 oder so. Man müsste sich aber die Zeiten anschauen. Du kannst dir aus der TradeSignal die alten Kontrakte rausziehen, daraus einen Continuous bauen und diesen bei MT einspielen (getarnt als GER30 ;), du kannst natürlich auch der Anpassungsmethode der TradeSignal vertrauen und dir direkt einen Contiuous raussaugen... meine Erfahrungen damit sind aber eher ungut. Du musst nur eines aufpassen: GER30 = DAX != FDAX ! bringt also nur was, wenn du testen willst ob du die gleichen Ergebnisse wie auf der TradeSignal hast, bzw. einfach allgemein den EA testen willst. Man könnte auch ein Symbol, das man derzeit nicht verwendet "hijacken" und einfach die andere History einspielen. Jetzt wirds spannend. Bei Verwendung von Stops, Trailingstops etc, würd ich die an die Vola (ATR) koppeln. MM/RM: Da bei Eröffnung des Trades, schon klar ist, wo der "Stop" liegt (ca), sollte die Lotsize so berechnet werden, das jeder Trade "gleich viel" Risiko hat. Also entweder jeder Trade x% vom Kapital oder fixen Geldbetrag. Dann würd ich den EA noch "ausputzen" ;) Nichts gegen deine Fortschritte, aber zB das mit der Margin etc. müsste noch raus/angepasst werden. Und dann ist die Frage für wen, und welche Anwendung. Gibt es in der finalen Version globale/statische Variablen die für den Ablauf wichtig sind, sollten diese in ein File gesichert werden, sodass bei stromausfall oder neustarten nach dem neustart des MT der EA exakt an der gleichen Stelle weitermacht, wie zuvor etc. Hardwaretechnische Details sind dann natürlich auch noch zu überlegen.
-
EA Daily-Range
Genau, 10 Punkte= 20 Ticks. Hier gilt es die Anwenderspec zu kennen. Wenn du als Anwender sagst "ich denk gern in Punkten" dann machs in Punkten, wird nur bei Forex schwierig, weil der Parameter dann ein Double sein müsste etc. Sicherheitshalber: Die aktuellste TradeBox heißt "lTradeBox.mq4" (Namensconvention) und die Funktionen beginnen alle mit "tb" nicht wie bisher mit "TB" ... tbCloseOrder (OrderTicket(), OrderLots(), 3, 5); exitErfolgreich = true; Hier würde ich den return value von tbCloseOrder nutzen. (es kann sein das die TradeBox aufgibt, und die ORder nicht geschlossen wurde): if(tbCloseOrder (OrderTicket(), OrderLots(), 3, 5) < 0) exitErfolgreich = true; Habs jetzt mal am EURUSD getestet, Trailingstop funktioniert bei mir so: if ((TrailingStop>0) && ( OrderStopLoss() == 0 || (OrderStopLoss()-Ask)>TrailingStop*ticksize)) { tbModifyOrder (OrderTicket(), OrderOpenPrice(), OrderOpenPrice() - TrailingStop*ticksize, OrderTakeProfit(), 0); } Ob ein Trailingstop bei diesem System Sinn macht, ist natürlich eine andere Frage ;) aber beim MM/RM können wir uns noch austoben.
-
EA Daily-Range
Den x-timeExit find ich ne klasse idee! Wenn der Kurs nur rumtümpelt, wird er wieder geclosed. 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...
-
Tradingchat: A trend is NOT your friend
Was ist PRT? Ich weiß die Frage klingt jetzt "dumm" und "naiv" aber: Wie erkennst du "Widerstände"? Ebenen, an denen viele Highs/Lows der lokalen History liegen? müssen diese Lows nahe beieinander liegen? oder wird durch mehrere beieinander liegende Highs/Lows am Widerstand die Linie nur "wichtiger" als ein Widerstand, bei dem zwar immer wieder ein High/Low kommt aber eben nicht gehäuft? Ohne zu wissen wie ich das am besten implementiere, hätte ich gedacht, man nimmt sich die Highs, Lows, (und anderen für Widerstände wichtigen Werte) der letzten X-Bars (vielleicht des letzten Tages/Woche etc) und clustert (schön eingedeutscht oder?) deren y-Werte. Gewicht der Widerstände entsteht dann durch Anzahl der Punkte im cluster, Streuung im Cluster und vielleicht noch das angesprochene Häufungsargument. Wenn ich das richtig verstanden habe, sind Candlestick patterns dann nicht mehr so wichtig, sondern nur Close "über" Linie und nächstes High über aktuellem High. Zu den Trendlinien: wieder gleiche Frage. Gibt es nur 1 Trendlinie im Chart? bzw. Trendlinien nur in eine Richtung? Wodurch entscheided sich die Steigung der trendlinie? (Regressionsgerade der Lows/Highs/Mediane?) Ich weiß, das sind viele "dumme" Fragen, aber ich frag halt voll von der Entwicklerseite;) Wenn wir es schaffen das in einen EA zu gießen wärs natürlich genial, aber allein der Versuch zeigt glaub ich schon viele Punkte auf (vor allem warum ein Mensch noch längere Zeit der bessere Trader sein wird können als der Computer ;)
-
EA Daily-Range
Die TradeBox liefert bei OrderModify einen Error... das ist dann ein Bug von der TradeBox... muss ich mir mal anschauen. 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
-
MQL Library mit Standardfunktionen
Die aktuellste Version ist über "Download starten" erreichbar, das darunter ist die History von dem File... (soweit ich das bis jetzt verstanden habe)
-
MQL Library mit Standardfunktionen
OrderClose gibt es ja schon, müsste aber ehrlich gesagt nachsehen wie sehr ich das Errorhandling schon eingebaut hab ;)
-
EA Daily-Range
gute Frage. Am besten ein Print vor jede OrderClose mit der Ausgabe des Tickets etc. dann weißt was sache ist ;)
-
Hier bin ich...
Schön noch einen Coder begrüßen zu können! Willkommen im Board!
-
MQL Library mit Standardfunktionen
Leider nein. Eine library ist keine include datei. Einbinden der der TradeBox(exemplarisch): #import "lTradeBox.ex4" int tbSendOrder(string symbol,int cmd,double volume,double price,int slippage,double stoploss,double takeprofit, string comment,int magic, datetime expiration,int max_retries); void tbSetInformationLevel(int val); double tbGetVersionNumber(); #import Hier müssen alle Funktionen angegeben werden, die aus der lib verwendet werden. (Im Header der Tradebox stehen alle vorhandenen Funktionen) Wenn du sie als mqh einbindest, wird sie Teil vom Programmcode. Dann sind alle Funktionen, globale Variablen etc. teil des EAs (und da ich im Header der lib sage "#property library" denkt er auch noch, das dein EA jetzt eine lib ist ;). Eine library hat aber den Vorteil, das jedes Modul das sie lädt (also in deinem Fall nur der EA) eine eigene Kopie davon öffnet, die globalen Variablen in der lib sind dann also werte der "lokalen" lib. und jedesmal beim laden der lib wird die init() der lib aufgerufen. Vorteil ist auch: wenn wir einen Fehler in der TradeBox finden, oder sie erweitern, muss nicht jeder EA der sie verwendet neu kompiliert werden, sondern nur die lib, und diese wird dann einfach vom ea geladen. das sollte die Fragen wegen Parameter, init() etc beantworten. Die lib weiß ja nicht was du im EA inkludierst. Ich könnte natürlich auch in der lib die mqh includen, aber da steht auch nix anderes drin, und ich seh lieber im code, welche Funktionen ich importiere ;) Werds auf die TODO liste setzen ;) mfg mythos EDIT: beispielcode korrigiert
-
Tradingchat: A trend is NOT your friend
@siscop: weißt du immer noch nicht warum 90% Verluste machen? WEnn ich mir anschaue, wieviel implizites Wissen, Erkennen und Vorahnen allein in deinem Post steckt wunderts mich nicht ;) Zur Mustererkennung: ich mach dieses Semester einige Kurse zu dem Thema auf der Uni, wer weiß, vielleicht läßt sich ja was mit MT und dlls umsetzen ;) Also wenn wir annehmen wir könnten Muster erkennen (Widerstände, Candlestickpatterns etc), wäre es dann machbarer? Bzw. wo wären deiner Meinung nach die Probleme?
-
Tradingchat: A trend is NOT your friend
Wenn ich schon mal einen Post im Traders Talk lese, muss ich auch gleich meinen Senf dazugeben: Wenn die Strategie echt so idiotensicher und vor allem Treffsicher ist, wie du sagst: Meinst kann man das automatisieren? ;)
-
EA Daily-Range
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 ;)
-
EA Daily-Range
Die letzte Serverzeit ist ja genau die Zeit, zu der start() aufgerufen wurde. 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().
-
EA Daily-Range
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?